Android

Sette opp en nginx reverse proxy

Реклама подобрана на основе следующей информации:

Реклама подобрана на основе следующей информации:

Innholdsfortegnelse:

Anonim

En omvendt proxy er en tjeneste som tar en klientforespørsel, sender forespørselen til en eller flere proxy-servere, henter svaret og leverer serverens svar til klienten.

På grunn av ytelsen og skalerbarheten brukes NGINX ofte som en omvendt proxy for HTTP og ikke-HTTP-servere. En typisk omvendt proxy-konfigurasjon er å sette Nginx foran Node.js, Python eller Java-applikasjoner.

Å bruke Nginx som omvendt proxy gir deg flere fordeler:

  • Load Balancing - Nginx kan utføre belastningsbalansering for å distribuere klientenes forespørsler på tvers av servere, som forbedrer ytelse, skalerbarhet og pålitelighet. Bufring - Med Nginx som en omvendt proxy, kan du buffer de forhåndsutgitte versjonene av sider for å øke hastigheten på sideinnlastingen. Det fungerer ved å bufret innholdet som mottas fra de proxierte serverenes svar, og bruke det til å svare på klienter uten å måtte kontakte den proxy-serveren for det samme innholdet hver gang. SSL-terminering - Nginx kan fungere som et SSL-endepunkt for forbindelser med klientene. Den vil håndtere og dekryptere innkommende SSL-tilkoblinger og kryptere den nærliggende serverens svar. Komprimering - Hvis den proxy-serveren ikke sender komprimerte svar, kan du konfigurere Nginx til å komprimere svarene før du sender dem til klientene. Begrensende DDoS-angrep - Du kan begrense innkommende forespørsler og antall tilkoblinger per enkelt IP-adresse til en verdi som er vanlig for vanlige brukere. Med Nginx kan du også blokkere eller begrense tilgangen basert på klientens beliggenhet, og verdien av forespørselsoverskriftene som "User-Agent" og "Referer".

Denne artikkelen beskriver trinnene som kreves for å konfigurere Nginx som en omvendt proxy.

Forutsetninger

Vi antar at du har Nginx installert på Ubuntu-, CentOS- eller Debian-serveren.

Bruker Nginx som en omvendt proxy

Hvis du vil konfigurere Nginx som en omvendt proxy til en HTTP-server, åpner du domenets serverblokkonfigurasjonsfil og angir et sted og en proxy-server inne i den:

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

URL-en til den proxy_pass serveren er angitt ved å bruke proxy_pass direktivet og kan bruke HTTP eller HTTPS som protokoll, domenenavn eller IP-adresse, og en valgfri port og URI som adresse.

Konfigurasjonen over forteller Nginx å sende alle forespørsler til /app plasseringen til den proxy-serveren på http://127.0.0.1:8080 .

På Ubuntu og Debian-baserte distribusjoner lagres /etc/nginx/sites-available i katalogen /etc/nginx/sites-available , mens de er i CentOS i katalogen /etc/nginx/conf.d .

For å illustrere hvordan location og proxy_pass direktiver fungerer, la oss ta 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økende får tilgang til http://example.com/blog/my-post , vil Nginx proxy denne forespørselen til http://node1.com:8000/wordpress/my-post .

Når adressen til den proxy-serveren inneholder en URI, ( /wordpress/ ), erstattes forespørsel-URI som sendes til den proxy-serveren av en URI som er spesifisert i direktivet. Hvis adressen til den proxy-serveren er spesifisert uten en URI, sendes den fullstendige forespørsel-URI til den proxy-serveren.

Passing Request Headers

Når Nginx fullmakter en forespørsel, definerer den automatisk to toppfelt i en proxy-forespørsel fra klienten, Host and Connection , og fjerner tomme topptekster. Host er satt til $proxy_host variabelen, og Connection er satt til å lukke.

Hvis du vil justere eller stille inn overskrifter for proxy-tilkoblinger, bruker du proxy_set_header direktivet, etterfulgt av proxy_set_header . Du kan finne en liste over alle tilgjengelige forespørselsoverskrifter og deres tillatte verdier her. Hvis du vil forhindre at en overskrift sendes til den proxy-serveren, setter du den til en tom streng "" .

I det følgende eksemplet endrer vi verdien for Host header-feltet til $host og fjerner Accept-Encoding header-feltet ved å sette verdien til en tom streng.

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

Hver gang du endrer konfigurasjonsfilen, må du starte Nginx-tjenesten på nytt for at endringene skal tre i kraft.

Konfigurere Nginx som en omvendt proxy til en server som ikke er HTTP

For å konfigurere Nginx som en omvendt proxy til en server som ikke er HTTP-proxy, kan du bruke følgende direktiver:

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

Et av de vanligste eksemplene er å bruke Nginx som en omvendt proxy til PHP-FPM:

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

Vanlige Nginx omvendte proxy-alternativer

Servering av innhold via HTTPS har blitt en standard i dag. I denne delen vil vi gi deg et eksempel på HTTPS Nginx omvendt proxy-konfigurasjon, inkludert de anbefalte Nginx proxy-parametere 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-protokollversjonen for proxy, som standard satt den til 1.0. For Websockets og keepalive tilkoblinger må du bruke versjon 1.1. proxy_cache_bypass $http_upgrade - Angir forhold som svaret ikke vil bli hentet fra en cache. Upgrade $http_upgrade og Connection "upgrade" - Disse topptekstfeltene er påkrevd hvis applikasjonen din bruker Websockets. Host $host - Vertsvariabelen $host i følgende rekkefølge inneholder: vertsnavn fra forespørselslinjen, eller vertsnavn fra $host toppfelt, eller servernavnet som samsvarer med en forespørsel. X-Real-IP $remote_addr - X-Real-IP $remote_addr ekte besøkende ekstern IP-adresse til den proxy-serveren. X-Forwarded-For $proxy_add_x_forwarded_for - En liste som inneholder IP-adressene til hver server klienten er blitt proxyet gjennom. X-Forwarded-Proto $scheme - Når det brukes i en HTTPS-serverblokk, blir hver HTTP-respons fra den proxy-serveren skrevet om til X-Forwarded-Host $host - Definerer den opprinnelige verten som klienten etterspør. X-Forwarded-Port $server_port - Definerer den originale porten som klienten etterspør.

Konklusjon

Du har lært hvordan du bruker Nginx som en omvendt proxy. Vi har også vist deg hvordan du kan gi flere parametere til serveren og endre og angi forskjellige overskriftfelt i fullstendige forespørsler.

Nginx