Nginx

Nginx reverzní proxy

Nginx reverzní proxy

Co je reverzní proxy?

Proxy server je server, který vaším jménem komunikuje s internetem. Například pokud síť vaší univerzity zablokovala https: // www.Facebook.com / ale doména https: // exampleproxy.com je stále přístupný, pak můžete navštívit druhý a ten předá všechny vaše požadavky na servery Facebooku na Facebook a odešle odpověďmi z Facebooku zpět do vašeho prohlížeče.

Rekapitulace, proxy odesílá požadavky jménem jednoho nebo více klientů na jakékoli servery v Internetu. Podobně se chová reverzní proxy.

A reverzní proxy přijímá žádost od všech klientů jménem jednoho nebo více servery. Takže pokud máte několik serverů hostujících ww1.příklad.com a 2. světové války.příklad.com reverzní proxy server může přijímat požadavky jménem těchto dvou serverů, předávat tyto požadavky jejich příslušným koncovým bodům, kde je generována odpověď, a odesílány zpět na reverzní proxy, aby byly předány zpět klientům.

Nastavení

Než začneme vylepšovat konfigurační soubory Nginx a vytvoříme reverzní proxy server. Chci vytesat do kamene, jak vypadá moje nastavení, takže když se snažíte implementovat svůj design, bylo by to méně matoucí.

Použil jsem platformu DigitalOcean k roztočení tří VPS. Všichni jsou ve stejné síti, každý s vlastní privátní IP a pouze jedna VPS má statickou veřejnou IP (toto bude náš reverzní proxy server).)

VM / Hostname Soukromá IP Veřejná IP Role
Reverzní peroxid 10.135.123.187 159.89.108.14 Reverzní proxy, běží Nginx
Uzel-1 10.135.123.183 N / A Spuštěn první web
Uzel-2 10.135.123.186 N / A Spuštěn druhý web

Dva různé spuštěné weby mají názvy domén druhá světová válka.ranvirslog.com a 2. svět.ranvirslog.com a oba jejich záznamy A poukazují na veřejnou IP adresu reverzní proxy, tj.e, 159.89.108.14

Myšlenkou soukromé IP je, že tři virtuální počítače mohou mezi sebou komunikovat prostřednictvím této soukromé IP, ale vzdálený uživatel může přistupovat pouze k reverznímu virtuálnímu proxy serveru na jeho veřejné IP. To je důležité mít na paměti. Například nemůžete ssh do žádného z virtuálních počítačů používat jeho soukromou IP.

Kromě toho mají Node-1 i Node-2 webový server Apache, který obsluhuje dvě odlišné webové stránky. To nám pomůže rozlišit jeden od druhého.

První web říká „WEBOVÁ STRÁNKA 1 FUNGUJE!!!“

Druhý web podobně ukazuje toto:

Vaše webové stránky se mohou lišit, ale pokud chcete replikovat toto nastavení jako výchozí bod, spusťte apt install apache2 na Node-1 a Node-2. Poté upravte soubor / var / www / html / index.html, takže webový server říká, co chcete.

Virtuální reverzní server VM je stále nedotčený. Všechny virtuální počítače používají Ubuntu 18.04 LTS, ale můžete libovolně používat jakýkoli jiný operační systém, který chcete. Můžete to dokonce napodobit pomocí kontejnerů Docker. Vytvořením uživatelem definované sítě mostu Docker a na ní umístěných kontejnerů můžete každému kontejneru přiřadit soukromou IP a předat všechny proxy HTTP / HTTPS do jednoho kontejneru, což by byl náš kontejner reverzního proxy serveru Nginx.

Zatím je vše dobré.

Výchozí konfigurace Nginx

Začněme instalací Nginx na reverzní server, používám Ubuntu, takže apt je můj správce balíčků:

$ sudo apt nainstalovat nginx

Odebrání výchozí konfigurace, pokud používáte distribuci založenou na Debianu

Než půjdeme dále, malá poznámka o konfiguraci Nginx. Všechny různé konfigurační soubory jsou uloženy v / etc / nginx včetně nginx.conf soubor, který je hlavním konfiguračním souborem. Podíváme-li se na obsah tohoto souboru (uvnitř bloku http), všimnete si následujících dvou řádků:


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

Druhý řádek obsahuje všechny soubory v adresáři s povolenými weby ke konfiguraci Nginx. Toto je standardní postup u většiny distribucí založených na Debianu. Například výchozí web „Vítejte na Nginx“ má odpovídající soubor s názvem default v umístění / etc / nginx / sites-available / default se symbolickým odkazem na / etc / nginx / sites-enabled /, ale toto nepotřebujeme výchozí webovou stránku, abychom mohli bezpečně odebrat symbolický odkaz. Originál je stále k dispozici v adresáři dostupných stránek.

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

Ale když vytvoříme reverzní konfiguraci proxy, uděláme to v conf.d adresář (s naším názvem souboru, který má .conf rozšíření) to je univerzální, a funguje ve všech distribucích, nejen v Debianu nebo Ubuntu.

Odebrání výchozí konfigurace pro ostatní distribuce

Pokud nepoužíváte distribuci založenou na Debianu, najdete výchozí Úvodní stránka konfigurace na / etc / nginx / conf.d / výchozí.conf stačí přesunout soubor na nějaké bezpečné místo, pokud jej budete chtít v budoucnu použít (protože se nejedná o symbolický odkaz)

$ mv / etc / nginx / conf.d / výchozí.conf ~ / výchozí.konf

Někdy jej najdete v / etc / nginx / default.d, protože lidé se prostě nemohou dohodnout na jediném jednoduchém standardu! Takže byste museli trochu kopat v adresáři / etc / nginx, abyste na to přišli.

Přidání reverzních bloků proxy

Jak již bylo řečeno, dva různé názvy domén, které za tímto proxy hostuji, jsou

  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

Vytvořme tedy jeden soubor na každý web v / etc / nginx / conf.d / složka. Takže jsme dobře organizovaní.

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

Soubory můžete pojmenovat, jak chcete, pokud mají .conf na konci svého názvu.

V prvním souboru ww1.conf přidejte následující řádky:

server
poslouchat 80;
poslouchat [::]: 80;
 
název_serveru ww1.ranvirslog.com;
 
místo /
proxy_pass http: // 10.135.123.183 /;
proxy_buffering off;
proxy_set_header X-Real-IP $ remote_addr;

Příkazy poslechu říkají Nginxu, aby naslouchal na portu 80 pro případy IPv4 i IPv6. Poté zkontroluje, zda je název_serveru ww1.ranvirslog.com, pak se umístí blok umístění a proxy požadavek na http: // 10.135.123.183 / s vypnutým ukládáním do vyrovnávací paměti. Řádek proxy_set_header… navíc zajišťuje, že původní IP adresa klienta je předána proxy serveru. To je užitečné v případě, že chcete vypočítat počet jedinečných návštěvníků atd. Jinak by proxy server měl pouze jednoho návštěvníka - server Nginx.

Možnosti ukládání do vyrovnávací paměti a možnosti set_header jsou zcela volitelné a jsou pouze přidány, aby byla proxying co nejtransparentnější. Pro 2. světovou válku.ranvirslog.com, přidal jsem následující konfiguraci na / etc / nginx / conf.d / ww2.conf:

server
poslouchat 80;
poslouchat [::]: 80;
 
název_serveru 2.sv.ranvirslog.com;
 
místo /
proxy_pass http: // 10.135.123.186 /;
proxy_buffering off;
proxy_set_header X-Real-IP $ remote_addr;

Uložte oba soubory a vyzkoušejte, zda je celková konfigurace platná nebo ne:

$ sudo nginx -t

Pokud se vyskytnou chyby, výstup výše uvedeného příkazu vám pomůže je najít a opravit. Nyní restartujte server:

$ service restart nginx

Můžete otestovat, zda to fungovalo, nebo ne, a to tak, že navštívíte v prohlížeči různé názvy domén a uvidíte výsledek.

Závěr

Případ použití každého jednotlivce je jiný. Konfigurace uvedená výše může vyžadovat trochu vylepšení, aby fungovala pro váš scénář. Možná používáte více serverů na stejném hostiteli, ale na různých portech, v takovém případě bude mít řádek proxy_pass… jako hodnotu hodnotu http: // localhost: portNumber /.

Tyto podrobnosti velmi závisí na vašem případu použití. Další podrobnosti o dalších možnostech a laditelnostech najdete v oficiálních dokumentech Nginx.

Hry Battle For Wesnoth 1.13.6 Vývoj uvolněn
Battle For Wesnoth 1.13.6 Vývoj uvolněn
Battle For Wesnoth 1.13.6 vydané minulý měsíc, je šestým vývojovým vydáním v 1.13.série x a přináší řadu vylepšení, zejména do uživatelského rozhraní,...
Hry Jak nainstalovat League Of Legends na Ubuntu 14.04
Jak nainstalovat League Of Legends na Ubuntu 14.04
Pokud jste fanouškem League of Legends, pak je to pro vás příležitost otestovat běh League of Legends. Všimněte si, že LOL je podporován na PlayOnLinu...
Hry Nainstalujte si nejnovější strategickou hru OpenRA na Ubuntu Linux
Nainstalujte si nejnovější strategickou hru OpenRA na Ubuntu Linux
OpenRA je herní engine Libre / Free Real Time Strategy, který obnovuje rané hry Westwood, jako je klasický Command & Conquer: Red Alert. Distribuované...