Я не знал, как изящно закрыть соединение с потоковым модулем, поэтому я не уверен, что это будет правильное решение, но попробовать стоит (вы можете использовать любой свободный порт для фиктивного сервера/восходящего потока):
транслировать {
карта $ ssl_preread_server_name $ имя {
сервер server.domain.com;
www.домен.com www;
манекен по умолчанию;
}
восходящий сервер {
серверная часть: 443;
}
вверх по течению www {
серверная часть2:443;
}
манекен вверх по течению {
серверная часть 127.0.0.1:4343;
}
сервер {
слушать 443;
прокси_пароль $имя;
ssl_preread включен;
}
сервер {
слушать 4343;
возвращаться "";
}
}
Обновлять
Проверив приведенное выше решение, я могу подтвердить, что оно работоспособно. Однако он создает запись в журнале ошибок, например
Ошибка WSARecv() (10053: установленное соединение было прервано программным обеспечением на вашем хост-компьютере) при проксировании и чтении из восходящего потока, клиент: 127.0.0.1, сервер: 127.0.0.1:443, восходящий поток: «127.0.0.1:4343» , байт от/к клиенту: 517/0, байт от/к восходящему потоку: 0/517
Итак, немного подумав, я попробовал это:
http {
сервер {
слушать 4343 ssl;
ssl_certificate /путь/к/selfsigned.crt;
ssl_certificate_key /path/to/selfsigned.key;
вернуть 444;
}
}
транслировать {
карта $ ssl_preread_server_name $ имя {
сервер server.domain.com;
www.домен.com www;
манекен по умолчанию;
}
восходящий сервер {
серверная часть: 443;
}
вверх по течению www {
серверная часть2:443;
}
манекен вверх по течению {
серверная часть 127.0.0.1:4343;
}
сервер {
слушать 443;
прокси_пароль $имя;
ssl_preread включен;
}
}
Самоподписанный сертификат и ключ можно создать с помощью следующей команды:
openssl req -nodes -new -x509 -subj "/CN=localhost" -keyout /path/to/selfsigned.key -out /path/to/selfsigned.crt
Этот правильно закрывает соединение.
Более того, даже это сработало:
http {
сервер {
слушать 80 default_server;
вернуть 444;
}
}
транслировать {
карта $ ssl_preread_server_name $ имя {
сервер server.domain.com;
www.домен.com www;
манекен по умолчанию;
}
восходящий сервер {
серверная часть: 443;
}
вверх по течению www {
серверная часть2:443;
}
манекен вверх по течению {
серверная часть 127.0.0.1:80;
}
сервер {
слушать 443;
прокси_пароль $имя;
ssl_preread включен;
}
}
Конечно, завиток
жалуется на попытку рукопожатия для неверного номера версии SSL и в журнале доступа есть забавные записи типа
127.0.0.1 - - [05/ноября/2021:01:04:34 +0200] "\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03L\xF9[\xB2\x7F \x99\xB1(\xAC\xB4\x91}\xE2N\xC6H\xE3\xB3_\xD1\xEA\xA3C\x1D\xE5\xE5\xB6\x02\xDB\x04h\xB6 *\xCB\x0E\xC0\ xF5\xB7\xAF[y|\x1B\x14_\xC2g\xEA\xA2\x1E\xB4\xC4Bj3t\xE8d\xE72vm\xF2\x1B\x00>\x13\x02\x13\x03\x13\x01\xC0, \xC00\x00\x9F\xCC\xA9\xCC\xA8\xCC\xAA\xC0+\xC0/\x00\x9E\xC0$\xC0(\x00k\xC0#\xC0'\x00g\xC0" 400 163 "- ""-"
но журнал ошибок чист.