Nginx

Nginx omvendt proxy

Nginx omvendt proxy

Hvad er en omvendt proxy?

En proxyserver er den, der taler til Internettet på dine vegne. For eksempel, hvis dit kolleges netværk har blokeret https: // www.Facebook.com / men domænet https: // eksempelproxy.com er stadig tilgængelig, så kan du besøge sidstnævnte, og det videresender alle dine anmodninger om Facebook-servere til Facebook og sender svarene fra Facebook tilbage til din browser.

For at resumere sender en proxy anmodninger på vegne af en af ​​flere klienter til alle servere ude på Internettet. En omvendt proxy opfører sig på samme måde.

EN omvendt proxy modtager anmodning fra alle klienter på vegne af en eller flere servere. Så hvis du har et par servere, der hoster ww1.eksempel.com og ww2.eksempel.com en omvendt proxyserver kan acceptere anmodninger på vegne af de to servere, videresende disse anmodninger til deres respektive slutpunkter, hvor svaret genereres og sendes tilbage til den omvendte proxy for at blive videresendt tilbage til klienterne.

Opsætningen

Før vi begynder at tilpasse Nginx-konfigurationsfiler og lave en omvendt proxyserver. Jeg vil sætte i sten, hvordan min opsætning ser ud, så når du prøver at implementere dit design dig, ville det være mindre forvirrende.

Jeg brugte DigitalOceans platform til at spinde op til tre VPS. De er alle på samme netværk hver med sin egen private IP, og kun en VPS har en statisk offentlig IP (dette vil være vores omvendte proxyserver.)

VM / værtsnavn Privat IP Offentlig IP Rolle
Reverseproxy 10.135.123.187 159.89.108.14 Omvendt proxy, der kører Nginx
Node-1 10.135.123.183 Ikke relevant Kører første websted
Node-2 10.135.123.186 Ikke relevant Kører andet websted

De to forskellige websteder, der kører, har domænenavne ww1.ranvirslog.com og 2. verdenskrig.ranvirslog.com og begge deres A-poster peger på reverseproxys offentlige IP, dvs.e, 159.89.108.14

Ideen bag privat IP er, at de tre virtuelle computere kan tale med hinanden via denne private IP, men en fjernbruger kan kun få adgang til den omvendte proxy-VM på sin offentlige IP. Dette er vigtigt at huske på. For eksempel kan du ikke ssh ind i nogen af ​​den virtuelle computer ved hjælp af dens private IP.

Desuden har både Node-1 og Node-2 en Apache-webserver, der serverer to forskellige websider. Dette vil hjælpe os med at skelne hinanden fra hinanden.

Den første webside siger “WEBSITE 1 WORKS!!!”

Tilsvarende viser det andet websted dette:

Dine websteder kan variere, men hvis du vil replikere denne opsætning som udgangspunkt, skal du køre apt install apache2 på Node-1 og Node-2. Rediger derefter filen / var / www / html / index.html, så webserveren siger, hvad du vil have det til at sige.

Den reverseproxy VM er stadig uberørt. Alle virtuelle computere kører Ubuntu 18.04 LTS, men du er fri til at bruge ethvert andet operativsystem, du ønsker. Du kan endda efterligne dette ved hjælp af Docker-containere. Ved at oprette et brugerdefineret Docker bridge-netværk og gydebeholdere på det kan du tildele hver container en privat IP og videresende al HTTP / HTTPS-proxyen til en container, hvilket ville være vores Nginx-omvendte proxy-container.

Så langt så godt.

Nginx standardkonfiguration

Lad os begynde med at installere Nginx til reverseproxy-serveren, jeg bruger Ubuntu, så apt er min pakkehåndtering:

$ sudo apt installere nginx

Fjernelse af standardkonfiguration, hvis du bruger Debian-baseret distribution

Før vi går videre en lille note om Nginxs konfiguration. Alle de forskellige konfigurationsfiler er gemt i / etc / nginx inklusive nginx.conf-fil, som er den vigtigste konfigurationsfil. Hvis vi ser på indholdet af denne fil (inde i http-blok), vil du bemærke følgende to linjer:

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

Den anden linje inkluderer alle filerne i det sted-aktiverede bibliotek til Nginxs konfiguration. Dette er standardpraksis for de fleste Debian-baserede distributioner. For eksempel har standard "Velkommen til Nginx" -websiden en tilsvarende fil med navnet standard på placeringen / etc / nginx / sites-available / default med et symlink til / etc / nginx / sites-enabled /, men vi har ikke brug for dette standardwebside, så vi sikkert kan fjerne symlinket. Originalen er stadig tilgængelig i biblioteket, der er tilgængelig.

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

Men når vi opretter reverse proxy-konfiguration, gør vi det i conf.d-katalog (hvor vores filnavn har en .conf udvidelse) dette er universelt, og fungerer på tværs af alle distributioner, ikke kun Debian eller Ubuntu.

Fjernelse af standardkonfiguration for andre distroer

Hvis du ikke bruger Debian-baseret distro, finder du standard Velkomstside konfiguration ved / etc / nginx / conf.d / standard.conf skal du bare flytte filen til et sikkert sted, hvis du vil bruge den i fremtiden (da dette ikke er et symlink)

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

Det kan nogle gange findes i / etc / nginx / default.d fordi folk bare ikke kan være enige om en enkelt enkel standard! Så du bliver nødt til at grave lidt i / etc / nginx-biblioteket for at finde ud af dette.

Tilføjelse af omvendte proxyblokke

Som nævnt før er de to forskellige domænenavne, jeg er vært bag denne proxy

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

Så lad os oprette en fil pr. Websted i / etc / nginx / conf.d / mappe. Så vi er velorganiserede.

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

Du kan navngive filerne, hvad du vil, så længe den har en .conf i slutningen af ​​navnet.

I den første fil ww1.conf tilføj følgende linjer:

server
lyt 80;
lyt [::]: 80;
 
servernavn ww1.ranvirslog.com;
 
Beliggenhed /
proxy_pass http: // 10.135.123.183 /;
proxy_buffering off;
proxy_set_header X-Real-IP $ remote_addr;

Lytteudsagnene fortæller Nginx at lytte på port 80 til både IPv4- og IPv6-sager. Derefter kontrolleres det, om servernavnet er ww1.ranvirslog.com derefter placeringsblokken sparker ind og proxyserer anmodningen til http: // 10.135.123.183 / med buffering slået fra. Desuden sikrer proxy_set_header… linjen, at klientens originale IP videresendes til den proxiserede server. Dette er nyttigt, hvis du vil beregne antallet af unikke besøgende osv. Ellers ville den proxiserede server kun have en besøgende - Nginx-serveren.

Buffermuligheden og set_header-indstillingerne er helt valgfri og tilføjes bare for at gøre proxyen så gennemsigtig som muligt. Til ww2.ranvirslog.com-websted tilføjede jeg følgende konfiguration på / etc / nginx / conf.d / ww2.conf:

server
lyt 80;
lyt [::]: 80;
 
servernavn ww2.ranvirslog.com;
 
Beliggenhed /
proxy_pass http: // 10.135.123.186 /;
proxy_buffering off;
proxy_set_header X-Real-IP $ remote_addr;

Gem begge filerne, og test, om den overordnede konfiguration er gyldig eller ej:

$ sudo nginx -t

Hvis der er fejl, vil output fra ovenstående kommando hjælpe dig med at finde og rette dem. Genstart nu serveren:

$ service nginx genstart

Og du kan teste, om det fungerede eller ikke ved at besøge de forskellige domænenavne i din browser og se resultatet.

Konklusion

Hver enkelt persons brugstilfælde er forskellig. Ovennævnte konfiguration kan have brug for en smule finjustering for at fungere efter dit scenario. Måske kører du flere servere på den samme vært, men i forskellige porte, i så fald har proxy_pass… -linjen http: // localhost: portNumber / som sin værdi.

Disse detaljer afhænger meget af din brugssag. For yderligere oplysninger om andre muligheder og tuneables se de officielle Nginx-dokumenter.

Sådan bruges GameConqueror Cheat Engine i Linux
Artiklen dækker en vejledning om brug af GameConqueror-snydemotoren i Linux. Mange brugere, der spiller spil på Windows, bruger ofte "Cheat Engine" -a...
Bedste spilkonsolemulatorer til Linux
Denne artikel viser en liste over populære spilkonsolemuleringssoftware, der er tilgængelig til Linux. Emulation er et softwarekompatibilitetslag, der...
Bedste Linux Distros til spil i 2021
Linux-operativsystemet er kommet langt fra dets originale, enkle, serverbaserede udseende. Dette operativsystem er forbedret enormt i de senere år og ...