Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 15060|Răspunde: 0

[Web] Serverul nginx din front-end și nginx din spate înregistrează adresa IP a clientului original

[Copiază linkul]
Postat pe 03.11.2014 09:53:23 | | |

Acest modul ne permite să schimbăm valoarea adresei IP ale clientului în antetul cererii clientului (de exemplu, X-Real-IP sau X-Forwarded-For).

    Această caracteristică este foarte utilă pentru serverele Nginx dacă Nginx funcționează în spatele unor proxy-uri de echilibrare a încărcării Layer 7, deoarece IP-ul local al cererii clientului (adică adresa cererii clientului) este adăugat la antetul adresei IP ale clientului când trece prin proxy-ul Layer 7, astfel încât backend-ul Nginx să poată obține valoarea adresei IP a clientului. Modulul nu este instalat implicit, așa că dacă vrei să folosești modulul, trebuie să adaugi opțiunea --with-http_realip_module când compilezi instalarea.

    Motivul folosirii acestui modul este că permite serverului de fundal să înregistreze adresa IP a clientului original.

Exemplu de configurație
set_real_ip_from 192.168.1.0/24;
set_real_ip_from 192.168.2.1;
real_ip_header X-Real-IP;


Degete    Ordinea

   Modulul oferă doar două instrucțiuni.

Numele instrucțiunii: set_real_ip_from

Funcție: Specificarea unei adrese de încredere prin această comandă va fi înlocuită cu o adresă IP exactă. Socket-urile Unix de încredere pot fi folosite, de asemenea, începând cu versiunea 0.8.22. Setul IP aici se referă la frontend-ulNginxLacăsauCalamardeIPAdresă.

Sintaxă: set_real_ip_from [adresa| CIDR|" unix:"]

Valoare implicită: niciuna

Mediul de utilizare: http, server, locație

Nume instrucțiune: real_ip_header

Funcție: Această comandă este folosită pentru a seta ce antet să înlocuiască adresa IP. Dacă se folosește X-Forwarded-For, modulul va înlocui adresa IP a proxy-ului front-end cu ultima adresă IP din antetul X-Forwarded-For.

Sintaxă: real_ip_header [X-Real-IP| X-Forwarded-For]

Valoare implicită: real_ip_header X-Real-IP

Mediul de utilizare: http, server, locație

Cazuri de utilizare   

    În exemplul următor, mediul nostru este așa: există două servere Nginx, unul este frontend-ul și celălalt backend-ul, Nginx frontend este folosit ca proxy, iar Nginx backend este folosit pentru a oferi acces la pagini, iar există și un client cu următoarea adresă IP:

  

    Frontend Nginx: 192.168.7.10

    Backend Nginx: 192.168.1.15

    Gazdă client: 218.239.201.36

    Configurația Nginx de pe frontend arată astfel:

server {
  ascultă 80;
  server_name www.xx.com;

Locație / {
    root html;
    Index index.html index.htm;
Charset UTF-8;
  }

locație /865 {
    proxy_pass http://192.168.3.139:80/;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Gazdă $host;
    proxy_redirect oprit;
  }

……
}

Configurația Nginx pentru backend este următoarea:

server {
  ascultă 80;
  server_name localhost;

  Locație / {
    root /var/www/html;
    Index index.html index.htm;
  }

Accesează testul

    Dacă accesăm http://www.xx.com/865, nicio problemă, poate fi un acces normal, jurnalul de acces este următorul:

    Jurnale de la Nginx frontend:

218.239.201.36 - - [30/Aug/2011:16:09:56 +0800] "GET /865/ HTTP/1.1" 200 151 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-SUA; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1"

Jurnale de la backend Nginx:

192.168.7.10 - - [30/Aug/2011:16:09:56 +0800] "GET // HTTP/1.0" 200 151 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-SUA; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1"

Vedem că jurnalele backend Nginx nu înregistrează adresa IP a clientului original, ci adresa IP a frontend-ului Nginx.

    Dacă modifici configurația serverului Nginx de fundal la:

server {
  ascultă 80;
  server_name localhost;
  set_real_ip_from 192.168.3.0/24;
set_real_ip_from 100.100.0.0/16;
  real_ip_header X-Real-IP;

  Locație / {
    root html;
    Index index.html index.htm;
  }

    ……
}

Apoi facem din nou testul de acces:

    Jurnale de la Nginx frontend:

218.239.201.36 - - [30/Aug/2011:16:10:28 +0800 "GET /865/ HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-SUA; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1"

     Jurnale de la backend Nginx:

218.239.201.36 - - [30/Aug/2011:16:10:28 +0800] "GET // HTTP/1.0" 304 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-SUA; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1"

Se poate observa că de data aceasta fundalul înregistrează adresa IP a clientului.







Precedent:Mod proxy nginx, obținerea adresei IP reale a clientului
Următor:Discuz! X3.1 Toate versiunile X3 ocolesc permisiunea de descărcare a atașamentelor fără credite Vulnerabilitate la descărcare nelimitată
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com