Naast Apache is Nginx de populairste webserver die beschikbaar is. Naast dat het een webserver is, kan het ook worden gebruikt als load balancer of reverse proxy. In deze tutorial laat Quantrimang.com zien hoe je Nginx als reverse proxy kunt gebruiken.
Wat is een omgekeerde proxy?
Een proxyserver fungeert als tussenpersoon tussen een client en een andere server. De proxyserver haalt bronnen op van de server waarmee u verbinding wilt maken en stuurt deze naar u ter inzage. Een reverse proxy werkt op dezelfde manier, behalve dat de rollen omgedraaid zijn. Wanneer u informatie opvraagt bij de server, houdt de reverse proxy het verzoek vast en stuurt dit naar de juiste backend-server. Hierdoor kunnen systeembeheerders de server voor meerdere toepassingen gebruiken en wordt een soepelere verkeersstroom tussen client en server gegarandeerd.

Voordelen van omgekeerde proxy's
Afhankelijk van uw toepassing kunt u verschillende gebruiksscenario's voor omgekeerde proxy's hebben.
- Met een reverse proxy kunt u meerdere applicaties op dezelfde server draaien . Als u meerdere applicaties op dezelfde server heeft draaien, kunnen ze niet allemaal tegelijkertijd “luisteren” op poort 80 of 433. Met een reverse proxy kunt u deze configureren om verkeer indien nodig om te leiden naar individuele applicaties.
- Taakverdeling - Als u meerdere servers heeft waarop dezelfde applicatie draait, kunt u een reverse proxy gebruiken om het verkeer gelijkmatig over elke server te verdelen.
- Firewall voor webapplicaties - U kunt een reverse proxy gebruiken om uw applicatie te verbergen en ook om spam-IP's te filteren of om u te beschermen tegen DDOS-aanvallen .
- Gemakkelijk loggen en controleren - Omdat al het binnenkomende verkeer wordt beheerd door een reverse proxy, is het eenvoudiger om verkeersstromen te loggen en te controleren.
Configureer Nginx als een omgekeerde proxy
Om Nginx in te stellen als een omgekeerde proxy, gebruikt het artikel de parameter proxy_pass in het Nginx-configuratiebestand.
Opmerking : in deze tutorial wordt ervan uitgegaan dat u enige kennis van Nginx hebt en dat u Nginx op uw server hebt geïnstalleerd en ingesteld.
In de meeste gevallen zal Nginx de front-end server zijn, die “luistert” naar poort 80 (HTTP) of 443 (HTTPS) voor inkomende verzoeken. Omdat er maar één dienst kan ‘luisteren’ op poort 80 of 443, zal uw applicatie moeten ‘luisteren’ op een andere poort, zoals poort 8081. De eenvoudigste configuratie ziet er als volgt uit:
server {
listen 80;
listen [::]:80;
server_name myapp.com;
location / {
proxy_pass http://localhost:8081/;
}
}
Dit betekent dat alle verzoeken aan myapp.com op poort 80 worden doorgestuurd naar poort 8081.
Geavanceerde instellingen
Naast de proxy_pass richtlijn zijn er verschillende andere richtlijnen die u kunt gebruiken voor meer geavanceerde instellingen.
- proxy_set_header - Hiermee kunt u een header instellen die naar de achtergrondtoepassing wordt verzonden. Zie bijvoorbeeld de volgende configuratie:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
U kunt de benodigde proxyheaders instellen om door te geven aan de applicatie, het IP-adres van het verzoek en het externe adres opgeven en vervolgens de juiste inhoud naar de aanvragende website uitvoeren.
- proxy time-out - Hiermee kunt u de time-outwaarde instellen voor het verzenden en ontvangen van proxyverzoeken. Bijvoorbeeld:
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
- proxy_buffers - Hierdoor kan Nginx het antwoord van de proxyserver tijdelijk vasthouden en dit pas naar de verzoekende server sturen nadat de proxyserver klaar is met reageren. Bijvoorbeeld:
proxy_buffers 32 4k;
Als uw toepassing een groot aantal bestanden verzendt, wilt u wellicht proxy_buffers uitschakelen:
proxy_buffering off;
Zoals je kunt zien, is Nginx een reverse proxy-server die veel toepassingen heeft. Het grootste pluspunt is dat het eenvoudig te configureren en te gebruiken is en dat je nog steeds kunt schalen in complexere scenario's. Voor meer details kunt u de documentatie van de Nginx-proxymodule bekijken (op https://nginx.org/en/docs/http/ngx_http_proxy_module.html) of configuratievoorbeelden (op https://www.nginx.com/resources/wiki /start/onderwerpen/voorbeelden/volledig/).
Ik hoop dat je succesvol bent.