Я использую модуль потока для передачи tls-трафика, где я не могу использовать обратный прокси-сервер, например. потому что у меня нет сертификата (локальная установка 3CX) или он ломает вещи (ssl vpn с клиентским сертификатом).
Затем я пересылаю «остальные» на другой IP-адрес того же хоста (127.0.0.1) для обратного проксирования.
Проблема заключалась в том, что remote_addr не всегда был 127.0.0.1, и, похоже, не было возможности установить «настоящий» удаленный адрес.
Чтобы обойти это, я включил proxy_protocol и использовал $proxy_protocol_addr.
Однако это нарушает работу всех транзитных веб-сайтов, и я не нашел способа условно включить proxy_protocol только для «по умолчанию».
Я делаю все это, чтобы иметь возможность сопоставлять sni и использовать один IP-адрес для всех веб-сайтов.
Я не зацикливаюсь на том, чтобы делать это именно так, если у кого-то есть идея, как добиться этого другим/лучшим способом, я весь слушаю.
транслировать {
карта $ssl_preread_server_name $targetBackend {
3cx.example.com 192.168.1.2:443;
vpn.example.com 192.168.1.3:443;
по умолчанию 127.0.0.1:443;
}
сервер {
слушать 192.168.1.100:443;
proxy_connect_timeout 1;
прокси_таймаут 3 с;
резолвер 192.168.1.1;
прокси_протокол включен;
прокси_пасс $targetBackend;
ssl_preread включен;
}
Итак... как сделать proxy_protocol условным (афаик, если он просто не работает в контексте потока) или решить его другим способом?