Nginx 全模块安装及匹配方式、反向代理和负载均衡配置

一、安装 OpenResty

OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
官网:https://openresty.org/cn/

[root@localhost ~]# wget https://openresty.org/package/centos/openresty.repo
[root@localhost ~]# sudo mv openresty.repo /etc/yum.repos.d/
[root@localhost ~]# sudo yum check-update
[root@localhost ~]# sudo yum install -y openresty

管理 OpenResty

[root@localhost ~]# systemctl start openresty.service
[root@localhost ~]# systemctl enable openresty.service

配置文件路径

[root@localhost nginx]# pwd
/usr/local/openresty/nginx

也可以像 nginx 一样管理

[root@localhost sbin]# /usr/local/openresty/nginx/sbin/nginx -s reload
[root@localhost sbin]# /usr/local/openresty/nginx/sbin/nginx -s stop
[root@localhost sbin]# /usr/local/openresty/nginx/sbin/nginx -t

二、匹配方式

2.1 通用匹配

...
   server {
        listen       80;
        server_name  localhost;
        default_type text/html; # 以html标签格式直接返回信息。
    
        # 通用匹配优先级最低。
        location / {
                echo "hello nginx";
        }
    }

测试结果

image-20211207215548161

2.2 完全匹配

完全匹配是优先级别最高的匹配,如果满足则直接匹配。

location = /a {
                echo "=/a";
        }

测试结果

image-20211207220723390

2.3 进行前缀匹配

# 第二高优先级匹配
        location ^~ /a {
            echo "^~ /a";
        }

测试结果

image-20211207220509009

2.4 正则表达式匹配

# 匹配优先级第三
        location ~ ^/\w {
            echo "~ ^/\w";
        }

测试结果

[root@localhost ~]# curl http://localhost/a
=/a
[root@localhost ~]# curl http://localhost/b
~ ^/\w

2.5 按照匹配程度

同优先级的,按照匹配程度较高的先匹配

location ^~ /a {
            echo "^~ /a";
        }
        location ^~ /a/b {
            echo "^~ /a/b";
        }

测试结果

[root@localhost ~]# curl http://localhost/a/b
^~ /a/b
[root@localhost ~]# curl http://localhost/a/c
^~ /a
[root@localhost ~]# curl http://localhost/a/b/c
^~ /a/b

匹配程度一样的,则写在前面的先匹配

location ~ ^/\w {
            echo "~ ^/\w";
        }
        location ~ ^/[a-z] {
            echo "~ ^/[a-z]";
        }
[root@localhost ~]# curl http://localhost/g
~ ^/\w

调换位置之后

location ~ ^/[a-z] {
            echo "~ ^/[a-z]";
        }
        location ~ ^/\w {
            echo "~ ^/\w";
        }

测试结果

[root@localhost ~]# curl http://localhost/g
~ ^/[a-z]

三、反向代理

3.1 常用代理

代理追加虚拟路径,如果是代理到根目录,需要加上“/”,否则找不到页面。

location /a/ {
            proxy_pass http://192.168.115.21:8081/;
        }

测试结果

image-20211207223247113

多个代理

location /a/ {
            proxy_pass http://192.168.115.21:8081/;
        }
        location /b/ {
            proxy_pass http://192.168.115.21:8080/;
        }

测试结果

image-20211207224013825

3.2 根据不同的域名代理

server
    {
        listen 80;
        server_name test.xxxxx.net;
        location / {
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://192.168.3.222;
        }
    }
    server
    {
        listen 80;
        server_name wiki.xxxxx.net;
        location / {
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://127.0.0.1:8181;
        }
    }

测试结果

image-20220106160606993

四、负载均衡

4.1 随机负载

upstream group1 {
        server 192.168.115.21:8080;
        server 192.168.115.21:8081;
    }
        location /a/ {
            proxy_pass http://group1/;
        }

4.2 配置权重

upstream group1 {
        server 192.168.115.21:8080 weight=1;
        server 192.168.115.21:8081 weight=1;
    }

        location /a/ {
            proxy_pass http://group1/;
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值