Android

Ställa in en omvänd proxy för nginx

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

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

Innehållsförteckning:

Anonim

En omvänd proxy är en tjänst som tar en klientförfrågan, skickar förfrågan till en eller flera proxierade servrar, hämtar svaret och levererar serverns svar till klienten.

På grund av dess prestanda och skalbarhet används NGINX ofta som en omvänd proxy för HTTP- och icke-HTTP-servrar. En typisk omvänd proxy-konfiguration är att placera Nginx framför Node.js, Python eller Java-applikationer.

Att använda Nginx som en omvänd proxy ger dig flera ytterligare fördelar:

  • Load Balancing - Nginx kan utföra belastningsbalansering för att distribuera klienters förfrågningar över proxierade servrar, vilket förbättrar prestanda, skalbarhet och tillförlitlighet. Caching - Med Nginx som en omvänd proxy kan du cache de förhandlade versionerna av sidor för att påskynda sidbelastningstider. Det fungerar genom att cache-lagra innehållet som mottas från de proxierade servrarnas svar och använda det för att svara på klienter utan att behöva kontakta den proxyerade servern för samma innehåll varje gång. SSL-terminering - Nginx kan fungera som en SSL-slutpunkt för anslutningar med klienterna. Den kommer att hantera och dekryptera inkommande SSL-anslutningar och kryptera den proxyerade serverns svar. Komprimering - Om den proxyerade servern inte skickar komprimerade svar kan du konfigurera Nginx så att de komprimerar svaren innan du skickar dem till klienterna. Dämpande DDoS-attacker - Du kan begränsa inkommande förfrågningar och antal anslutningar per IP-adress till ett värde som är vanligt för vanliga användare. Nginx tillåter dig också att blockera eller begränsa åtkomst baserat på klientens plats och värdet på förfrågningsrubrikerna som "User-Agent" och "Referer".

Den här artikeln beskriver stegen som krävs för att konfigurera Nginx som en omvänd proxy.

förutsättningar

Vi antar att du har Nginx installerat på din Ubuntu-, CentOS- eller Debian-server.

Använda Nginx som en omvänd proxy

Om du vill konfigurera Nginx som en omvänd proxy till en HTTP-server öppnar du domänens serverblockkonfigurationsfil och anger en plats och en proxierad server inuti den:

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

Den proxyerade webbadressen ställs in med hjälp av proxy_pass direktivet och kan använda HTTP eller HTTPS som protokoll, domännamn eller IP-adress, och en valfri port och URI som adress.

Konfigurationen ovan berättar för Nginx att överföra alla förfrågningar till /app platsen till den proxyerade servern på http://127.0.0.1:8080 .

I Ubuntu- och Debian-baserade distributioner lagras /etc/nginx/conf.d katalogen /etc/nginx/sites-available , medan de finns i CentOS i /etc/nginx/conf.d .

För att bättre illustrera hur proxy_pass och proxy_pass direktiv fungerar, låt oss ta följande exempel:

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

Om en besökare kommer åt http://example.com/blog/my-post kommer Nginx att proxy denna begäran till http://node1.com:8000/wordpress/my-post .

När adressen till den proxyerade servern innehåller en URI, ( /wordpress/ ), ersätts begäran URI som skickas till den proxyerade servern av en URI som anges i direktivet. Om adressen till den proxierade servern anges utan en URI, skickas den fullständiga begäran URI till den proxyerade servern.

Passerar begäran rubriker

När Nginx lägger fram en begäran definierar den automatiskt två rubrikfält i en proxyerad begäran från klienten, Host and Connection och tar bort tomma rubriker. Host är inställd på $proxy_host variabeln och Connection är inställd på att stängas.

Om du vill justera eller ställa in rubriker för proxyerade anslutningar använder du proxy_set_header direktivet följt av rubrikvärdet. Här hittar du en lista över alla tillgängliga begärhuvud och deras tillåtna värden. Om du vill förhindra att en rubrik skickas till den proxyerade servern, ställ in den till en tom sträng "" .

I följande exempel ändrar vi värdet på fältet värdhuvud till $host och tar bort huvudfältet Accept-Encoding genom att sätta värdet till en tom sträng.

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

När du ändrar konfigurationsfilen måste du starta om Nginx-tjänsten för att ändringarna ska träda i kraft.

Konfigurera Nginx som en omvänd proxy till en server som inte är HTTP

För att konfigurera Nginx som en omvänd proxy till en icke-HTTP-proxyerad server kan du använda följande direktiv:

  • fastcgi_pass - omvänd proxy till en FastCGI-server. uwsgi_pass - omvänd proxy till en uwsgi-server. scgi_pass - omvänd proxy till en SCGI-server. memcached_pass - omvänd proxy till en Memcached-server.

Ett av de vanligaste exemplen är att använda Nginx som en omvänd proxy till PHP-FPM:

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

Vanliga Nginx-omvända proxyalternativ

Att servera innehåll via HTTPS har blivit en standard nuförtiden. I det här avsnittet kommer vi att ge dig ett exempel på HTTPS Nginx reverse proxy-konfiguration inklusive de rekommenderade Nginx-proxyparametrarna och rubrikerna.

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 - Definierar HTTP-protokollversionen för proxysättning, den är som standard inställd på 1.0. För Websockets och keepalive anslutningar måste du använda version 1.1. proxy_cache_bypass $http_upgrade - Ställer in villkor under vilka svaret inte kommer att tas från en cache. Upgrade $http_upgrade och Connection "upgrade" - Dessa rubrikfält krävs om din applikation använder Websockets. Host $host - $host värdvariabeln i följande ordningsföljd innehåller: värdnamn från förfrågningsraden, eller värdnamn från värdfältets huvudfält, eller servernamnet som matchar en begäran. X-Real-IP $remote_addr - X-Real-IP $remote_addr den verkliga besökarens fjärr-IP-adress till den proxyerade servern. X-Forwarded-For $proxy_add_x_forwarded_for - En lista som innehåller IP-adresserna för varje server som klienten har blivit proxyerad genom. X-Forwarded-Proto $scheme - När det används i ett HTTPS-serverblock skrivs varje HTTP-svar från den proxyerade servern till X-Forwarded-Host $host - Definierar den ursprungliga värden som klienten begär. X-Forwarded-Port $server_port - Definierar den ursprungliga porten som klienten begär.

Slutsats

Du har lärt dig hur du använder Nginx som en omvänd proxy. Vi har också visat dig hur du skickar ytterligare parametrar till servern och ändrar och ställer in olika rubrikfält i proxyer.

nginx