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

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM