Nginx

反向代理

简单示例

修改nginx的default.conf文件,修改后如下

server{
        listen 80;                              #  监听80端口
        server_name localhost;                  #  请求的域名


        location /proxy {
                proxy_pass http://87.68.103.145:8001;
        }

}

 

最主要的就是proxy_pass这行代码,这时nginx作为一个代理服务器(请求到nginx,然后nginx再去找目标服务器)

大白话就是:访问localhost:80/proxy/api/index将被Nginx处理为http://87.68.103.145:8001/proxy/api/index

即达到端口号转化的效果

此处注意不要在末尾多加/

 

通过正则表达式匹配进行反向代理

location ~ /proxy/ {
                proxy_pass http://47.98.203.175:8001;
        }


        location ~ /proxy2/ {
                proxy_pass http://47.98.203.175:8080;
        }

主要区别就是多了~,一定要有路径末尾的/

即[~ /xxx/] 这种路径配置就是正则,nginx会根据你输入的路径中是否包含此内容来匹配要代理到哪一个服务器。

 

Rewrite重写

简单示例

        location /api {
            rewrite /api/(.*)  /$1 break;
            proxy_pass http://localhost:8080;
        }
  • /api/(.*) 是匹配模式,其中 (.*) 是一个正则表达式,表示匹配任意字符序列(除了换行符 \n)
  • /$1 是重写后的 URL 格式。$1 表示正则表达式中的第一个捕获组,也就是 (.*) 匹配到的内容
  • break 是 Nginx 的指令,表示停止执行当前的 rewrite 规则,并继续处理请求

举个例子,如果请求的 URL 是 /api/data,那么经过这个 rewrite 规则处理后,将被重写为 /data,然后交由后续的 Nginx 配置来处理

 

语法格式

rewrite regex replacement [flag];

flag有如下值:

  • last: 本条规则匹配完成后,继续向下匹配新的location URI 规则。(不常用)
  • break: 本条规则匹配完成即终止,不再匹配后面的任何规则(不常用)。
  • redirect: 返回302临时重定向,浏览器地址会显示跳转新的URL地址。
  • permanent: 返回301永久重定向。浏览器地址会显示跳转新的URL地址。

 

负载均衡

1、修改nginx.conf(在http块中添加如下代码)

    # 配置负载均衡 方案一:轮询 (一个接一个访问)
    upstream myserver{
        server 192.168.50.130:8080;
        server 192.168.50.131:8080;
    }

    # 配置负载均衡 方案二:weight (权重 数值越大,访问的频率越大) 
    # upstream myserver{
    #     server 192.168.50.130:8080 weight=10;
    #     server 192.168.50.131:8080 weight=5;
    # }

    # 配置负载均衡 方案三:ip_hash (哈希 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题) 
    # upstream myserver{
    #     ip_hash;
    #     server 192.168.50.130:8080;
    #     server 192.168.50.131:8080;
    # }

    # 配置负载均衡 方案四:fair (第三方 按后端服务器的响应时间来分配请求,响应时间短的优先分配) 
    # upstream myserver{
    #     fair;
    #     server 192.168.50.130:8080;
    #     server 192.168.50.131:8080;
    # }

 

2、修改default.conf文件

location / {
        proxy_pass http://myserver;
    }

 

posted @ 2023-01-16 16:35  先娶国王后取经  阅读(105)  评论(0编辑  收藏  举报