序
本文主要講解下port_in_redirect的實際用途。
場景
有一個80埠的nginx,要轉發一個路徑到另一個8080埠的nginx,配置如下
server {
listen 80 default_server;
server_name demoapp.com.cn;
location /public/ {
proxy_pass http://192.168.99.100:8080/public/ ;
}
}
另外一個nginx的配置如下
server {
listen 8080 default_server;
location ~* /public/(share|webview) {
root html ;
proxy_buffering off;
index index.html index.htm;
}
}
html目錄裡頭有個public目錄,public目錄裡頭有share以及webview目錄,存放各個子模組的靜態資源。
問題
這樣配置了之後,通過demoapp.com.cn/public/share訪問的時候,會跳轉到demoapp.com.cn:8080/public/share
假設這兩個nginx監聽同一個ip,如果不是同一個ip,估計要配置server_name以及開啟server_name_in_redirect
這個時候,port_in_redirect就派上用場了。
server {
listen 8080 default_server;
location ~* /public/(share|webview) {
root html ;
proxy_buffering off;
port_in_redirect off;
index index.html index.htm;
}
}
通過指定port_in_redirect off;告知nginx在redirect的時候不要帶上port,如果沒有配置,預設該值為true