Annet enn Apache, er Nginx den mest populære webserveren der ute. I tillegg til å være en webserver, kan den også brukes som lastbalanser eller omvendt proxy. I denne opplæringen vil vi vise deg hvordan du kan bruke Nginx som omvendt proxy.
Hva er en omvendt fullmektig?
En proxy-server fungerer som et mellomledd mellom klienten og en annen server. Den henter ressurser fra serveren du vil koble til og sender den til deg for visning. En omvendt proxy fungerer på samme måte, bortsett fra at rollen er omvendt. Når du ber om informasjon fra en server, vil den omvendte proxyen ta tak i forespørselen og sende den til riktig backend-server. Dette tillater systemadministratoren å bruke en server for flere applikasjoner, samt å sikre en jevnere flyt av trafikk mellom klienten og serveren.
Fordeler med omvendt fullmektig
Avhengig av applikasjonen din, kan det hende du bruker forskjellige tilfeller av omvendt proxy.
- En omvendt proxy lar deg kjøre flere applikasjoner på samme server – Hvis du har flere applikasjoner som kjører på samme server, kan de ikke alle lytte til port 80 eller 433 samtidig. Med en omvendt proxy kan du konfigurere den omvendte proxyen for å omdirigere trafikken til individuelle apper etter behov.
- Lastbalansering – Hvis du har flere servere som kjører den samme appen, kan du bruke en omvendt proxy for å distribuere trafikken jevnt til hver server.
- Brannmur for webapplikasjon – Du kan bruke en omvendt proxy for å skjule søknaden din fra offentligheten og også for å filtrere ut spam-IP eller beskytte mot et DDOS-angrep.
- Enkel logging og revisjon – Siden all innkommende trafikk administreres av omvendt proxy, er det lettere å logge og overvåke trafikkflyten.
Konfigurere Nginx som omvendt proxy
For å sette opp Nginx som en omvendt proxy, bruker vi proxy_pass
parameter i Nginx-konfigurasjonsfiler.
Merk: Denne opplæringen forutsetter at du har litt kunnskap om Nginx og allerede har installert og satt opp Nginx på serveren din.
I de fleste brukstilfeller vil Nginx være front-end-serveren, og lytte til port 80 (HTTP) eller 443 (HTTPS) for innkommende forespørsler. Ettersom det bare kan være en tjeneste som lytter til port 80 eller 443, må applikasjonen din lytte til en annen port, som port 8081. Den enkleste konfigurasjonen vil være omtrent slik:
server { listen 80; listen [::]:80; server_name myapp.com; location / { proxy_pass http://localhost:8081/; } }
Dette betyr at alle innkommende forespørsler til myapp.com i port 80 vil bli omdirigert til port 8081.
Avansert oppsett
I tillegg til det proxy_pass
direktiv, er det flere andre direktiver som du kan bruke til et mer avansert oppsett.
proxy_set_header – Dette lar deg sette toppteksten som skal sendes til bakgrunnsappen. Se for eksempel følgende konfigurasjon:
proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Du kan angi den nødvendige proxyoverskriften for å overføre til applikasjonen, slik at den kjenner forespørselens IP og ekstern adresse, og sender ut riktig innhold for forespørselssiden.
tidsavbrudd for proxy – Dette lar deg sette tidsavbruddsverdien for sending og mottak av fullmaktsforespørsler. For eksempel:
proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90;
proxy_buffers – Dette gjør at Nginx midlertidig kan holde svaret til den nærliggende serveren og bare sende til forespørselsserveren etter at den nærliggende serveren er ferdig med å svare. For eksempel:
proxy_buffers 32 4k;
Hvis appen din vil sende en stor del av en fil, vil du kanskje deaktivere proxy_buffers:
proxy_buffering off;
Sammendrag
Som du kan se, er Nginx en dyktig omvendt proxy-server. Det beste med det er at konfigurasjonen er enkel, enkel å bruke og likevel lar deg skalere opp for mer kompliserte scenarier. For mer detalj kan du sjekke ut Dokumentasjon for Nginx proxy-modul eller konfigurasjonseksempler.
Bildekreditt: Omvendt proxy, Omvendt proxy