Hur man skapar en omvänd proxy i Nginx

NGINX är en mångsidig och högpresterande webbserver som ofta används som en omvänd proxyserver. En omvänd proxy är en mellanhand för klientförfrågningar som distribuerar dem till en eller flera backend-servrar. Denna installation gynnar lastbalansering, förbättrar säkerheten och ger hög tillgänglighet. Att använda NGINX som en omvänd proxy kan förbättra skalbarheten och tillförlitligheten för dina webbtjänster.

Den här guiden kommer att visa hur man skapar en omvänd proxy i NGINX och täcker de nödvändiga konfigurationsstegen för att effektivt dirigera klientförfrågningar till backend-servrar.

Skapa och konfigurera en omvänd proxy i Nginx

Konfigurera en grundläggande omvänd proxy i Nginx

Först, för att börja konfigurera Nginx som en omvänd proxy, gå till Nginx-konfigurationsfilen. Vanligtvis finns den här filen på /etc/nginx/nginx.conf. Öppna den med din föredragna textredigerare, som att använda sudo Nano:

sudo nano /etc/nginx/nginx.conf

Inuti konfigurationsfilen fokuserar du på http-blocket. Här kommer du att infoga ett serverblock, hörnstenen i din omvända proxy-inställning. Serverblocket lyssnar på en angiven port, vanligtvis port 80, efter HTTP-trafik. Inom detta block berättar platsen/direktivet för Nginx hur man hanterar inkommande förfrågningar. Använd proxy_pass-direktivet för att omdirigera dessa förfrågningar till backend-servern, specificerad av dess IP-adress eller värdnamn.

Till exempel kan konfigurationen se ut så här:

http {
    ...
    server {
        listen 80;
        location / {
            proxy_pass http://backendserver_address;
        }
    }
}

Kom ihåg att ersätta backendserver_address med den faktiska adressen till din backend-server. Denna enkla installation säger åt Nginx att vidarebefordra alla inkommande HTTP-förfrågningar till den angivna backend-servern.

Avancerad omvänd proxykonfiguration i Nginx

I en mer avancerad inställning kanske du vill konfigurera ytterligare aspekter av den omvända proxyn. Detta kan inkludera inställningar för lastbalansering, SSL-avslutning eller cachelagring.

Implementering av lastbalansering

Om du använder flera backend-servrar kan Nginx distribuera inkommande trafik mellan dem, vilket förbättrar prestanda och tillförlitlighet. För lastbalansering skulle du modifiera proxy_pass-direktivet så att det pekar på en grupp servrar definierade i ett uppströmsblock. Till exempel:

http {
    upstream backend_servers {
        server backend1.example.com;
        server backend2.example.com;
    }

    server {
        listen 80;
        location / {
            proxy_pass http://backend_servers;
        }
    }
}

Denna konfiguration tillåter Nginx att balansera belastningen mellan backend1.example.com och backend2.example.com.

Konfigurera SSL-uppsägning

För SSL-avslutning, se till att serverblocket lyssnar på port 443 och inkluderar SSL-certifikatet och nyckelfilplatserna. Konfigurationen kan likna:

server {
    listen 443 ssl;
    ssl_certificate /path/to/certificate.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://backendserver_address;
    }
}

Denna inställning gör det möjligt för Nginx att hantera SSL-anslutningar och dekryptera förfrågningar innan de skickas till backend-servrar.

Slutföra ändringar

Efter att ha konfigurerat Nginx, testa konfigurationen för syntaxfel med:

nginx -t

Om testet godkänns laddar du om Nginx för att tillämpa ändringarna med:

sudo systemctl reload nginx

Detta steg säkerställer att dina ändringar träder i kraft utan att avbryta aktuella anslutningar.

Ytterligare lärande: Ställa in Nginx Proxy Header-värden

När du konfigurerar Nginx som en omvänd proxy är det viktigt att ställa in proxyrubrikvärden korrekt. Dessa rubriker är avgörande för att förmedla den ursprungliga klientförfrågningsinformationen till backend-servrarna. Denna information kan inkludera klientens IP-adress, begärans ursprungliga protokoll och mer. Korrekt inställning av dessa rubriker säkerställer att backend-servrarna har det sammanhang de behöver för att korrekt svara på förfrågningar.

Förstå proxyhuvuden

Proxyrubriker är viktiga i en omvänd proxyinstallation eftersom de innehåller information om klientens ursprungliga begäran. Denna information är nödvändig för att backend-servrar ska kunna fatta välgrundade beslut om hantering av inkommande förfrågningar. Att känna till klientens ursprungliga IP-adress kan till exempel vara viktigt för loggning, analys eller säkerhetsändamål.

Vanliga proxyhuvudkonfigurationer

Några av de vanliga proxyrubrikerna som du kan konfigurera i Nginx inkluderar:

  • X-Real-IP: Denna rubrik används för att skicka den ursprungliga klientens IP-adress till backend-servern.
  • X-Forwarded-For: Liknande X-Real-IP, innehåller denna rubrik en lista över alla servrar som begäran har passerat, inklusive klientens IP.
  • X-Forwarded-Proto: Denna rubrik anger protokollet (HTTP eller HTTPS) som används i klientens ursprungliga begäran.

Implementera proxyhuvudinställningar i Nginx

För att ställa in dessa rubriker i din Nginx-konfiguration måste du ändra platsblocket i ditt serverblock. Här är ett exempel på hur du kan ställa in dessa rubriker:

server {
    listen 80;
    location / {
        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_pass http://backendserver_address;
    }
}

I den här konfigurationen är $remote_addr och $scheme variabler som Nginx automatiskt fyller med klientens IP-adress respektive begärans schema (HTTP eller HTTPS).

Bästa metoder för proxyhuvuden

När du konfigurerar proxyhuvuden är det viktigt att ta hänsyn till säkerheten och noggrannheten hos den vidarebefordrade informationen. För att förhindra potentiell spoofing, se till att dina backend-servrar är konfigurerade att lita på dessa rubriker endast när de kommer från din Nginx omvänd proxy.

Slutsats

Genom att framgångsrikt konfigurera NGINX som en omvänd proxy kan du optimera din webbinfrastruktur för bättre prestanda, säkerhet och skalbarhet. Övervaka och justera din konfiguration regelbundet för att säkerställa optimal belastningsfördelning och svarstider. Att implementera en omvänd proxy med NGINX ger en robust lösning för att hantera klientförfrågningar och bibehålla hög tillgänglighet för dina webbtjänster.

Joshua James
Följ mig
Senaste inläggen av Joshua James (se alla)

Lämna en kommentar