Förutom Apache är Nginx den mest populära webbservern som finns tillgänglig. Förutom att vara en webbserver kan den även användas som en lastbalanserare eller omvänd proxy. I den här handledningen kommer Quantrimang.com att visa dig hur du kan använda Nginx som en omvänd proxy.
Vad är en omvänd proxy?
En proxyserver fungerar som en mellanhand mellan en klient och en annan server. Proxyservern hämtar resurser från servern du vill ansluta till och skickar den till dig för visning. En omvänd proxy fungerar på samma sätt, förutom att rollerna är omvända. När du begär information från servern håller den omvända proxyn begäran och skickar den till lämplig backend-server. Detta gör att systemadministratörer kan använda servern för flera applikationer, samt säkerställa ett smidigare trafikflöde mellan klient och server.

Fördelar med omvända fullmakter
Beroende på din applikation kan du ha olika användningsfall för omvänd proxy.
- En omvänd proxy låter dig köra flera applikationer på samma server - Om du har flera applikationer som körs på samma server kan de inte alla "lyssna" samtidigt på port 80 eller 433. Med en omvänd proxy kan du konfigurera den för att omdirigera trafik till enskilda applikationer om det behövs.
- Lastbalansering – Om du har flera servrar som kör samma applikation kan du använda en omvänd proxy för att fördela trafiken jämnt till varje server.
- Webbapplikationsbrandvägg - Du kan använda omvänd proxy för att dölja din applikation och även för att filtrera spam-IP:er eller skydda mot DDOS-attacker .
- Enkel loggning och revision - Eftersom all inkommande trafik hanteras av en omvänd proxy är det lättare att logga och övervaka trafikflöden.
Konfigurera Nginx som en omvänd proxy
För att ställa in Nginx som en omvänd proxy kommer artikeln att använda parametern proxy_pass i Nginx-konfigurationsfilen.
Obs : Denna handledning förutsätter att du har viss kunskap om Nginx och har installerat och konfigurerat Nginx på din server.
I de flesta användningsfall kommer Nginx att vara front-end-servern, "lyssnar" på port 80 (HTTP) eller 443 (HTTPS) för inkommande förfrågningar. Eftersom det bara kan finnas en tjänst som "lyssnar" på port 80 eller 443, måste din applikation "lyssna" på en annan port, till exempel port 8081. Den enklaste konfigurationen kommer att se ut så här:
server {
listen 80;
listen [::]:80;
server_name myapp.com;
location / {
proxy_pass http://localhost:8081/;
}
}
Detta innebär att alla förfrågningar till myapp.com vid port 80 kommer att omdirigeras till port 8081.
Avancerade inställningar
Utöver proxy_pass-direktivet finns det flera andra direktiv som du kan använda för mer avancerade inställningar .
- proxy_set_header - Detta låter dig ställa in en rubrik som ska skickas till bakgrundsapplikationen. Se till exempel följande konfiguration:
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 ställa in de nödvändiga proxyhuvudena för att skickas till applikationen, tala om förfrågans IP-adress och fjärradress och sedan mata ut rätt innehåll till den begärande webbplatsen.
- proxy timeout - Detta låter dig ställa in timeoutvärdet för att skicka och ta emot proxyförfrågningar. Till exempel:
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
- proxy_buffers - Detta tillåter Nginx att tillfälligt hålla proxyserverns svar och bara skicka det till den begärande servern efter att proxyservern slutat svara. Till exempel:
proxy_buffers 32 4k;
Om din applikation skickar ett stort antal filer, kanske du vill inaktivera proxy_buffers:
proxy_buffering off;
Som du kan se är Nginx en omvänd proxyserver som har många användningsområden. Det största pluset med det är att det är enkelt att konfigurera, lätt att använda och fortfarande låter dig skala i mer komplexa scenarier. För mer information kan du se Nginx proxymodulens dokumentation (på https://nginx.org/en/docs/http/ngx_http_proxy_module.html) eller konfigurationsexempel (på https://www .nginx.com/resources/wiki /start/ämnen/exempel/fullständig/).
Hoppas du lyckas.