Nginx

Povratni proxy Nginx

Povratni proxy Nginx

Kaj je povratni proxy?

Proxy strežnik je tisti, ki v vašem imenu govori z internetom. Če je na primer omrežje vašega kolegija blokiralo https: // www.facebook.com / ampak domena https: // exampleproxy.com še vedno dostopen, potem lahko slednjega obiščete in bo vse vaše zahteve za strežnike Facebook posredoval Facebooku, odgovore z Facebooka pa poslal v vaš brskalnik.

Če povzamemo, posrednik pošlje zahteve v imenu enega ali več odjemalcev katerim koli strežnikom v internetu. Povratni proxy se obnaša na podoben način.

A povratni proxy prejme zahtevo katere koli in vseh strank v imenu ene ali več strank strežnikov. Torej, če imate nekaj strežnikov, ki gostijo ww1.primer.com in ww2.primer.com lahko obratni strežnik proxy sprejema zahteve v imenu obeh strežnikov, jih posreduje njihovim končnim točkam, kjer se generira odgovor in pošlje nazaj povratnemu strežniku proxy, da se posreduje nazaj strankam.

Postavitev

Preden začnemo popravljati konfiguracijske datoteke Nginx in naredimo obratni proxy strežnik. Želim postaviti v kamen, kako izgleda moja postavitev, tako da bi bilo, ko bi poskušali uresničiti svoj načrt, manj zmedeno.

S platformo DigitalOcean sem zasukal tri VPS. Vsi so v istem omrežju, vsak ima svoj zasebni IP, samo en VPS pa ima statični javni IP (to bo naš obratni proxy strežnik.)

VM / ime gostitelja Zasebni IP Javni IP Vloga
Povratni proxy 10.135.123.187 159.89.108.14 Povratni proxy, zagon Nginxa
Vozlišče-1 10.135.123.183 N / A Zagon prve spletne strani
Vozlišče-2 10.135.123.186 N / A Zagon druge spletne strani

Dve različni spletni strani, ki se izvajata, imata domenski imeni ww1.ranvirslog.com in ww2.ranvirslog.com in oba njihova zapisa A kažeta na javni IP obratnega proxyja, tj.e, 159.89.108.14

Ideja zasebnega IP-ja je, da se lahko trije VM-ji med seboj pogovarjajo prek tega zasebnega IP-ja, vendar lahko oddaljeni uporabnik dostopa samo do povratne proxy VM na svojem javnem IP. To je pomembno upoštevati. Na primer, s svojim zasebnim IP-jem ne morete shraniti nobene VM.

Poleg tega imata Node-1 in Node-2 spletni strežnik Apache, ki streže dve različni spletni strani. To nam bo pomagalo razlikovati eno od druge.

Na prvem spletnem mestu piše »SPLETNA STRAN 1 DELUJE!!!"

Podobno to kaže tudi drugo spletno mesto:

Vaša spletna mesta se lahko razlikujejo, če pa želite to nastavitev ponoviti kot izhodišče, zaženite apt install apache2 na Node-1 in Node-2. Nato uredite datoteko / var / www / html / index.html, tako da spletni strežnik pove vse, kar želite.

VM reverseproxy je še vedno nedotaknjen. Vsi VM-ji imajo Ubuntu 18.04 LTS, vendar lahko uporabljate kateri koli drug OS, ki ga želite. To lahko celo posnemate z Dockerjevimi vsebniki. Z ustvarjanjem uporabniško določenega Dockerjevega mostnega omrežja in drstitvijo vsebnikov na njem lahko vsakemu vsebniku dodelite zasebni IP in posredujete ves proxy HTTP / HTTPS v en vsebnik, ki bi bil naš povratni posredniški vsebnik Nginx.

Zaenkrat dobro.

Privzeta konfiguracija Nginxa

Začnimo z namestitvijo Nginxa na reverseproxy strežnik, jaz uporabljam Ubuntu, zato je apt moj upravitelj paketov:

$ sudo apt namestite nginx

Odstranjevanje privzete konfiguracije, če uporabljate distribucijo, ki temelji na Debianu

Preden nadaljujemo, še majhno opombo o konfiguraciji Nginxa. Vse različne konfiguracijske datoteke so shranjene v / etc / nginx, vključno z nginx.conf, ki je glavna konfiguracijska datoteka. Če pogledamo vsebino te datoteke (znotraj bloka http), boste opazili naslednji dve vrstici:

..
vključi / etc / nginx / conf.d / *.conf;
vključi / etc / nginx / sites-enabled / *;
..

Druga vrstica vključuje vse datoteke v imeniku z omogočenimi spletnimi mesti v konfiguraciji Nginxa. To je običajna praksa pri večini distribucij, ki temeljijo na Debianu. Na primer privzeta spletna stran »Dobrodošli v Nginxu« ima ustrezno datoteko z imenom privzeto na lokaciji / etc / nginx / sites-available / default s simbolično povezavo do / etc / nginx / sites-enabled /, vendar tega ne potrebujemo privzeta spletna stran, da lahko varno odstranimo simbolno povezavo. Izvirnik je še vedno na voljo na spletnem mestu, ki je na voljo.

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

Ko pa bomo ustvarili obratno konfiguracijo proxyja, bomo to storili v conf.d imenik (z imenom datoteke, ki ima .podaljšek conf) to je univerzalno, in deluje v vseh distribucijah, ne samo v Debianu ali Ubuntuju.

Odstranjevanje privzete konfiguracije za druge distro

Če ne uporabljate distribucije na osnovi Debiana, boste našli privzeto Dobrodošlica konfiguracija na / etc / nginx / conf.d / privzeto.conf samo premaknite datoteko na varno mesto, če jo želite uporabljati v prihodnosti (ker to ni simbolna povezava)

$ mv / etc / nginx / conf.d / privzeto.conf ~ / privzeto.conf

Včasih ga najdete v / etc / nginx / default.d, ker se ljudje preprosto ne morejo dogovoriti za en sam preprost standard! Torej bi morali malo kopati po imeniku / etc / nginx, da bi to ugotovili.

Dodajanje povratnih blokov proxy

Kot že rečeno, sta dve različni domenski imeni, ki jo gostim za tem posrednikom

  1. ranvirslog.com (SPLETNA STRAN 1) z IP 10.135.123.183
  2. ranvirslog.com (SPLETNA STRAN 2) z IP 10.135.123.186

Ustvarimo torej eno datoteko na spletno mesto v / etc / nginx / conf.d / mapo. Tako smo dobro organizirani.

$ touch / etc / nginx / conf.d / w1.conf
$ touch / etc / nginx / conf.d / w2.conf

Datoteke lahko poimenujete, kakor koli želite, če ima .conf na koncu imena.

V prvi datoteki ww1.conf dodajte naslednje vrstice:

strežnik
poslušaj 80;
poslušaj [::]: 80;
 
ime_strežnika ww1.ranvirslog.com;
 
lokacija /
proxy_pass http: // 10.135.123.183 /;
proxy_buffering off;
proxy_set_header X-Real-IP $ remote_addr;

Stavki listen Nginxu sporočajo, naj posluša na vratih 80 za primere IPv4 in IPv6. Nato preveri, ali je ime_strežnika ww1.ranvirslog.com, nato lokacijski blok sproži in posreduje zahtevo na http: // 10.135.123.183 / z izklopljenim medpomnjenjem. Poleg tega vrstica proxy_set_header… zagotavlja, da se odjemalčev prvotni IP posreduje posredovanemu strežniku. To je koristno, če želite izračunati število edinstvenih obiskovalcev itd. V nasprotnem primeru bi imel strežnik proxy samo enega obiskovalca - strežnik Nginx.

Možnosti medpomnjenja in možnosti set_header sta popolnoma neobvezni in sta dodani samo, da bo proxy čim bolj pregleden. Za ww2.ranvirslog.com, sem na / etc / nginx / conf dodal naslednjo konfiguracijo.d / w2.conf:

strežnik
poslušaj 80;
poslušaj [::]: 80;
 
ime_strežnika ww2.ranvirslog.com;
 
lokacija /
proxy_pass http: // 10.135.123.186 /;
proxy_buffering off;
proxy_set_header X-Real-IP $ remote_addr;

Shranite obe datoteki in preizkusite, ali je celotna konfiguracija veljavna ali ne:

$ sudo nginx -t

Če obstajajo napake, vam bo zgornji ukaz pomagal najti in jih odpraviti. Zdaj znova zaženite strežnik:

$ service nginx znova zaženite

In lahko preverite, ali je delovalo ali ne, tako da obiščete različna imena domen v brskalniku in vidite rezultat.

Zaključek

Primer uporabe vsakega posameznika je drugačen. Zgoraj omenjena konfiguracija bo morda potrebovala nekaj sprememb, da bo delovala za vaš scenarij. Mogoče uporabljate več strežnikov na istem gostitelju, vendar na različnih vratih, v tem primeru bo vrstica proxy_pass ... imela za vrednost http: // localhost: portNumber /.

Te podrobnosti so zelo odvisne od vašega primera uporabe. Za več podrobnosti o drugih možnostih in nastavitvah glejte uradne dokumente Nginx.

Kako prenesti in igrati Sid Meier's Civilization VI v Linuxu
Uvod v igro Civilization 6 je sodoben pogled na klasični koncept, uveden v seriji iger Age of Empires. Ideja je bila dokaj preprosta; začeli bi v zelo...
Kako namestiti in igrati Doom v Linuxu
Uvod v Doom Serija Doom je nastala v devetdesetih letih po izidu prvotnega Dooma. Bil je takojšen hit in od takrat naprej je serija iger prejela števi...
Vulkan za uporabnike Linuxa
Z vsako novo generacijo grafičnih kart vidimo, da razvijalci iger premikajo meje grafične zvestobe in se približujejo fotorealizmu. A kljub vsem kredi...