事實上,標題這種描不太准確,准確來說:
當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”替換。