nginx的proxy_pass后面是否带/的区别总结

分为以下几种情况:

1、代理的url地址中带有URI
2、代理的url地址不带有URI
然后针对上面的两种情况,我们分别再来仔细演示其中location带有/和不带/的区别

1、代理的url地址中带有URI
一、location匹配路径末尾没有 /

location /sta
{
      proxy_pass http://192.168.1.1/sta;
}

外面访问:http://外网IP/sta/sta1.html
相当于访问:http://192.168.1.1/sta/sta1.html

location /sta/                                       # 后面带有/
{
      proxy_pass http://192.168.1.1/sta;
}

外面访问:http://外网IP/sta/sta1.html
相当于访问:http://192.168.1.1/sta/sta1.html

所以说这两种设置效果都是一样的
二、location匹配路径末尾有 /
此时proxy_pass后面的路径需要分为以下四种情况讨论:

(1)proxy_pass后面的路径只有域名且最后没有 /
location /sta/
{
      proxy_pass http://192.168.1.1;
}

外面访问:http://外网IP/sta/sta1.html
相当于访问:http://192.168.1.1/sta/sta1.html

(2)proxy_pass后面的路径只有域名同时最后有 /
location /sta/
{
      proxy_pass http://192.168.1.1/;
}

外面访问:http://外网IP/sta/sta1.html
相当于访问:http://192.168.1.1/sta1.html

(3)proxy_pass后面的路径还有其他路径但是最后没有 /:
location /sta/
{
      proxy_pass http://192.168.1.1/abc;
}

外面访问:http://外网IP/sta/sta1.html
相当于访问:http://192.168.1.1/abcsta1.html

(4)proxy_pass后面的路径还有其他路径同时最后有 /:
location /sta/
{
      proxy_pass http://192.168.1.1/abc/;
}
外面访问:http://外网IP/sta/sta1.html
相当于访问:http://192.168.1.1/abc/sta1.html
2、代理的url地址不带有URI
location /test_app {

     proxy_pass host:8080/; #有斜杠,代理到:host:8080/a.html

}

location /test_app {

     proxy_pass host:8080;#无斜杠,代理到:host:8080/test_app/a.html

}



root  / alias 后面的 /

 

root 和 alias 都是指向目录,所以后面是否存在 / 没有影响:

server {
    listen      8082;
    server_name localhost;

    location ^~ /root/ {
        root    /data/www/root/;
        index   index.html index.htm;
    }

    location ^~ /alias/ {
        alias   /data/www/alias/;
        index   index.html index.htm;
    }
}

我们这里加不加红色的 / 都一样的结果。

 

 

location 后面的 /

 

在 location 中也存在是否添加 /  的情况:

server {
    listen      8082;
    server_name localhost;

    location ^~ /alias/ {
        echo "WITH: /";
    }

    location ^~ /alias {
        echo "WITHOUT: /";
    }
}

此时两种匹配就有了两个含义,前者只能匹配 /alis/123 这样的,而后者可以匹配 /alias123,也可 /alias/123 这样的。

但是当两者同时在一个 server 中由于匹配精确度越高优先级越高的原因,后者匹配不到 /alias/123

 

 

 
posted @ 2022-02-25 13:43  Oops!#  阅读(279)  评论(0编辑  收藏  举报