1、基本規則
假如後端實際地址為:
則:
1)透過nginx轉發,使用http://127.0.0.1/api/user/getById?id=123訪問
透過原有地址直接準發非常簡單。
2)透過nginx轉發,使用http://127.0.0.1/test/api/user/getById?id=123訪問
這裡相當於對請求新增了字首,但在轉發的過程中是沒有字首的,故需要去掉。關鍵點就是地址後面的 "/"
2.關於斜杆"/"的案例對比
以服務地址http://127.0.0.1:8080/api/user/getById進行說明,訪問地址是http://127.0.0.1/api/user/getById。location後斜杆與proxy_pass後斜杆問題如下:
1)location、proxy_pass都不加斜槓
實際代理地址:http://127.0.0.1:8080/api/user/getById。正確的
2)location加斜槓,proxy_pass不加斜槓
實際代理地址:http://127.0.0.1:8080/api/user/getById。正確的
3)location不加斜槓,proxy_pass加斜槓
實際代理地址:http://127.0.0.1:8080//user/getById。錯誤的,也出現了雙斜槓
4)location、proxy_pass都加斜槓
實際代理地址:http://127.0.0.1:8080/user/getById
5)location不加斜槓,proxy_pass加"api"
實際代理地址:http://127.0.0.1:8080/api/user/getById。正確的
6)location加斜槓,proxy_pass加"api"
實際代理地址:http://127.0.0.1:8080/apiuser/getById。錯誤的,少了一個斜杆
7)location不加斜槓,proxy_pass加"api/"
實際代理地址:http://127.0.0.1:8080/api//user/getById。這種情況會出現雙斜槓問題,後端在認證請求時會校驗失敗。
8)location加斜槓,proxy_pass加"api/"
實際代理地址:http://127.0.0.1:8080/api/user/getById。正確的
可以看出,兩者加不加斜杆的區別還是很大的,不同的場景使用不同的配置即可。簡單的,要麼都不加,這樣轉發的地址是對應的。