Nginx

Reverzný proxy server Nginx

Reverzný proxy server Nginx

Čo je reverzný proxy server?

Proxy server je server, ktorý vo vašom mene komunikuje s internetom. Napríklad ak sieť vašej univerzity zablokovala https: // www.Facebook.com / ale doména https: // exampleproxy.com je stále prístupný, potom môžete navštíviť tento server a ten prepošle všetky vaše požiadavky na servery Facebook na Facebook a prostredníctvom odpovedí z Facebooku pošle späť do vášho prehliadača.

Rekapitulácia: proxy server odosiela žiadosti v mene jedného alebo viacerých klientov na všetky servery v sieti Internet. Podobne sa chová aj reverzný proxy server.

A reverzný proxy prijíma žiadosti od všetkých klientov v mene jedného alebo viacerých servery. Takže ak máte niekoľko serverov hostiacich ww1.príklad.com a 2.sv.v.príklad.com reverzný proxy server môže prijímať požiadavky v mene týchto dvoch serverov, preposielať tieto požiadavky na ich príslušné koncové body, kde sa generuje odpoveď, a poslať späť na reverzný proxy server, aby sa preposlal späť klientom.

Nastavenie

Než začneme vylepšovať konfiguračné súbory Nginx a vytvoríme reverzný proxy server. Chcem vytesať, ako vyzerá moje nastavenie, takže keď sa snažíte implementovať svoj návrh, bolo by to menej mätúce.

Použil som platformu DigitalOcean na roztočenie troch VPS. Všetci sú v rovnakej sieti a každá má svoju vlastnú súkromnú IP a iba jedna VPS má statickú verejnú IP (toto bude náš reverzný proxy server).)

VM / Hostname Súkromná IP Verejná IP Rola
Reverznej oxyskupiny 10.135.123.187 159.89.108.14 Reverzný proxy server, spustený Nginx
Uzol-1 10.135.123.183 N / A Spustená prvá webová stránka
Uzol-2 10.135.123.186 N / A Prevádzkovaná druhá webová stránka

Dva rôzne spustené webové stránky majú názvy domén druhá svetová vojna.ranvirslog.com a druhá svetová vojna.ranvirslog.com a obidva ich záznamy A poukazujú na verejnú IP adresu reverznej hydroxyskupiny, t.j.e, 159.89.108.14

Myšlienka súkromnej IP spočíva v tom, že tieto tri VM môžu medzi sebou komunikovať prostredníctvom tejto súkromnej IP, ale vzdialený používateľ má prístup iba k reverznému proxy VM na jeho verejnom IP. Toto je dôležité mať na pamäti. Napríklad nemôžete použiť ssh do žiadneho z virtuálnych počítačov pomocou jeho súkromnej adresy IP.

Ďalej, Node-1 aj Node-2 majú webový server Apache slúžiaci na dve odlišné webové stránky. To nám pomôže odlíšiť jeden od druhého.

Prvý web hovorí „WEBOVÁ STRÁNKA 1 FUNGUJE!!!“

Druhá webová stránka to ukazuje podobne:

Vaše webové stránky sa môžu líšiť, ale ak chcete replikovať toto nastavenie ako východiskový bod, spustite apt install apache2 na Node-1 a Node-2. Potom upravte súbor / var / www / html / index.html, aby webový server povedal všetko, čo chcete.

Reverzný server VM je stále nedotknutý. Všetky VM používajú Ubuntu 18.04 LTS, ale môžete slobodne používať akýkoľvek iný OS, ktorý chcete. Môžete to dokonca napodobniť pomocou kontajnerov Docker. Vytvorením používateľom definovanej siete Docker Bridge a na nej umiestnených kontajnerov môžete každému kontajneru priradiť súkromnú adresu IP a preposlať všetky proxy HTTP / HTTPS do jedného kontajnera, ktorým by bol náš reverzný kontajner proxy Nginx.

Zatiaľ je všetko dobré.

Predvolená konfigurácia Nginx

Začnime inštaláciou Nginx na reverzný server proxy, používam Ubuntu, takže apt je môj správca balíkov:

$ sudo apt nainštalovať nginx

Odstraňovanie predvolenej konfigurácie, ak používate distribúciu založenú na Debiane

Predtým, ako prejdeme ďalej, malá poznámka o konfigurácii Nginxu. Všetky rôzne konfiguračné súbory sú uložené v / etc / nginx vrátane nginx.conf súbor, ktorý je hlavným konfiguračným súborom. Ak sa pozrieme na obsah tohto súboru (vo vnútri bloku http), všimneme si nasledujúce dva riadky:


zahrnúť / etc / nginx / conf.d / *.conf;
zahrnúť / etc / nginx / sites-enabled / *;

Druhý riadok obsahuje všetky súbory v adresári s povolenými adresami serverov po konfiguráciu Nginxu. Toto je štandardný postup vo väčšine distribúcií založených na Debiane. Napríklad predvolená webová stránka „Vitajte na serveri Nginx“ má zodpovedajúci súbor s názvom predvolený v umiestnení / etc / nginx / sites-available / default so symbolickým odkazom na / etc / nginx / sites-enabled /, ale toto nepotrebujeme predvolenú webovú stránku, aby sme mohli symbolický odkaz bezpečne odstrániť. Originál je stále k dispozícii v adresári sites-available.

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

Ale keď vytvoríme reverznú konfiguráciu proxy, urobíme to v conf.adresár d (s názvom nášho súboru, ktorý má a .conf rozšírenie) toto je univerzálne, a funguje vo všetkých distribúciách, nielen v Debiane alebo Ubuntu.

Odstraňuje sa predvolená konfigurácia pre iné distribúcie

Ak nepoužívate distribúciu založenú na Debiane, nájdete predvolené nastavenie Uvítacia stránka konfigurácia na / etc / nginx / conf.d / predvolené.conf Ak chcete súbor v budúcnosti použiť, jednoducho ho presuňte na bezpečné miesto (nejde o symbolický odkaz)

$ mv / etc / nginx / conf.d / predvolené.conf ~ / predvolené.konf

Niekedy sa nachádza v priečinku / etc / nginx / default.d pretože ľudia sa jednoducho nemôžu dohodnúť na jednom jednoduchom štandarde! Aby ste na to prišli, museli by ste trochu kopať v adresári / etc / nginx.

Pridanie reverzných blokov proxy

Ako už bolo uvedené vyššie, za týmto serverom proxy sú dva rôzne názvy domén, ktoré hostím

  1. ranvirslog.com (WEBOVÁ STRÁNKA 1) s IP 10.135.123.183
  2. ranvirslog.com (WEBOVÁ STRÁNKA 2) s IP 10.135.123.186

Vytvorme teda jeden súbor na každý web v súbore / etc / nginx / conf.d / priečinok. Takže sme dobre organizovaní.

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

Súbory môžete pomenovať, ak chcete, pokiaľ má a .conf na konci svojho názvu.

V prvom súbore ww1.conf pridať nasledujúce riadky:

server
počúvať 80;
počúvať [::]: 80;
 
nazov_serveru ww1.ranvirslog.com;
 
miesto /
proxy_pass http: // 10.135.123.183 /;
proxy_buffering vypnutý;
proxy_set_header X-Real-IP $ remote_addr;

Príkazy posluchu povedia Nginxu, aby počúval na porte 80 pre prípady IPv4 aj IPv6. Potom skontroluje, či je názov_servera ww1.ranvirslog.com, potom sa umiestni blok umiestnenia a naštartuje požiadavku na adresu http: // 10.135.123.183 / s vypnutým ukladaním do vyrovnávacej pamäte. Riadok proxy_set_header… navyše zaisťuje, že sa pôvodná adresa IP klienta preposiela na proxy server. To je užitočné v prípade, že chcete vypočítať počet jedinečných návštevníkov atď. Inak by proxy server mal iba jedného návštevníka - server Nginx.

Možnosti ukladania do vyrovnávacej pamäte a možnosti set_header sú úplne voliteľné a práve sa pridávajú, aby bolo zabezpečenie servera čo najtransparentnejšie. Pre 2.sv.v.ranvirslog.com, pridal som nasledujúcu konfiguráciu na / etc / nginx / conf.d / ww2.conf:

server
počúvať 80;
počúvať [::]: 80;
 
názov_servera 2.sv.ranvirslog.com;
 
miesto /
proxy_pass http: // 10.135.123.186 /;
proxy_buffering vypnutý;
proxy_set_header X-Real-IP $ remote_addr;

Uložte oba súbory a otestujte, či je celková konfigurácia platná alebo nie:

$ sudo nginx -t

Ak sa vyskytnú chyby, výstup vyššie uvedeného príkazu vám pomôže ich nájsť a opraviť. Teraz reštartujte server:

$ service nginx reštart

Môžete otestovať, či to fungovalo alebo nie, navštívením rôznych názvov domén vo svojom prehliadači a zobrazením výsledku.

Záver

Prípad použitia každého jednotlivca je iný. Konfigurácia uvedená vyššie môže vyžadovať jemné doladenie, aby fungovala pre váš scenár. Možno používate viac serverov na rovnakom hostiteľovi, ale na rôznych portoch, v takom prípade bude mať riadok proxy_pass… hodnotu http: // localhost: portNumber /.

Tieto podrobnosti veľmi závisia od vášho prípadu použitia. Ďalšie informácie o ďalších možnostiach a laditeľnosti nájdete v oficiálnych dokumentoch Nginx.

Tlačidlo ľavého kliknutia myši nefunguje v systéme Windows 10
Ak používate samostatnú myš s prenosným počítačom alebo stolovým počítačom, ale nefunguje ľavé tlačidlo myši vo Windows 10/8/7 z nejakého dôvodu uvádz...
Kurzor pri písaní v systéme Windows 10 skáče alebo sa pohybuje náhodne
Ak zistíte, že kurzor myši skáče alebo sa pohybuje sám, automaticky a náhodne pri písaní na notebooku alebo počítači so systémom Windows, niektoré z t...
Ako zmeniť smer posúvania myši a touchpadu v systéme Windows 10
Myš a TouchpadNielenže uľahčujú výpočty, ale sú aj efektívnejšie a menej časovo náročné. Nemôžeme si predstaviť život bez týchto zariadení, ale je pra...