proxy_set_header Host 所引發的凶案


背景介紹:新搭建了一套測試環境.slb為2.2.2.2,由於應用的特殊性,需要走 test.aaa.com.cn 域名,而該域名在老的測試服務器1.1.1.1有兩個不能遷移的服務也在使用,故想出對策,在1.1.1.1上安裝nginx反向代理,讓請求先通過該域名走1.1.1.1 ,在配置nginx,根據不同端口轉發到 2.2.2.2 對應端口。

這里展示其中一個應用的nginx配置:

    server {
    listen      2108;
    listen      [::]:2108 ipv6only=on;
    server_name test.starpos.com.cn;

    proxy_set_header Host $host:2108;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ssl_certificate      /etc/nginx/certs/new/server.pem;
    ssl_certificate_key  /etc/nginx/certs/new/server.key;
    ssl_client_certificate /etc/nginx/certs/new/ca.cer;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location /{
        proxy_pass https://k8stest.bbb.com.cn:2108;
    }

    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }
}

在點擊對應的窗口時。跳轉本服務的url出現了:http://test.aaa.com.cn:2108/dfjejekk/jjdkkk/jfdjkkxxx
報錯:用http協議去訪問了一個https端口。

但是訪問是https,為啥請求到中間,協議就變了,經過一整天的排錯,發現:
nginx里我定義了個請求頭,沒有定義協議,它默認走了http
proxy_set_header Host $host:2108

故注釋掉此條配置,訪問成功!!!!!!


免責聲明!

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



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