Puncte:0

Cum să setați proxy invers pentru websocket cu atât proxy_set_header, cât și SSL permise?

drapel vn

Primesc un proiect în care proxy-ul invers al socket-ului exterior este implementat de fluxul nginx.

Cu toate acestea, steam înseamnă doar „TCP” și a pierdut funcțiile http, cum ar fi scrierea numai a IP-urilor pe ruta.

Iată configurația stratului exterior în SSL criptat:

curent{ 
        în amonte mysvr {
            server 10.3.3.7:1111;
    }
        Server {
            asculta 3331; 
            ssl_preread on;
            # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass mysvr;
    }
......

cel proxy_set_header clauza trebuie comentată, deoarece nginx nu o permite aici dacă nu: Directiva „proxy_set_header” nu este permisă aici

Și iată configurația lui nginx pe mașina 10.3.3.7:

http{   
     Server {
                asculta 1111 ssl;
                nume_server gazdă locală;
                ssl_certificate /etc/nginx/cert/server.crt;
                ssl_certificate_key /etc/nginx/cert/server.key;
                ssl_session_timeout 5m;
                ssl_verify_client dezactivat;
        Locație / {
            proxy_pass http://10.3.3.5:8888;
            proxy_http_versiunea 1.1;
            proxy_set_header Actualizare $http_upgrade;
            proxy_set_header Conexiune „upgrade”;
        }
......

Așa că am încercat să rescriu primul proxy invers și exterior la tipul http 1.1, proxy-ul websocket real în loc de conexiunea TCP sau „stream”. Am mutat totul din curent suport și puneți-l înăuntru http paranteză și eliminați comentariul de dinainte proxy_set_header, în cele din urmă adăugați în cele trei clauze specifice pentru websocket la sfârșitul celui de-al doilea proxy invers interior:

http {
       în amonte mysvr {
            server 10.3.3.7:1111;
    }
       Server {
           asculta 3331; 
           ssl_preread on;
           proxy_set_header Gazdă $http_host;
           proxy_http_versiunea 1.1;
           proxy_set_header Actualizare $http_upgrade;
           proxy_set_header Conexiune „upgrade”;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_pass mysvr;
    }
......

Dar de data aceasta nginx aruncă o eroare:[emerg] Directiva „ssl_preread” nu este permisă

Deci conflictul este:

Sub abur nu pot folosi proxy_set_header; în timp ce sub http 1.1 nu pot folosi ssl_preread.

Dar ambele sunt caracteristici importante în acest scenariu:

Serverul backend real trebuie să cunoască IP-ul clientului real, deci trebuie să ștampile IP-ul de la serverul exterior în antet; Serverului proxy extern îi este interzis să citească traficul transparent, dar permite proxy-ului invers interior să-l decodifice cu SSL. Astfel, traficul dintre backend-ul real 10.3.3.5 și reverse-proxy-ul interior 10.3.3.7 este transparent, în timp ce traficul de la reverse-proxy-ul interior prin reverse-proxy-ul exterior către client este codificat cu același SSL de către nginx pe reverse-ul interior. -proxy.

Caracteristica suplimentară este că backend-ul real 10.3.3.5 rutează prin 10.3.3.7 proxy-ul invers interior, care direcționează prin proxy-ul invers exterior. Deci, rutele proxy vpn și proxy invers sunt coerente.

În această setare, există o modalitate de a realiza cele 2 caracteristici în același timp? Multumesc pentru lectura.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.