Sådan opretter du en omvendt proxy i Nginx

NGINX er en alsidig og højtydende webserver, der i vid udstrækning bruges som en omvendt proxyserver. En omvendt proxy er en mellemmand for klientanmodninger, der distribuerer dem til en eller flere backend-servere. Denne opsætning gavner belastningsbalancering, forbedrer sikkerheden og giver høj tilgængelighed. Brug af NGINX som en omvendt proxy kan forbedre skalerbarheden og pålideligheden af ​​dine webtjenester.

Denne vejledning vil demonstrere, hvordan man opretter en omvendt proxy i NGINX og dækker de nødvendige konfigurationstrin for at dirigere klientanmodninger til backend-servere effektivt.

Opret og konfigurer en omvendt proxy i Nginx

Opsætning af en grundlæggende omvendt proxy i Nginx

Først, for at begynde at konfigurere Nginx som en omvendt proxy, skal du åbne Nginx-konfigurationsfilen. Typisk er denne fil placeret på /etc/nginx/nginx.conf. Åbn den med dit foretrukne tekstredigeringsprogram, såsom sudo Nano:

sudo nano /etc/nginx/nginx.conf

Inde i konfigurationsfilen skal du fokusere på http-blokken. Her vil du indsætte en serverblok, hjørnestenen i din omvendte proxy-opsætning. Serverblokken lytter på en specificeret port, normalt port 80, efter HTTP-trafik. Inden for denne blok fortæller placeringen/direktivet Nginx, hvordan man håndterer indgående anmodninger. Brug proxy_pass-direktivet til at omdirigere disse anmodninger til backend-serveren, angivet af dens IP-adresse eller værtsnavn.

For eksempel kan konfigurationen se sådan ud:

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

Husk at erstatte backendserver_address med den faktiske adresse på din backend-server. Denne enkle opsætning fortæller Nginx at videresende alle indgående HTTP-anmodninger til den angivne backend-server.

Avanceret omvendt proxy-konfiguration i Nginx

I en mere avanceret opsætning vil du måske konfigurere yderligere aspekter af den omvendte proxy. Dette kan omfatte indstillinger for belastningsbalancering, SSL-afslutning eller cachelagring.

Implementering af belastningsbalancering

Hvis du betjener flere backend-servere, kan Nginx fordele indgående trafik blandt dem, hvilket forbedrer ydeevnen og pålideligheden. Til belastningsbalancering vil du ændre proxy_pass-direktivet til at pege på en gruppe af servere defineret i en opstrømsblok. For eksempel:

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

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

Denne konfiguration tillader Nginx at afbalancere belastningen mellem backend1.example.com og backend2.example.com.

Konfiguration af SSL-terminering

For SSL-afslutning skal du sørge for, at serverblokken lytter på port 443 og inkludere SSL-certifikatet og nøglefilplaceringerne. Konfigurationen kan ligne:

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

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

Denne opsætning gør det muligt for Nginx at håndtere SSL-forbindelser og dekryptere anmodninger, før de videregives til backend-servere.

Færdiggørelse af ændringer

Efter konfiguration af Nginx, test konfigurationen for syntaksfejl med:

nginx -t

Hvis testen består, genindlæs Nginx for at anvende ændringerne ved hjælp af:

sudo systemctl reload nginx

Dette trin sikrer, at dine ændringer træder i kraft uden at afbryde de nuværende forbindelser.

Yderligere læring: Opsætning af Nginx Proxy Header-værdier

Når du konfigurerer Nginx som en omvendt proxy, er det vigtigt at indstille proxy-headerværdier korrekt. Disse overskrifter er afgørende for at formidle de originale klientanmodningsdetaljer til backend-serverne. Disse oplysninger kan omfatte klientens IP-adresse, anmodningens originale protokol og mere. Korrekt indstilling af disse overskrifter sikrer, at backend-serverne har den kontekst, de har brug for, for at svare korrekt på anmodninger.

Forståelse af proxy-headere

Proxy-headere er essentielle i en omvendt proxy-opsætning, da de indeholder oplysninger om klientens oprindelige anmodning. Disse oplysninger er nødvendige for, at backend-servere kan træffe informerede beslutninger om håndtering af indgående anmodninger. For eksempel kan det være vigtigt at kende klientens originale IP-adresse til logning, analyse eller sikkerhedsformål.

Almindelige proxy-header-konfigurationer

Nogle af de almindelige proxy-headere, som du kan konfigurere i Nginx, inkluderer:

  • X-Real-IP: Denne header bruges til at videregive den originale klients IP-adresse til backend-serveren.
  • X-Forwarded-For: Svarende til X-Real-IP, indeholder denne overskrift en liste over alle de servere, som anmodningen har gennemløbet, inklusive klientens IP.
  • X-Forwarded-Proto: Denne header angiver den protokol (HTTP eller HTTPS), der blev brugt i klientens oprindelige anmodning.

Implementering af proxy-headerindstillinger i Nginx

For at indstille disse overskrifter i din Nginx-konfiguration skal du ændre lokationsblokken i din serverblok. Her er et eksempel på, hvordan du kan indstille disse overskrifter:

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 denne konfiguration er $remote_addr og $scheme variabler, som Nginx automatisk udfylder med henholdsvis klientens IP-adresse og anmodningens skema (HTTP eller HTTPS).

Bedste praksis for proxy-headere

Når du konfigurerer proxy-headers, er det vigtigt at overveje sikkerheden og nøjagtigheden af ​​de videresendte oplysninger. For at forhindre potentiel spoofing skal du sørge for, at dine backend-servere er konfigureret til kun at stole på disse headere, når de kommer fra din Nginx reverse proxy.

Konklusion

Ved at konfigurere NGINX som en omvendt proxy, kan du optimere din webinfrastruktur for bedre ydeevne, sikkerhed og skalerbarhed. Overvåg og juster din konfiguration regelmæssigt for at sikre optimal belastningsfordeling og responstider. Implementering af en omvendt proxy med NGINX giver en robust løsning til håndtering af klientanmodninger og opretholdelse af høj tilgængelighed for dine webtjenester.

Joshua James
Følg mig
Seneste indlæg af Joshua James (se alt)

Skriv en kommentar