Nginx

Nginx Reverse Proxy

Nginx Reverse Proxy

Mi a fordított proxy?

A proxykiszolgáló az, amely az Ön nevében beszél az Internettel. Például, ha az egyetem hálózata letiltotta a https: // www fájlt.Facebook.com /, de a domain https: // exampleproxy.com továbbra is elérhető, akkor meglátogathatja az utóbbit, és továbbítja a Facebook szerverekre vonatkozó összes kérését a Facebooknak, és a Facebook válaszaival visszaküldi a böngészőjének.

Összefoglalásképpen: a proxy a több kliens egyikének nevében kéréseket küld az Internet bármely szerverére. A fordított proxy hasonló módon viselkedik.

A fordított proxy kérést kap minden ügyfeltől egy vagy több nevében szerverek. Tehát, ha van pár ww1-t tároló szerver.példa.com és ww2.példa.com egy fordított proxykiszolgáló fogadhat kéréseket a két szerver nevében, továbbíthatja azokat a saját végpontjaikra, ahol a válasz generálódik, és visszaküldi a fordított proxy-nak, hogy továbbítsa őket az ügyfeleknek.

A beállítás

Mielőtt elkezdenénk módosítani az Nginx konfigurációs fájlokat, és készítenünk egy fordított proxy szervert. Kőbe akarom vésni, hogy néz ki a beállításom, így amikor megpróbálja megvalósítani a tervét, kevésbé zavaró lenne.

A DigitalOcean platformját három VPS felpörgetésére használtam. Mindannyian ugyanazon a hálózaton vannak, mindegyik saját privát IP-vel, és csak egy VPS-nek van statikus nyilvános IP-je (ez lesz a fordított proxy szerverünk).)

Virtuálisgép / hosztnév Privát IP Nyilvános IP Szerep
Reverseproxi 10.135.123.187 159.89.108.14 Fordított proxy, az Nginx futtatása
1. csomópont 10.135.123.183 N / A Az első weboldal futtatása
2. csomópont 10.135.123.186 N / A A második weboldal működtetése

A két különböző futó webhely domain névvel rendelkezik w1.ranvirslog.com és ww2.ranvirslog.com és mindkét A rekordjuk a reverzproxi nyilvános IP-jére mutat, azaz.e, 159.89.108.14

A privát IP mögött az az ötlet áll, hogy a három virtuális gép ezen a magán IP-n keresztül tud egymással beszélni, de egy távoli felhasználó csak a fordított proxy virtuális géphez férhet hozzá nyilvános IP-jén. Ezt fontos szem előtt tartani. Például nem küldhet ssh-t egyetlen virtuális gépre sem a saját IP-jével.

Ezenkívül mind a Node-1, mind a Node-2 rendelkezik Apache webszerverrel, amely két külön weboldalt szolgál ki. Ez segít megkülönböztetni egymást.

Az első weboldalon az „1. ​​WEBOLDAL MŰKÖDIK!!!”

Hasonlóképpen, a második webhely is ezt mutatja:

Webhelyei eltérhetnek, de ha ezt a beállítást kiindulási pontként szeretné megismételni, futtassa az apt install apache2 alkalmazást a Node-1 és a Node-2 rendszereken. Ezután szerkessze a / var / www / html / index fájlt.html úgy, hogy a webszerver azt mondjon, amit csak akar.

A reverzproxi virtuális gép még mindig érintetlen. Az összes virtuális gépen fut az Ubuntu 18.04 LTS, de szabadon használhat más kívánt operációs rendszert. Ezt akár a Docker konténerek segítségével is utánozhatja. Ha létrehoz egy felhasználó által definiált Docker hídhálózatot és ívó konténereket tartalmaz, akkor mindegyik konténerhez saját IP-címet rendelhet, és az összes HTTP / HTTPS proxyt egy tárolóhoz továbbíthatja, amely a Nginx fordított proxy tárolónk lenne.

Eddig jó.

Nginx alapértelmezett konfigurációja

Kezdjük azzal, hogy telepítjük az Nginx-et a fordított szerverre, én az Ubuntut használom, így az apt a csomagkezelőm:

$ sudo apt install nginx

Az alapértelmezett konfiguráció eltávolítása, ha Debian-alapú terjesztést használ

Mielőtt tovább mennénk, egy kis megjegyzés az Nginx konfigurációjáról. Az összes különféle konfigurációs fájl az / etc / nginx könyvtárban van tárolva, beleértve az nginx fájlt is.conf fájl, amely a fő konfigurációs fájl. Ha megnézzük a fájl tartalmát (a http blokkon belül), akkor a következő két sort veszi észre:


tartalmazza / etc / nginx / conf.d / *.konf;
tartalmazza az / etc / nginx / sites-enabled / *;

A második sor tartalmazza a Nginx konfigurációjáig a fájlokat, amelyek a helyekkel engedélyezett könyvtárban találhatók. Ez a legtöbb Debian-alapú disztribúció szokásos gyakorlata. Például az alapértelmezett „Welcome to Nginx” weboldal rendelkezik egy alapértelmezett nevű fájllal az / etc / nginx / sites-available / default helyen, az / etc / nginx / sites-enabled / szimplinkkel, de erre nincs szükségünk alapértelmezett weboldal, így biztonságosan eltávolíthatjuk a symlinket. Az eredeti továbbra is elérhető a webhelyeken elérhető könyvtárban.

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

De amikor létrehozunk fordított proxy konfigurációt, akkor ezt konf.d könyvtár (a fájlnevünknek a .konf kiterjesztés) ez egyetemes, és minden disztribúción működik, nem csak a Debianon vagy az Ubuntuon.

Alapértelmezett konfiguráció eltávolítása más disztribúciókhoz

Ha nem Debian-alapú terjesztést használ, megtalálja az alapértelmezettet Üdvözlő oldal konfiguráció: / etc / nginx / conf.d / alapértelmezett.conf egyszerűen helyezze át a fájlt egy biztonságos helyre, ha a jövőben használni szeretné (mivel ez nem egy symlink)

$ mv / etc / nginx / conf.d / alapértelmezett.conf ~ / alapértelmezett.konf

Néha megtalálható az / etc / nginx / default fájlban.d, mert az emberek egyszerűen nem tudnak megállapodni egyetlen egyszerű szabványban! Tehát egy kis ásást kell végeznie az / etc / nginx könyvtárban, hogy ezt kitalálja.

Fordított proxy blokkok hozzáadása

Mint korábban említettem, a két különböző domain név, amelyet a proxy mögött tárolok, az

  1. ranvirslog.com (1. WEBOLDAL) IP 10-vel.135.123.183
  2. ranvirslog.com (2. WEBOLDAL) IP 10-vel.135.123.186

Készítsünk tehát egy fájlt webhelyenként az / etc / nginx / conf fájlban.d / mappa. Tehát jól szervezettek vagyunk.

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

Bármilyen nevet adhat a fájloknak, ameddig csak akarja .conf a neve végén.

Az első fájlban ww1.conf adja hozzá a következő sorokat:

szerver
hallgat 80;
hallgat [::]: 80;
 
szerver_neve ww1.ranvirslog.com;
 
hely /
proxy_pass http: // 10.135.123.183 /;
proxy_buffering off;
proxy_set_header X-Real-IP $ remote_addr;

A hallgatási utasítások azt mondják az Nginx-nek, hogy hallgassa meg a 80-as portot mind az IPv4, mind az IPv6 esetekben. Ezután ellenőrzi, hogy a kiszolgáló_neve ww1.ranvirslog.com, majd a helyblokk beindítja és meghatalmazza a kérést a http: // 10 címre.135.123.183 / kikapcsolt puffereléssel. Ezenkívül a proxy_set_header… sor biztosítja, hogy az ügyfél eredeti IP-címe továbbításra kerüljön a proxykiszolgálóra. Ez hasznos abban az esetben, ha ki szeretné számolni az egyedi látogatók számát stb. Ellenkező esetben a proxykiszolgálónak csak egy látogatója lenne - az Nginx szerver.

A pufferelési és a set_header opciók teljesen opcionálisak, és csak azért vannak hozzáadva, hogy a proxy a lehető legátláthatóbb legyen. A ww2 számára.ranvirslog.com weboldalon a következő konfigurációt adtam hozzá az / etc / nginx / conf címre.d / ww2.konf:

szerver
hallgat 80;
hallgat [::]: 80;
 
szerver_neve ww2.ranvirslog.com;
 
hely /
proxy_pass http: // 10.135.123.186 /;
proxy_buffering off;
proxy_set_header X-Real-IP $ remote_addr;

Mentse el a fájlokat, és tesztelje, hogy a teljes konfiguráció érvényes-e vagy sem:

$ sudo nginx -t

Ha vannak hibák, a fenti parancs kimenete segít megtalálni és kijavítani őket. Indítsa újra a szervert:

$ service nginx újraindítás

És kipróbálhatja, hogy működött-e vagy sem, ha meglátogatja a böngésző különböző domainneveit, és meglátja az eredményt.

Következtetés

Minden egyén használati esete más és más. Előfordulhat, hogy a fent említett konfigurációra szükség van egy kis módosításra, hogy működjön a forgatókönyvön. Lehet, hogy több kiszolgálót futtat ugyanazon a gazdagépen, de különböző portokon, ebben az esetben a proxy_pass ... sor értéke http: // localhost: portNumber / lesz az értéke.

Ezek a részletek nagyon függenek a felhasználási esetétől. Az egyéb opciókról és a hangolható információkról lásd a hivatalos Nginx dokumentumokat.

A GameConqueror Cheat Engine használata Linux alatt
A cikk tartalmaz egy útmutatót a GameConqueror csaló motor Linux alatt történő használatáról. Sok olyan felhasználó, aki Windows-on játszik játékot, g...
A legjobb játékkonzol emulátorok Linuxhoz
Ez a cikk felsorolja a Linux számára elérhető népszerű játékkonzol-emulációs szoftvereket. Az emuláció egy szoftver-kompatibilitási réteg, amely játék...
A legjobb Linux-disztribútorok játékhoz 2021-ben
A Linux operációs rendszer hosszú utat tett meg eredeti, egyszerű, szerver alapú kinézetétől. Ez az operációs rendszer rendkívül javult az elmúlt évek...