Рейтинг:0

Как установить обратный прокси-сервер websocket с разрешенными proxy_set_header и SSL?

флаг vn

Я получаю проект, в котором внешний обратный прокси-сервер веб-сокета реализован потоком 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 внутренний обратный прокси-сервер, который маршрутизирует через внешний обратный прокси-сервер. Таким образом, прокси-впн и обратные прокси-маршруты согласованы.

При этой настройке есть ли способ достичь двух функций одновременно? Спасибо за прочтение.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.