兩種情況
主要分為兩種情況,以及一些注意事項:
- proxy_pass的鏈接無
/
- proxy_pass的鏈接有
/
第一種:proxy_pass的鏈接無/
proxy_pass中,不帶『/』,則把『匹配字符串及后綴(/api/xxx)』均帶給轉發地址
# 效果為:http://xxx.xxx.com/api/xxx -> http://127.0.0.1:7000/api/xxx. 轉發的時候,包含了url前綴.
location ^~ /api/ {
proxy_pass http://127.0.0.1:7000;
}
# 效果與上面一致
location ^~ /api {
proxy_pass http://127.0.0.1:7000;
}
第二種:proxy_pass的鏈接有/
proxy_pass中,帶『/』,則把『請求地址排除匹配字符串(/api/)』后,再帶給轉發地址
# 效果為:http://xxx.xxx.com/api/xxx --> http://127.0.0.1:7000/xxx
location ^~ /api/ {
proxy_pass http://127.0.0.1:7000/; # 端口后多了斜杠『/』
}
# 注意:下面的代碼會導致失敗,原因為『/api/xxx排除了/api』后,會把『/xxx』帶給轉發地址,但轉發地址中已有了斜杠,結果會多了一條斜杠,報錯。
# 效果為:http://xxx.xxx.com/api/xxx --> http://127.0.0.1:7000//xxx
location ^~ /api { # 這里的匹配字符串最后少了斜杠『/』
proxy_pass http://127.0.0.1:7000/;
}
注意事項
location的修飾符為正則匹配時,proxy_pass的地址最后不要帶斜杠