![Nginx proxy_pass 到 IP 但使用 HTTPS](https://linux22.com/image/1540068/Nginx%20proxy_pass%20%E5%88%B0%20IP%20%E4%BD%86%E4%BD%BF%E7%94%A8%20HTTPS.png)
我有一台通过 SSL 证书保护的旧服务器example.com
。我想将另一台服务器置于这台服务器之前,以处理某些(旧)流量。新服务器也proxy_pass
必须公开。example.com
如果这些位于不同的域(legacy.example.com
和example.com
),我只需 即可proxy_pass https://legacy.example.com
。但是,旧版应用程序充斥着硬编码的example.com
URL(并且它只有 的 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;
看这个文件了解详情。