|
Deze module stelt ons in staat om de waarde van het client IP-adres in de client request header te wijzigen (bijv. X-Real-IP of X-Forwarded-For). Deze functie is erg nuttig voor Nginx-servers als Nginx achter enkele Layer 7 load balancing-proxies werkt, omdat het lokale IP van het clientverzoek (dat wil zeggen het requestadres van de client) wordt toegevoegd aan de client IP-adresheader wanneer het door de Layer 7-proxy gaat, zodat de backend Nginx de IP-adreswaarde van de client kan verkrijgen. De module is standaard niet geïnstalleerd, dus als je de module wilt gebruiken, moet je de --with-http_realip_module optie toevoegen bij het compileren van de installatie. De reden voor het gebruik van deze module is dat het de achtergrondserver in staat stelt het IP-adres van de oorspronkelijke client op te nemen. Configuratievoorbeeldset_real_ip_from 192.168.1.0/24; set_real_ip_from 192.168.2.1; real_ip_header X-Real-IP;
Vingers Orde De module biedt slechts twee instructies. Instructienaam: set_real_ip_from Functie: Het specificeren van een vertrouwd adres via dit commando wordt vervangen door een exact IP-adres. Vertrouwde Unix-sockets kunnen ook vanaf versie 0.8.22 worden gebruikt. De IP-set hier verwijst naar de frontendNginx、VernisofInktvisvanIPAdres. Syntaxis: set_real_ip_from [het adres| CIDR|" unix:"] Standaardwaarde: geen Gebruiksomgeving: http, server, locatie Instructienaam: real_ip_header Functie: Dit commando wordt gebruikt om in te stellen welke header het IP-adres vervangt. Als X-Forwarded-For wordt gebruikt, vervangt de module het IP-adres van de front-end proxy door het laatste IP-adres in de X-Forwarded-For-header. Syntaxis: real_ip_header [X-Real-IP| X-Forwarded-For] Standaardwaarde: real_ip_header X-Real-IP Gebruiksomgeving: http, server, locatie Gebruikssituaties In het volgende voorbeeld is onze omgeving als volgt: er zijn twee Nginx-servers, één is de frontend en de andere de backend, de frontend Nginx wordt gebruikt als proxy, en de backend Nginx wordt gebruikt om pagina-toegang te bieden, en er is ook een client met het volgende IP-adres: Frontend Nginx: 192.168.7.10 Backend Nginx: 192.168.1.15 Clienthost: 218.239.201.36 De Nginx-configuratie op de frontend ziet er als volgt uit: server { luister 80; server_name www.xx.com;
locatie / { root html; index index.html index.htm; Charset UTF-8; }
locatie /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 Host $host; proxy_redirect weg; }
……
} De Nginx-configuratie voor de backend is als volgt: server { luister 80; server_name lokale presentator;
locatie / { wortel /var/www/html; index index.html index.htm; } Toegang tot de test Als we toegang krijgen tot de http://www.xx.com/865, geen probleem, het kan een normale toegang zijn, het toegangslogboek is als volgt: Logs van frontend Nginx: 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-VS; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" Logs van 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-VS; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" We zien dat de backend Nginx-logs niet het IP-adres van de oorspronkelijke client registreren, maar het IP-adres van de frontend-Nginx. Als je de configuratie van de achtergrond Nginx-server aanpast naar: server { luister 80; server_name lokale presentator; set_real_ip_from 192.168.3.0/24; set_real_ip_from 100.100.0.0/16; real_ip_header X-Real-IP;
locatie / { root html; index index.html index.htm; }
……
}
Daarna doen we de toegangstest opnieuw: Logs van frontend Nginx: 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-VS; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" Logs van 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-VS; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" Je kunt zien dat de achtergrond dit keer het IP-adres van de client registreert.
|