Hoe u een omgekeerde proxy maakt in Nginx

NGINX is een veelzijdige en krachtige webserver die veel wordt gebruikt als reverse proxy-server. Een reverse proxy is een tussenpersoon voor clientverzoeken en distribueert deze naar een of meer backend-servers. Deze opstelling komt de taakverdeling ten goede, verbetert de beveiliging en biedt hoge beschikbaarheid. Het gebruik van NGINX als reverse proxy kan de schaalbaarheid en betrouwbaarheid van uw webservices verbeteren.

Deze handleiding demonstreert hoe u een reverse proxy in NGINX kunt maken en behandelt de noodzakelijke configuratiestappen om clientverzoeken efficiënt naar backend-servers te routeren.

Creëer en configureer een reverse proxy in Nginx

Een eenvoudige reverse proxy instellen in Nginx

Om te beginnen met het configureren van Nginx als een omgekeerde proxy, opent u eerst het Nginx-configuratiebestand. Normaal gesproken bevindt dit bestand zich in /etc/nginx/nginx.conf. Open het met de teksteditor van uw voorkeur, zoals het gebruik van sudo Nano:

sudo nano /etc/nginx/nginx.conf

Focus in het configuratiebestand op het http-blok. Hier voegt u een serverblok in, de hoeksteen van uw reverse proxy-installatie. Het serverblok luistert op een opgegeven poort, meestal poort 80, naar HTTP-verkeer. Binnen dit blok vertelt de locatie/richtlijn Nginx hoe binnenkomende verzoeken moeten worden afgehandeld. Gebruik de proxy_pass-instructie om deze verzoeken om te leiden naar de backend-server, gespecificeerd door het IP-adres of de hostnaam.

De configuratie kan er bijvoorbeeld als volgt uitzien:

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

Vergeet niet om backendserver_address te vervangen door het daadwerkelijke adres van uw backend-server. Deze eenvoudige installatie vertelt Nginx om alle inkomende HTTP-verzoeken door te sturen naar de opgegeven backend-server.

Geavanceerde reverse proxy-configuratie in Nginx

In een meer geavanceerde configuratie wilt u mogelijk aanvullende aspecten van de omgekeerde proxy configureren. Dit kunnen instellingen zijn voor taakverdeling, SSL-beëindiging of caching.

Implementeren van taakverdeling

Als u meerdere backend-servers gebruikt, kan Nginx inkomend verkeer onderling verdelen, waardoor de prestaties en betrouwbaarheid worden verbeterd. Voor taakverdeling wijzigt u de proxy_pass-instructie zodat deze verwijst naar een groep servers die in een upstream-blok is gedefinieerd. Bijvoorbeeld:

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

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

Met deze configuratie kan Nginx de belasting verdelen tussen backend1.example.com en backend2.example.com.

SSL-beëindiging configureren

Zorg er bij SSL-beëindiging voor dat het serverblok op poort 443 luistert en vermeld het SSL-certificaat en de sleutelbestandslocaties. De configuratie kan er als volgt uitzien:

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

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

Met deze configuratie kan Nginx SSL-verbindingen afhandelen en verzoeken decoderen voordat ze worden doorgegeven aan backend-servers.

Wijzigingen finaliseren

Test na het configureren van Nginx de configuratie op syntaxisfouten met:

nginx -t

Als de test slaagt, laadt u Nginx opnieuw om de wijzigingen toe te passen met behulp van:

sudo systemctl reload nginx

Deze stap zorgt ervoor dat uw wijzigingen van kracht worden zonder de huidige verbindingen te onderbreken.

Aanvullend leren: Nginx Proxy Header-waarden instellen

Bij het configureren van Nginx als een reverse proxy is het belangrijk om de proxy-headerwaarden correct in te stellen. Deze headers zijn cruciaal voor het overbrengen van de oorspronkelijke klantverzoekgegevens naar de backend-servers. Deze informatie kan het IP-adres van de client, het oorspronkelijke protocol van het verzoek en meer omvatten. Het correct instellen van deze headers zorgt ervoor dat de backend-servers de context hebben die ze nodig hebben om op de juiste manier op verzoeken te reageren.

Proxyheaders begrijpen

Proxyheaders zijn essentieel bij het instellen van een omgekeerde proxy, omdat ze informatie over het oorspronkelijke verzoek van de client bevatten. Deze informatie is nodig voor backend-servers om weloverwogen beslissingen te nemen over de afhandeling van inkomende verzoeken. Het kennen van het oorspronkelijke IP-adres van de klant kan bijvoorbeeld belangrijk zijn voor log-, analyse- of beveiligingsdoeleinden.

Algemene proxy-headerconfiguraties

Enkele veel voorkomende proxyheaders die u in Nginx kunt configureren zijn:

  • X-Real-IP: Deze header wordt gebruikt om het IP-adres van de oorspronkelijke client door te geven aan de backend-server.
  • X-Forwarded-For: Gelijkwaardig aan X-Real-IP, bevat deze header een lijst met alle servers waar het verzoek doorheen is gegaan, inclusief het IP-adres van de klant.
  • X-Forwarded-Proto: deze header geeft het protocol (HTTP of HTTPS) aan dat is gebruikt in het oorspronkelijke verzoek van de client.

Implementatie van proxy-headerinstellingen in Nginx

Om deze headers in uw Nginx-configuratie in te stellen, moet u het locatieblok binnen uw serverblok wijzigen. Hier is een voorbeeld van hoe u deze headers kunt instellen:

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;
    }
}

In deze configuratie zijn $remote_addr en $scheme variabelen die Nginx automatisch vult met respectievelijk het IP-adres van de client en het schema van het verzoek (HTTP of HTTPS).

Best practices voor proxyheaders

Bij het configureren van proxyheaders is het belangrijk om rekening te houden met de veiligheid en nauwkeurigheid van de doorgestuurde informatie. Om mogelijke spoofing te voorkomen, moet u ervoor zorgen dat uw backend-servers zijn geconfigureerd om deze headers alleen te vertrouwen als ze afkomstig zijn van uw Nginx reverse proxy.

Conclusie

Door NGINX succesvol te configureren als een reverse proxy, kunt u uw webinfrastructuur optimaliseren voor betere prestaties, beveiliging en schaalbaarheid. Controleer uw configuratie regelmatig en pas deze aan om een ​​optimale belastingverdeling en responstijden te garanderen. Het implementeren van een reverse proxy met NGINX biedt een robuuste oplossing voor het beheren van klantverzoeken en het handhaven van hoge beschikbaarheid voor uw webservices.

Joshua James
Volg mij
Laatste berichten van Joshua James (alles zien)

Plaats een reactie