Nginx反向代理至非80端口時丟失端口

原由

在搭建公司內部一套業務系統測試環境是因爲須要使用到Nginx作反向代理,可是又沒有使用80/443端口作外部訪問使用。在web端訪問API時出現端口丟失的狀況,致使業務沒法正常訪問。web

解決方法

在對應的*.conf的location中添加proxy_set_header Host $host:$server_port;
示例:api

upstream demoapi {
    ip_hash;
    server 172.20.0.100:20001;
    server 172.20.0.101:20001;
}
server {
    listen 10080;
    server_name localhost;

    location / {       
        proxy_connect_timeout 180;
        proxy_send_timeout 180;
        proxy_read_timeout 180;
        # 獲取真實客戶端IP寫入到請求頭x-Real-IP
        proxy_set_header X-Real-IP $remote_addr;
        # proxy_set_header Host $host;
        # 獲取代理端口
        proxy_set_header Host $host:$server_port;
        proxy_redirect off;
        proxy_pass http://demoapi;
        proxy_http_version 1.1;
    }
}
複製代碼
相關文章
相關標籤/搜索