Я хочу настроить NGINX для приема незашифрованного HTTP-трафика c на порт 80 и proxy_pass
на восходящий HTTPS-сервер. Шифрование должно полностью управляться через NGINX, позволяя клиентам, подключающимся к службе NGINX, эффективно общаться по протоколу HTTP с восходящей службой HTTPS.
Я использую конфигурацию NGINX, как показано ниже, однако Я получаю 502 ошибки шлюза всякий раз, когда делаю простой HTTP-запрос к серверу.
upstream https-server {
server my-upstream-host-which-speaks-https.example.com:443;
}
server {
listen 80;
listen [::]:80;
location / {
proxy_pass https://https-server;
}
}
Вот ошибки, зарегистрированные во время неудачного запроса.
2020/07/13 15:41:45 [error] 20#20: *1 SSL_do_handshake() failed (SSL: error:1408F10B:SSL routines:ssl3_get_record:wrong version number) while SSL handshaking to upstream, client: 10.244.1.215, server: , request: "GET / HTTP/1.1", upstream: "https://99.86.230.58:443/", host: "nginx.http-cache.svc.cluster.local"
2020/07/13 15:41:45 [warn] 20#20: *1 upstream server temporarily disabled while SSL handshaking to upstream, client: 10.244.1.215, server: , request: "GET / HTTP/1.1", upstream: "https://99.86.230.58:443/", host: "nginx.http-cache.svc.cluster.local"
Это Сообщение SO указывает, что проблема, вероятно, связана с тем, что NGINX фактически не переводит входящий HTTP-запрос в HTTPS, и поэтому вышестоящий сервер интерпретирует необработанный HTTP-запрос как начало рукопожатия. Как я могу настроить NGINX для выполнения преобразования HTTP в HTTPS перед прокси, чтобы он говорил HTTP со своими собственными клиентами, но HTTPS с proxy_pass
восходящим потоком?
Примечание: я не хочет перенаправить HTTP-трафик c на HTTPS, но скорее proxy_pass его без ошибок. Я также уверен, что многие люди спросят: "Зачем вам это нужно?" У нас есть законный вариант использования, когда нам действительно нужно MITM ответы серверной части, чтобы правильно использовать их в нашей конфигурации кеша с помощью Varni sh. Так что было бы здорово, если бы такие комментарии можно было свести к минимуму :)