Nginx中proxy_pass末尾加斜杠的區別


  事實上,標題這種描不太准確,准確來說:

當proxy_pass有URI參數時,會將用戶訪問路徑中,location匹配到的部分,替換成proxy_pass的URI部分。

當proxy_pass沒有URI參數時,URI不變,直接使用用戶訪問路徑中的URI。

   那么什么是URI?

Nginx將URL請求分為域名+端口+URI,如下面的配置:

location /user {
    proxy_pass http://127.0.0.1:8081/;
}

域名:127.0.0.1

端口:8081

URI:/ (注意,斜杠也算)

 

來舉幾個例子就好理解了:

(1)用戶訪問路徑:http://192.168.0.1/user/getUser.do

location /user {
    proxy_pass http://127.0.0.1:8081;
}

實際訪問路徑:http://127.0.0.1:8081/user/getUser.do,URI不變。

 

(2)用戶訪問路徑:http://192.168.0.1/user/getUser.do

location /user/ {
    proxy_pass http://127.0.0.1:8081;
}

實際訪問路徑:http://127.0.0.1:8081/user/getUser.do,URI不變。

 

(3)用戶訪問路徑:http://192.168.0.1/user/getUser.do

location /user {
    proxy_pass http://127.0.0.1:8081/;
}

實際訪問路徑:http://127.0.0.1:8081//getUser.do,“/user”被“/”替換。

 

(4)用戶訪問路徑:http://192.168.0.1/user/getUser.do

location /user/ {
    proxy_pass http://127.0.0.1:8081/;
}

實際訪問路徑:http://127.0.0.1:8081/getUser.do,“/user/”被“/”替換。

 

(5)用戶訪問路徑:http://192.168.0.1/user/getUser.do

location /user {
    proxy_pass http://127.0.0.1:8081/data;
}

實際訪問路徑:http://127.0.0.1:8081/data/getUser.do,“/user”被“/data”替換。

 

(6)用戶訪問路徑:http://192.168.0.1/user/info/getUser.do

location /user/ {
    proxy_pass http://127.0.0.1:8081/data;
}

實際訪問路徑:http://127.0.0.1:8081/datainfo/getUser.do,“/user/”被“/data”替換。

 


免責聲明!

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



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