Я получаю проект, в котором внешний обратный прокси-сервер веб-сокета реализован потоком nginx.
Тем не менее, steam означает только «TCP», и он потерял функции http, такие как запись только IP-адреса маршрута.
Вот конфигурация внешнего слоя в зашифрованном SSL:
транслировать{
вверх по течению
сервер 10.3.3.7:1111;
}
сервер {
слушать 3331;
ssl_preread включен;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
прокси_пароль mysvr;
}
......
в proxy_set_header
пункт должен быть закомментирован, так как nginx не позволяет его здесь, если нет:
Директива proxy_set_header здесь запрещена
А вот конфигурация nginx на машине 10.3.3.7:
http{
сервер {
слушать 1111 ssl;
имя_сервера локальный хост;
ssl_certificate /etc/nginx/cert/server.crt;
ssl_certificate_key /etc/nginx/cert/server.key;
ssl_session_timeout 5 м;
ssl_verify_client выключен;
место расположения / {
прокси_пасс http://10.3.3.5:8888;
прокси_http_версия 1.1;
proxy_set_header Обновить $http_upgrade;
proxy_set_header Соединение "обновление";
}
......
Поэтому я попытался переписать первый и внешний обратный прокси-сервер на тип http 1.1, настоящий прокси-сервер веб-сокета вместо TCP или «потокового» соединения. Я переместил все из транслировать
кронштейн и вставьте его http
скобка и удалить комментарий перед proxy_set_header
, наконец, добавьте три специальных предложения веб-сокетов в конце второго и внутреннего обратного прокси-сервера:
http {
вверх по течению
сервер 10.3.3.7:1111;
}
сервер {
слушать 3331;
ssl_preread включен;
proxy_set_header Хост $http_host;
прокси_http_версия 1.1;
proxy_set_header Обновить $http_upgrade;
proxy_set_header Соединение "обновление";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
прокси_пароль mysvr;
}
......
Но на этот раз nginx выдает ошибку:[появление] Директива "ssl_preread" не разрешена
Итак, конфликт:
Под паром я не могу использовать proxy_set_header
;
в то время как под http 1.1 я не могу использовать ssl_preread
.
Но они оба являются важными функциями в этом сценарии:
Реальному внутреннему серверу необходимо знать реальный IP-адрес клиента, поэтому необходимо указать IP-адрес на внешнем сервере в заголовке;
Внешнему прокси-серверу запрещено читать прозрачный трафик, но внутренний обратный прокси-сервер может декодировать его с помощью SSL. Таким образом, трафик между реальным бэкэндом 10.3.3.5 и внутренним обратным прокси-сервером 10.3.3.7 прозрачен, в то время как трафик от внутреннего обратного прокси-сервера через внешний обратный прокси-сервер к клиенту кодируется с помощью того же SSL nginx на внутреннем обратном -прокси.
Дополнительная особенность заключается в том, что реальный сервер 10.3.3.5 маршрутизирует через 10.3.3.7 внутренний обратный прокси-сервер, который маршрутизирует через внешний обратный прокси-сервер. Таким образом, прокси-впн и обратные прокси-маршруты согласованы.
При этой настройке есть ли способ достичь двух функций одновременно?
Спасибо за прочтение.