Puncte:0

Nginx L4 Proxy Funcționează cu HTTPS, dar nu și cu HTTP

drapel us

Am următoarea configurație ca proxy L4 peste Nginx și totul funcționează bine.

  curent {
 

    
    harta $ssl_preread_server_name $nume {
    nume de gazdă;
    .ipchicken.com $ssl_preread_server_name;
    .bbc.com $ssl_preread_server_name;
    .bbc.co.uk $ssl_preread_server_name;
    .bbci.co.uk $ssl_preread_server_name;
    .neverssl.com $ssl_preread_server_name; #<-------
    
}


Server {

    rezolutor 8.8.8.8;
    asculta 443;
    ssl_preread on;
    proxy_connect_timeout 5s;
    proxy_pass $nume:$port_server;
}

Dar când este solicitat site-ul HTTP, cum ar fi „http://neverssl.com/”, Nginx nu răspunde. Vreo idee pentru această problemă?

Ivan Shatsky avatar
drapel gr
Schema `http://` folosește portul TCP 80, în timp ce blocul dvs. de server ascultă pe portul 443.
Zareh Kasparian avatar
drapel us
@IvanShatsky. Dragă Ivan, mulțumesc pentru răspuns. Sincer să fiu, vreau ca atât HTTP, cât și HTTPS să fie direcționate prin proxy-ul meu. Ultima dată m-ați ajutat să-mi corectez configurația pentru HTTPS. Aș fi recunoscător dacă mă puteți ghida cu privire la modul în care să le am pe ambele configurate în același fișier de configurare.
Zareh Kasparian avatar
drapel us
@IvanShatsky cred că ar trebui să fie ceva configurat în ssl_preread_server_name;,
Puncte:1
drapel gr

Din câte știu eu ssl_preread directiva funcționează numai cu protocolul HTTPS. Nu știu cum să obțin HTTP Gazdă valoarea antetului în ngx_stream_core_module. Puteți încerca să utilizați un suplimentar Server bloc în http context așa cum este prezentat Aici:

http {
    ...
    harta $http_host $proxy {
        nume de gazdă;
        .neverssl.com $http_host;
        ...
    }

    Server {
        asculta 80;
        rezolutor 8.8.8.8;
        Locație / {
            if ($proxy = '') { returnează 403; } # Returnează HTTP 403 Interzis pentru domeniile nelistate
            proxy_set_header Gazdă $proxy;
            proxy_redirect dezactivat;
            proxy_connect_timeout 5s;
            proxy_pass http://$proxy;
        }
    }
}

curent {
    ... # configurație de flux pentru portul HTTPS 443 aici
}

Nu este nevoie de utilizare $server_port variabilă la blocul serverului de flux, ascultați doar pe portul 443, așa că puteți utiliza doar proxy_pass $nume:443;

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.