Nginx proxy_pass を IP に渡すが HTTPS を使用する

Nginx proxy_pass を IP に渡すが HTTPS を使用する

の SSL 証明書で保護されたレガシー サーバーがありますexample.com。特定の (レガシー) トラフィックに対して、このサーバーの前に別のサーバーを配置したいと考えていますproxy_pass。新しいサーバーも に公開する必要がありますexample.com

legacy.example.comこれらが別のドメイン (と)にあった場合example.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;

見るこのドキュメント詳細については。

関連情報