Android

Opsætning af en nginx reverse-proxy

Basic Setup Video for FortiWeb

Basic Setup Video for FortiWeb

Indholdsfortegnelse:

Anonim

En omvendt proxy er en tjeneste, der tager en klientanmodning, sender anmodningen til en eller flere proxierede servere, henter svaret og leverer serverens svar til klienten.

På grund af dens ydeevne og skalerbarhed bruges NGINX ofte som en reverse proxy til HTTP- og ikke-HTTP-servere. En typisk reverse proxy-konfiguration er at placere Nginx foran Node.js-, Python- eller Java-applikationer.

Brug af Nginx som en omvendt proxy giver dig flere ekstra fordele:

  • Load Balancing - Nginx kan udføre belastningsbalancering for at distribuere klienternes anmodninger på tværs af servere, der forbedrer ydeevne, skalerbarhed og pålidelighed. Cache - Med Nginx som en omvendt proxy kan du cache de forudgivne versioner af sider for at fremskynde sideindlæsningstider. Det fungerer ved at cache-indhold modtaget fra de proxierede serveres svar og bruge det til at svare på klienter uden at skulle kontakte den proxierede server for det samme indhold hver gang. SSL-terminering - Nginx kan fungere som et SSL-endepunkt for forbindelser med klienterne. Det vil håndtere og dekryptere indgående SSL-forbindelser og kryptere den proxyserveres svar. Komprimering - Hvis den proxyerede server ikke sender komprimerede svar, kan du konfigurere Nginx til at komprimere svarene, før du sender dem til klienterne. Afbødende DDoS-angreb - Du kan begrænse de indgående anmodninger og antal forbindelser pr. Enkelt IP-adresse til en værdi, der er typisk for almindelige brugere. Nginx giver dig også mulighed for at blokere eller begrænse adgangen baseret på klientens placering, og værdien af ​​anmodningens overskrifter, såsom "User-Agent" og "Referer".

Denne artikel beskriver de trin, der kræves for at konfigurere Nginx som en reverse proxy.

Forudsætninger

Vi antager, at du har Nginx installeret på din Ubuntu-, CentOS- eller Debian-server.

Brug af Nginx som en omvendt proxy

Hvis du vil konfigurere Nginx som en omvendt proxy til en HTTP-server, skal du åbne domænes serverblokkonfigurationsfil og angive en placering og en proxieserver inde i den:

server { listen 80; server_name www.example.com example.com; location /app { proxy_pass http://127.0.0.1:8080; } }

Den proxierede server-URL indstilles ved hjælp af proxy_pass direktivet og kan bruge HTTP eller HTTPS som protokol, domænenavn eller IP-adresse og en valgfri port og URI som en adresse.

Konfigurationen ovenfor fortæller Nginx at videresende alle anmodninger til /app placeringen til den proxierede server på http://127.0.0.1:8080 .

I Ubuntu og Debian-baserede distributioner gemmes /etc/nginx/conf.d i /etc/nginx/sites-available bibliotek, mens de er i CentOS i /etc/nginx/conf.d .

For bedre at illustrere, hvordan direktiver om location og proxy_pass fungerer, lad os tage følgende eksempel:

server { listen 80; server_name www.example.com example.com; location /blog { proxy_pass http://node1.com:8000/wordpress/; } }

Hvis en besøgende får adgang til http://example.com/blog/my-post , proxylægger Nginx denne anmodning til http://node1.com:8000/wordpress/my-post .

Når adressen på den proxierede server indeholder en URI, ( /wordpress/ ), erstattes anmodnings-URI, der sendes til den proxierede server, af en URI, der er specificeret i direktivet. Hvis adressen på den proxierede server specificeres uden en URI, overføres den fulde anmodning-URI til den proxierede server.

Passing Request Headers

Når Nginx fuldbyrder en anmodning, definerer den automatisk to headerfelter i en proxyerede anmodninger fra klienten, Host and Connection , og fjerner tomme overskrifter. Host er indstillet til variablen $proxy_host , og Connection er indstillet til at lukke.

Hvis du vil justere eller indstille overskrifter til proxierede forbindelser, skal du bruge proxy_set_header direktivet efterfulgt af headerværdien. Du kan finde en liste over alle tilgængelige anmodningsoverskrifter og deres tilladte værdier her. Hvis du vil forhindre, at en overskrift sendes til den næste server, skal du indstille den til en tom streng "" .

I det følgende eksempel ændrer vi værdien af Host hovedfeltet til $host og fjerner Accept-Encoding overskriftsfeltet ved at indstille dets værdi til en tom streng.

location / { proxy_set_header Host $host; proxy_set_header Accept-Encoding ""; proxy_pass http://localhost:3000; }

Hver gang du ændrer konfigurationsfilen, skal du genstarte Nginx-tjenesten for at ændringerne får virkning.

Konfiguration af Nginx som en omvendt proxy til en ikke-HTTP-proxy med proxyer

Hvis du vil konfigurere Nginx som en omvendt proxy til en ikke-HTTP-proxyeret server, kan du bruge følgende direktiver:

  • fastcgi_pass - reverse proxy til en FastCGI-server. uwsgi_pass - reverse proxy til en uwsgi server. scgi_pass - reverse proxy til en SCGI-server. memcached_pass - reverse proxy til en Memcached server.

Et af de mest almindelige eksempler er at bruge Nginx som en reverse proxy til PHP-FPM:

server { #… other directives location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.2-fpm.sock; } }

Almindelige Nginx-omvendte proxyindstillinger

Servering af indhold via HTTPS er blevet en standard i dag. I dette afsnit giver vi dig et eksempel på HTTPS Nginx reverse proxy-konfiguration inklusive de anbefalede Nginx proxy-parametre og overskrifter.

location/ { proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; proxy_cache_bypass $http_upgrade; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; }

  • proxy_http_version 1.1 - Definerer HTTP-protokollversionen til proxy, som standard indstillet den til 1.0. For Websockets og keepalive forbindelser skal du bruge version 1.1. proxy_cache_bypass $http_upgrade - Angiver betingelser, under hvilke svaret ikke vil blive taget fra en cache. Upgrade $http_upgrade og Connection "upgrade" - Disse headerfelter er påkrævet, hvis din applikation bruger Websockets. Host $host - $host variablen i følgende rækkefølge af præference indeholder: hostname fra anmodningslinjen, eller hostname fra Host request-feltet eller servernavnet, der matcher en anmodning. X-Real-IP $remote_addr - Videresender den virkelige besøgende fjern-IP-adresse til den næste server. X-Forwarded-For $proxy_add_x_forwarded_for - En liste, der indeholder IP-adresserne på hver server, klienten er blevet proxyet igennem. X-Forwarded-Proto $scheme - Når det bruges i en HTTPS-serverblok, omskrives hvert HTTP-svar fra den næste server til X-Forwarded-Host $host - Definerer den oprindelige vært, som klienten anmoder om. X-Forwarded-Port $server_port - Definerer den originale port, som klienten anmoder om.

Konklusion

Du har lært, hvordan du bruger Nginx som en omvendt proxy. Vi har også vist dig, hvordan du sender andre parametre til serveren og ændre og indstille forskellige overskriftsfelter i nærstående anmodninger.

nginx