Nginx:地址轉發


兩種情況

主要分為兩種情況,以及一些注意事項:

  • 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的地址最后不要帶斜杠


免責聲明!

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



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