nginx反向代理用上游的ip位址取代url

nginx反向代理用上游的ip位址取代url

我正在使用 nginx1.14.2作為具有以下配置的反向代理

server {
        listen xxxxxxx:80;
        server_name xxxxxx;
        proxy_intercept_errors on;

        location /nodejs {
                proxy_pass https://nodejs.org;
                proxy_cache cache;
                proxy_cache_valid 200 301 302 30d;
                proxy_cache_valid 404 1m;
                expires 30d;
                proxy_ssl_server_name on;
                proxy_cache_use_stale error timeout invalid_header updating;
        }
}

我越來越502錯誤的網關在瀏覽器上:在此輸入影像描述 在 nginx 錯誤日誌中,我發現以下行:

2020/12/10 11:23:23 [error] 16462#16462: *1 connect() failed (110: Connection timed out) while connecting to upstream, client: xxxxxxx, server: xxxxxxxx, request: "GET /nodejs HTTP/1.1", upstream: "https://104.20.23.46:443/nodejs", host: "xxxxxxxx"

但由於後端有代理,因此有IP位址的URL被屏蔽。你知道如何強制 nginx 在上游使用網域名稱代替 IP 位址嗎

謝謝。

編輯:我在 proxy_pass 配置中新增了以下行:

rewrite /nodejs/(.*) /dist  break;

現在錯誤日誌是這樣的:

2020/12/10 12:22:37 [error] 16541#16541: *1 connect() failed (110: Connection timed out) while connecting to upstream, client: xxxxxxx, server: xxxxxxxx, request: "GET /nodejs HTTP/1.1", upstream: "https://104.20.22.46:443/dist", host: "xxxxxxx"

答案1

你需要這個指令:proxy_ssl_server_name on;
預設是關閉的。

http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_server_name

相關內容