Nginx

„Nginx“ atvirkštinis tarpinis serveris

„Nginx“ atvirkštinis tarpinis serveris

Kas yra atvirkštinis įgaliojimas?

Tarpinis serveris yra tas, kuris jūsų vardu kalba su internetu. Pvz., Jei jūsų kolegijos tinklas užblokavo https: // www.Facebook.lt / bet domenas https: // exampleproxy.„com“ vis dar pasiekiama, tada galite apsilankyti pastarajame, ir jis persiųs visus jūsų „Facebook“ serverių prašymus „Facebook“ ir „Facebook“ atsakymus atsiųs atgal į jūsų naršyklę.

Apibendrinant, tarpinis serveris siunčia užklausas vieno iš daugiau klientų vardu į bet kuriuos interneto serverius. Atvirkštinis įgaliotinis elgiasi panašiai.

A atvirkštinis įgaliojimas gauna užklausą iš bet kurio kliento vieno ar daugiau klientų vardu serveriai. Taigi, jei turite porą serverių, kuriuose yra ww1.pavyzdys.com ir w2.pavyzdys.lt atvirkštinis tarpinis serveris gali priimti užklausas abiejų serverių vardu, persiųsti užklausas atitinkamiems jų galutiniams taškams, kur generuojamas atsakymas, ir išsiųsti atgaliniam atvirajam tarpiniam serveriui, kad jie būtų persiųsti atgal klientams.

Nustatyta

Prieš pradėdami keisti Nginx konfigūracijos failus ir sukurti atvirkštinį tarpinį serverį. Noriu užmesti akmenį, kaip atrodo mano sąranka, taigi, kai bandote įgyvendinti savo dizainą, tai būtų mažiau painu.

Aš panaudojau „DigitalOcean“ platformą, kad sukčiau tris VPS. Jie visi yra tame pačiame tinkle, kiekvienas turi savo privatų IP ir tik vienas VPS turi statinį viešąjį IP (tai bus mūsų atvirkštinis tarpinis serveris.)

VM / pagrindinio kompiuterio vardas Privatus IP Viešasis IP Vaidmuo
Reverseproksija 10.135.123.187 159.89.108.14 Atvirkštinis tarpinis serveris, vykdantis „Nginx“
Mazgas-1 10.135.123.183 Nėra Veikia pirmoji svetainė
Mazgas-2 10.135.123.186 Nėra Veikia antroji svetainė

Dvi skirtingos veikiančios svetainės turi domenų vardus w1.ranvirslog.com ir WW2.ranvirslog.com ir abu jų A įrašai rodo atvirkštinio protekso viešą IP, t.e, 159.89.108.14

Privataus IP idėja yra ta, kad trys VM gali kalbėtis tarpusavyje per šį privatų IP, tačiau nuotolinis vartotojas gali pasiekti tik atvirkštinį tarpinį VM viešojo IP metu. Tai svarbu nepamiršti. Pvz., Negalite persiųsti į jokį VM naudodami jo privatų IP.

Be to, tiek „Node-1“, tiek „Node-2“ turi „Apache“ tinklo serverį, aptarnaujantį du skirtingus tinklalapius. Tai padės mums atskirti vienas nuo kito.

Pirmojoje svetainėje rašoma „1 TINKLAPIO DARBAS!!!“

Panašiai tai rodo ir antroji svetainė:

Jūsų svetainės gali skirtis, tačiau jei norite pakartoti šią sąranką kaip pradinį tašką, paleiskite apt install apache2 „Node-1“ ir „Node-2“. Tada redaguokite failą / var / www / html / index.html, kad žiniatinklio serveris pasakytų viską, ką norite.

Reverseproxxy VM vis dar nepaliesta. Visuose VM veikia „Ubuntu 18“.04 LTS, bet jūs galite laisvai naudoti bet kurią kitą norimą OS. Jūs netgi galite tai mėgdžioti naudodami „Docker“ konteinerius. Sukūrę vartotojo nustatytą „Docker“ tilto tinklą ir jame neršiančius konteinerius, galite kiekvienam konteineriui priskirti privatų IP ir persiųsti visą HTTP / HTTPS tarpinį serverį į vieną konteinerį, kuris būtų mūsų „Nginx“ atvirkštinio tarpinio serverio konteineris.

Kol kas viskas gerai.

Nginx numatytoji konfigūracija

Pradėkime nuo „Nginx“ įdiegimo į atvirkštinio serverio serverį, aš naudoju „Ubuntu“, todėl mano paketų tvarkyklė yra tinkama:

$ sudo apt įdiekite „nginx“

Numatytosios konfigūracijos pašalinimas, jei naudojate „Debian“ pagrįstą paskirstymą

Prieš eidami toliau, nedidelė pastaba apie „Nginx“ konfigūraciją. Visi įvairūs konfigūracijos failai, įskaitant „nginx“, yra saugomi aplanke / etc / nginx.conf failas, kuris yra pagrindinis konfigūracijos failas. Jei pažvelgsime į šio failo turinį (http bloko viduje), pastebėsite šias dvi eilutes:


įtraukti / etc / nginx / conf.d / *.konf
įtraukti / etc / nginx / sites-enabled / *;

Antroje eilutėje yra visi failai, esantys kataloge, kuriame įgalinta svetainė, pagal „Nginx“ konfigūraciją. Tai yra įprasta daugumos „Debian“ pagrindu veikiančių paskirstymų praktika. Pvz., Numatytame „Welcome to Nginx“ tinklalapyje yra atitinkamas failas pavadinimu numatytasis vietoje / etc / nginx / sites-available / default su simboline nuoroda į / etc / nginx / sites-enabled /, bet mums to nereikia numatytasis tinklalapis, kad galėtume saugiai pašalinti simbolinę nuorodą. Originalą vis dar galima rasti svetainių kataloge.

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

Bet kai sukursime atvirkštinę tarpinio serverio konfigūraciją, tai padarysime konf.d katalogas (su mūsų failo pavadinimu turint a .konf. pratęsimas) tai yra universalu, ir veikia visuose platinimuose, ne tik „Debian“ ar „Ubuntu“.

Numatytosios konfigūracijos pašalinimas iš kitų sričių

Jei nenaudojate „Debian“ pagrįsto platinimo, rasite numatytąjį Sveiki atvykę į puslapį konfigūracija / etc / nginx / conf.d / numatytasis.conf tiesiog perkelkite failą į saugią vietą, jei norite jį naudoti ateityje (nes tai nėra „symlink“)

$ mv / etc / nginx / conf.d / numatytasis.conf ~ / default.konf

Kartais jį galima rasti aplanke / etc / nginx / default.d, nes žmonės tiesiog negali susitarti dėl vieno paprasto standarto! Taigi, norėdami tai išsiaiškinti, turėtumėte šiek tiek kasti kataloge / etc / nginx.

Pridedami atvirkštiniai tarpiniai blokai

Kaip minėta anksčiau, yra du skirtingi domenų vardai, kuriuos priglobiu už šio tarpinio serverio

  1. ranvirslog.com (1 TINKLAPIS) su IP 10.135.123.183
  2. ranvirslog.com (2 TINKLAPIS) su IP 10.135.123.186

Taigi sukurkime po vieną failą kiekvienai svetainei aplanke / etc / nginx / conf.d / aplankas. Taigi mes esame gerai organizuoti.

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

Failus galite pavadinti taip, kaip norite, jei tik turite .conf savo vardo gale.

Pirmajame faile ww1.conf pridėkite šias eilutes:

serveris
klausytis 80;
klausyk [::]: 80;
 
serverio_vardas ww1.ranvirslog.com;
 
vieta /
„proxy_pass“ http: // 10.135.123.183 /;
proxy_buffering off;
proxy_set_header X-Real-IP $ remote_addr;

Klausymo pareiškimai nurodo „Nginx“ klausytis 80 prievado tiek „IPv4“, tiek „IPv6“ atvejais. Tada jis patikrina, ar serverio vardas yra ww1.ranvirslog.„com“, tada vietos blokas pradeda ir proxy užklausą į http: // 10.135.123.183 / su buferiu išjungta. Be to, eilutė „proxy_set_header…“ užtikrina, kad kliento originalus IP bus persiųstas į tarpinį serverį. Tai naudinga tuo atveju, jei norite apskaičiuoti unikalių lankytojų skaičių ir pan. Priešingu atveju proxy serveris turėtų tik vieną lankytoją - „Nginx“ serverį.

Buferio parinktis ir set_header parinktys yra visiškai neprivalomos ir yra tiesiog pridėtos, kad tarpinis serveris būtų kuo skaidresnis. Dėl WW2.ranvirslog.„com“ svetainėje pridėjau šią konfigūraciją adresu / etc / nginx / conf.d / w2.konf .:

serveris
klausytis 80;
klausyk [::]: 80;
 
serverio vardas ww2.ranvirslog.com;
 
vieta /
„proxy_pass“ http: // 10.135.123.186 /;
proxy_buffering off;
proxy_set_header X-Real-IP $ remote_addr;

Išsaugokite abu failus ir patikrinkite, ar bendra konfigūracija galioja, ar ne:

$ sudo nginx -t

Jei yra klaidų, pirmiau nurodytos komandos išvestis padės jas surasti ir ištaisyti. Dabar paleiskite serverį iš naujo:

$ service nginx paleiskite iš naujo

Ir galite patikrinti, ar tai veikė, ar ne, apsilankę skirtinguose domenų varduose savo naršyklėje ir pamatę rezultatą.

Išvada

Kiekvieno asmens naudojimo atvejis yra skirtingas. Aukščiau paminėtai konfigūracijai gali reikėti šiek tiek pakoreguoti, kad ji atitiktų jūsų scenarijų. Galbūt jūs naudojate kelis serverius tame pačiame pagrindiniame kompiuteryje, bet skirtinguose uostuose, tokiu atveju eilutėje proxy_pass… reikšmė bus http: // localhost: portNumber /.

Šios detalės labai priklauso nuo jūsų naudojimo atvejo. Išsamesnės informacijos apie kitas parinktis ir melodijas rasite oficialiuose „Nginx“ dokumentuose.

Kaip įdiegti ir žaisti „Doom“ sistemoje „Linux“
Įvadas į Doom „Doom“ serija atsirado 90-aisiais, išleidus originalų „Doom“. Tai buvo tiesioginis hitas, o nuo to laiko žaidimų serija gavo daugybę apd...
„Vulkan“, skirta „Linux“ vartotojams
Kiekvienos naujos kartos grafikos plokštės matome, kaip žaidimų kūrėjai peržengia grafinės ištikimybės ribas ir artėja prie fotorealizmo. Nepaisant vi...
„OpenTTD“ ir „Simutrans“
Sukurti savo transporto modeliavimą gali būti smagu, atpalaiduojanti ir be galo viliojanti. Štai kodėl jūs turite įsitikinti, kad išbandėte kuo daugia...