
У меня есть устаревший сервер, защищенный с помощью 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, но указать домен, который будет использоваться для сертификата. Несмотря на то, что не было A
записи для example.com
сопоставления с этим IP, я смог обмануть его, заставив думать, что он подключается по этому домену.
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;
Видетьэтот документдля получения подробной информации.