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, но указать домен, который будет использоваться для сертификата. Несмотря на то, что не было 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;

Видетьэтот документдля получения подробной информации.

Связанный контент