Nginx

Nginx omvänd proxy

Nginx omvänd proxy

Vad är en omvänd proxy?

En proxyserver är den som pratar med Internet på dina vägnar. Till exempel om ditt kolleges nätverk har blockerat https: // www.Facebook.com / men domänen https: // exempelproxy.com är fortfarande tillgängligt, då kan du besöka det senare och det kommer att vidarebefordra alla dina förfrågningar om Facebook-servrar till Facebook och skicka med svaren från Facebook tillbaka till din webbläsare.

För att sammanfatta skickar en proxy förfrågningar på uppdrag av en av fler klienter till alla servrar ute på Internet. En omvänd proxy beter sig på liknande sätt.

A omvänd proxy tar emot begäran från alla kunder på uppdrag av en eller flera servrar. Så om du har ett par servrar som är värd för ww1.exempel.com och ww2.exempel.com kan en omvänd proxyserver acceptera förfrågningar för de två servrarnas räkning, vidarebefordra dessa förfrågningar till deras respektive slutpunkter där svaret genereras och skickas tillbaka till den omvända proxyen för att vidarebefordras till klienterna.

Upplägget

Innan vi börjar justera Nginx-konfigurationsfiler och göra en omvänd proxyserver. Jag vill sätta i sten hur min inställning ser ut, så när du försöker implementera din design, skulle det vara mindre förvirrande.

Jag använde DigitalOceans plattform för att snurra upp tre VPS. De är alla på samma nätverk, var och en med sin egen privata IP, och endast en VPS har en statisk offentlig IP (detta kommer att vara vår omvända proxyserver.)

VM / värdnamn Privat IP Offentlig IP Roll
Reverseproxy 10.135.123.187 159.89.108.14 Omvänd proxy, kör Nginx
Nod-1 10.135.123.183 Ej tillämpligt Kör första webbplatsen
Nod-2 10.135.123.186 Ej tillämpligt Kör andra webbplats

De två olika webbplatserna som körs har domännamn ww1.ranvirslog.com och ww2.ranvirslog.com och båda deras A-poster pekar på reverseproxys offentliga IP, dvs.e, 159.89.108.14

Tanken bakom privat IP är att de tre virtuella datorerna kan prata med varandra via denna privata IP, men en fjärranvändare kan bara komma åt den omvända proxy-VM vid sin offentliga IP. Detta är viktigt att komma ihåg. Du kan till exempel inte ssh in i någon av den virtuella datorn med sin privata IP.

Dessutom har både Node-1 och Node-2 en Apache-webbserver som serverar två distinkta webbsidor. Detta hjälper oss att skilja varandra från varandra.

Den första webbplatsen säger “WEBSITE 1 FUNGERAR!!!”

På samma sätt visar den andra webbplatsen detta:

Dina webbplatser kan skilja sig, men om du vill replikera den här inställningen som utgångspunkt, kör apt install apache2 på Node-1 och Node-2. Redigera sedan filen / var / www / html / index.html så att webbservern säger vad du vill att den ska säga.

Den omvända virtuella datorn är fortfarande orörd. Alla virtuella datorer kör Ubuntu 18.04 LTS, men du är fri att använda vilket annat operativsystem du vill. Du kan till och med emulera detta med Docker-behållare. Genom att skapa ett användardefinierat Docker bridge-nätverk och lekbehållare på det kan du tilldela varje container en privat IP och vidarebefordra all HTTP / HTTPS-proxy till en container, vilket skulle vara vår Nginx-omvänd proxy-behållare.

Än så länge är allt bra.

Nginx standardkonfiguration

Låt oss börja med att installera Nginx på reverseproxy-servern, jag använder Ubuntu så apt är min pakethanterare:

$ sudo apt installera nginx

Ta bort standardkonfigurationen om du använder Debian-baserad distribution

Innan vi går vidare en liten anteckning om Nginx konfiguration. Alla de olika konfigurationsfilerna lagras i / etc / nginx inklusive nginx.conf-fil som är huvudkonfigurationsfilen. Om vi ​​tittar på innehållet i den här filen (inuti http-blocket) kommer du att märka följande två rader:

..
inkludera / etc / nginx / conf.d / *.conf;
inkludera / etc / nginx / sites-enabled / *;
..

Den andra raden innehåller alla filer i den webbplatsaktiverade katalogen till Nginx-konfigurationen. Detta är standardpraxis för de flesta Debian-baserade distributioner. Standardwebbplatsen "Välkommen till Nginx" har till exempel en motsvarande fil med namnet standard på platsen / etc / nginx / sites-available / default med en symlänk till / etc / nginx / sites-enabled /, men vi behöver inte detta standardwebbsida så att vi säkert kan ta bort symlänken. Originalet är fortfarande tillgängligt i katalogerna som finns på webbplatser.

$ rm / etc / nginx / sites-enabled / default

Men när vi skapar omvänd proxy-konfiguration kommer vi att göra det i conf.d-katalog (med vårt filnamn som har en .conf-förlängning) detta är universellt, och fungerar i alla distributioner, inte bara Debian eller Ubuntu.

Tar bort standardkonfigurationen för andra distros

Om du inte använder Debian-baserad distro hittar du standard Välkomstsida konfiguration vid / etc / nginx / conf.d / standard.conf flytta bara filen till någon plats säker om du vill använda den i framtiden (eftersom detta inte är en symlänk)

$ mv / etc / nginx / conf.d / standard.conf ~ / standard.konf

Det kan ibland hittas i / etc / nginx / default.d eftersom människor bara inte kan komma överens om en enda enkel standard! Så du måste gräva lite i katalogen / etc / nginx för att räkna ut det här.

Lägga till omvänd proxyblock

Som nämnts tidigare är de två olika domännamnen jag är värd bakom denna proxy

  1. ranvirslog.com (WEBBPLATS 1) med IP 10.135.123.183
  2. ranvirslog.com (WEBSITE 2) med IP 10.135.123.186

Så låt oss skapa en fil per webbplats i / etc / nginx / conf.d / mapp. Så vi är välorganiserade.

$ touch / etc / nginx / conf.d / ww1.konf
$ touch / etc / nginx / conf.d / ww2.konf

Du kan namnge filerna vad du vill, så länge det har en .conf i slutet av sitt namn.

I den första filen ww1.conf lägg till följande rader:

server
lyssna 80;
lyssna [::]: 80;
 
server_namn ww1.ranvirslog.com;
 
plats /
proxy_pass http: // 10.135.123.183 /;
proxy_buffering off;
proxy_set_header X-Real-IP $ remote_addr;

Lyssningsuttalandena ber Nginx att lyssna på port 80 för både IPv4- och IPv6-fall. Den kontrollerar sedan om serverns namn är ww1.ranvirslog.com då platsblocket sparkar in och proxys förfrågan till http: // 10.135.123.183 / med buffrad avstängd. Dessutom säkerställer raden proxy_set_header ... att klientens ursprungliga IP vidarebefordras till proxyservern. Detta är till hjälp om du vill beräkna antalet unika besökare osv. Annars skulle proxyservern bara ha en besökare - Nginx-servern.

Buffertalternativet och set_header-alternativen är helt valfria och läggs bara till för att göra proxyserveringen så transparent som möjligt. För ww2.ranvirslog.com-webbplats, jag lade till följande konfiguration på / etc / nginx / conf.d / ww2.conf:

server
lyssna 80;
lyssna [::]: 80;
 
server_namn ww2.ranvirslog.com;
 
plats /
proxy_pass http: // 10.135.123.186 /;
proxy_buffering off;
proxy_set_header X-Real-IP $ remote_addr;

Spara båda filerna och testa om den övergripande konfigurationen är giltig eller inte:

$ sudo nginx -t

Om det finns fel kommer utdata från ovanstående kommando att hjälpa dig att hitta och fixa dem. Starta om servern:

$ service nginx starta om

Och du kan testa om det fungerade eller inte genom att besöka de olika domännamnen i din webbläsare och se resultatet.

Slutsats

Varje individs användningsfall är annorlunda. Konfigurationen som nämns ovan kan behöva lite justering för att fungera för ditt scenario. Kanske kör du flera servrar på samma värd, men i olika portar, i så fall har proxy_pass ... -raden http: // localhost: portNumber / som sitt värde.

Dessa detaljer beror väldigt mycket på ditt användningsfall. För mer information om andra alternativ och inställningar se de officiella Nginx-dokumenten.

Shadow of the Tomb Raider for Linux Tutorial
Shadow of the Tomb Raider är det tolfte tillskottet till Tomb Raider-serien - en action-äventyrsspelfranchise skapad av Eidos Montreal. Spelet mottogs...
Hur man förbättrar FPS i Linux?
FPS står för Bildrutor per sekund. FPS: s uppgift är att mäta bildfrekvensen i videouppspelningar eller spelprestanda. Med enkla ord betecknas antalet...
De bästa Oculus App Lab-spelen
Om du är Oculus-headsetägare måste du vara förtjust i sidoladdning. Sideladdning är processen för att installera icke-butiksinnehåll på ditt headset. ...