Nginx proxy_pass 到 IP 但使用 HTTPS

Nginx proxy_pass 到 IP 但使用 HTTPS

我有一台通过 SSL 证书保护的旧服务器example.com。我想将另一台服务器置于这台服务器之前,以处理某些(旧)流量。新服务器也proxy_pass必须公开。example.com

如果这些位于不同的域(legacy.example.comexample.com),我只需 即可proxy_pass https://legacy.example.com。但是,旧版应用程序充斥着硬编码的example.comURL(并且它只有 的 SSL 证书example.com)。任何其他 URL(例如 IP)都将重定向到example.com

我想要做的是proxy_pass <legacy IP>,使用 设置主机标头proxy_set_header Host example.com。但问题是,这不使用 HTTPS。

不久前,我用 curl 做了一些事情,我能够通过 IP 连接到服务器,但指定用于证书的域。尽管没有映射到此 IP 的A记录example.com,但我能够欺骗它,让它认为它是通过该域连接的。

curl https://example.com/path --resolve example.com:<IP>

Nginx 中有类似的东西吗?

答案1

我自己没有用过它,但它看起来proxy_ssl_name可能就是你想要的:

例如:

proxy_set_header Host example.com;
proxy_ssl_name        example.com;
proxy_pass            https://1.2.3.4;

这个文件了解详情。

相关内容