Učenie sa ťažkou cestou s vlastnými rukami je aj spôsob, akým som sa dozvedel o koncepte reverzného proxy za iným reverzným proxy. Mal som docker-compose súbor, ktorý konfiguroval viacero služieb vrátane Nginx ako reverzného proxy. Nič špeciálne — funguje na mnohých miestach, fungovalo aj na mojom VPS.

Problém samozrejme začal, keď som chcel na daný server pridať ďalšiu službu, aby som jeho zdroje využil lepšie. Mojou prvou myšlienkou bolo presunúť službu Nginx z toho docker-compose súboru niekam inam. Pre jednoduchosť uvažujme, že by to bol bare-metal Nginx nakonfigurovaný ako reverzný proxy. Teoreticky by to mohlo fungovať — stačilo by konvertovať konfiguračný súbor Nginx dodaný s docker-compose na vhost súbor.

Bohužiaľ, po trochu pátraní som zistil, že to nebude také jednoduché. Najväčší problém, na ktorý som narazil, bol ten, že vyčlenenie služby Nginx z docker-compose znamenalo stratu prístupu do siete docker-compose. Akýkoľvek upstream server definovaný v takejto konfigurácii Nginx by nebol dostupný mimo danej siete — určite nie z bare-metal Nginx servera. Aspoň nie bez dodatočnej konfigurácie. Zistil som, že táto možnosť je dosť náchylná na chyby, najmä keďže existujúci docker-compose súbor fungoval bez problémov. Neopravuj čo nefunguje — ako sa hovorí. Súhlasím. Aká je teda iná možnosť?

Reverse-proxyception #

Kontajnerizovaná Nginx služba ako reverzný proxy za bare-metal Nginx ako reverzným proxy? Moja myseľ nebola celkom pripravená prijať takúto konfiguráciu v čase, keď mi táto myšlienka napadla. Považoval som takéto usporiadanie za zložité a zbytočne komplikované, nehovoriac o pridanej réžii zdrojov. Začal som hľadať, či niekto iný robí takúto hroznú vec tiež.

Vo svete, kde sa možnosti jednotlivca každý deň exponenciálne rozširujú, je len nevyhnutné, že existuje niekto, kto robí niečo, čo iný by považoval za šialenstvo. Ale ukazuje sa, že niečo podobné sa rieši tu a odpoveď, hoci sa nepochváli veľkým počtom hlasov, stále potvrdzuje, že technika využívajúca viacero vrstiev reverzných proxy na tom istom serveri nie je nič nové.

Funguje to #

Posilnený novo nájdenou odvahou som sa pustil do realizácie nápadu. Bol som prekvapený, že som to mal funkčné za necelých desať minút, plus-mínus. Všetko je nemožné, kým to nie je hotové. Dúfam, že sa čoskoro dozviem, že som urobil správne dizajnové rozhodnutie.