Android

Nginx fordított proxy beállítása

What is NginX and What are its use cases?

What is NginX and What are its use cases?

Tartalomjegyzék:

Anonim

A fordított proxy olyan szolgáltatás, amely egy ügyfél kérését elkapja, egy vagy több proxykiszolgálóra küldi a kérést, letölti a választ, és továbbítja a szerver válaszát az ügyféllel.

Teljesítménye és méretezhetősége miatt az NGINX-et gyakran fordított proxyként használják a HTTP és a nem HTTP szerverek számára. Egy tipikus fordított proxy-konfiguráció az, hogy az Nginx-et a Node.js, Python vagy Java alkalmazások elé helyezzük.

Az Nginx használata fordított proxyként további további előnyöket kínál:

  • Terheléselosztás - A Nginx végrehajthatja a terheléselosztást az ügyfelek kéréseinek elosztása érdekében a proxykiszolgálók között, amelyek javítják a teljesítményt, méretezhetőséget és megbízhatóságot. Gyorsítótár - Az Nginx mint fordított proxy, gyorsítótárazhatja az oldalak előre elkészített verzióit, hogy felgyorsítsa az oldalak betöltési idejét. Úgy működik, hogy gyorsítótárazza a proxykiszolgálók válaszaiból kapott tartalmat és felhasználja az ügyfeleknek való válaszadásra anélkül, hogy minden alkalommal ugyanazzal a tartalommal kellene kapcsolatba lépnie a proxykiszolgálóval. SSL-lezárás - Az Nginx SSL-végpontként szolgálhat az ügyfelekkel való kapcsolatok kialakításához. Kezelni fogja és visszafejti a bejövő SSL kapcsolatokat, és titkosítja a proxykiszolgáló válaszát. Tömörítés - Ha a proxykiszolgáló nem küld tömörített válaszokat, beállíthatja az Nginxet, hogy a válaszokat tömörítse, mielőtt elküldi őket az ügyfeleknek. A DDoS támadások enyhítése - A bejövő kéréseket és a kapcsolatok számát egyetlen IP-címre korlátozhatja a szokásos felhasználókra jellemző értékre. Az Nginx lehetővé teszi a hozzáférés blokkolását vagy korlátozását az ügyfél helye és a kérés fejlécei, például a „User-Agent” és a „Referer” értéke alapján.

Ez a cikk ismerteti az Nginx fordított proxyként történő konfigurálásához szükséges lépéseket.

Előfeltételek

Feltételezzük, hogy az Nginx telepítve van az Ubuntu, CentOS vagy Debian szerverre.

Nginx használata fordított proxyként

Az Nginx HTTP-kiszolgáló fordított proxyként történő konfigurálásához nyissa meg a tartomány szerverblokkjának konfigurációs fájlját, és adja meg a benne lévő helyet és egy proxykiszolgálót:

server { listen 80; server_name www.example.com example.com; location /app { proxy_pass http://127.0.0.1:8080; } }

A proxy_pass URL-jét a proxy_pass irányelv alapján proxy_pass és HTTP vagy HTTPS protokollt, tartománynevet vagy IP-címet, valamint opcionális portot és URI-t használhatnak címként.

A fenti konfiguráció azt mondja az Nginxnek, hogy minden kérést továbbítson az /app helyére a proxykiszolgálóra a http://127.0.0.1:8080 címen.

Az Ubuntu és a Debian alapú disztribúciókon a szerverblokk fájlokat az /etc/nginx/sites-available könyvtárban tárolják, a CentOS pedig az /etc/nginx/conf.d könyvtárban.

A proxy_pass és a proxy_pass irányelvek működésének jobb bemutatása érdekében vegyük a következő példát:

server { listen 80; server_name www.example.com example.com; location /blog { proxy_pass http://node1.com:8000/wordpress/; } }

Ha egy látogató hozzáfér a http://example.com/blog/my-post webhelyhez, akkor az Nginx proxikálja ezt a kérést a http://node1.com:8000/wordpress/my-post .

Ha a proxykiszolgáló címe tartalmaz URI-t ( /wordpress/ ), akkor a proxykiszolgálónak átadott kérés-URI helyébe az irányelvben meghatározott URI lép. Ha a proxykiszolgáló címe URI nélkül van megadva, akkor a teljes kérelem URI kerül a proxykiszolgálóra.

Kérési fejlécek átadása

Amikor az Nginx proxyt küld egy kérésnek, akkor automatikusan két fejléc mezőt határoz meg az ügyféllel szemben lévő proxed kérésekben, a Host és a Connection , és eltávolítja az üres fejléceket. Host a $proxy_host változóra állítja, a Connection pedig bezáródik.

A proxy_set_header kapcsolatok fejléceinek beállításához vagy beállításához használja a proxy_set_header irányelvet, amelyet a fejléc érték követ. Az összes elérhető kérelem fejlécét és azok megengedett értékeit itt találja. Ha megakadályozni szeretné, hogy a fejléc továbbadjon a proxykiszolgálóhoz, állítsa be egy üres "" karakterláncra.

A következő példában a Host fejléc mező értékét $host és az Accept-Encoding fejléc mezőt eltávolítjuk az érték üres karakterláncra állításával.

location / { proxy_set_header Host $host; proxy_set_header Accept-Encoding ""; proxy_pass http://localhost:3000; }

A konfigurációs fájl módosításakor újra kell indítania az Nginx szolgáltatást, hogy a változások érvénybe lépjenek.

Az Nginx konfigurálása fordított proxyként egy nem HTTP-proxykiszolgálóhoz

Ha az Nginxet nem HTTP-proxykiszolgáló fordított proxyjává kívánja konfigurálni, akkor a következő irányelveket használhatja:

  • fastcgi_pass - proxy visszaváltása egy FastCGI szerverre. uwsgi_pass - fordított proxy egy uwsgi szerverhez. scgi_pass - fordított proxy egy SCGI szerverhez. memcached_pass - fordított proxy egy Memcached szerverhez.

Az egyik leggyakoribb példa az Nginx használata a PHP-FPM fordított proxyként:

server { #… other directives location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.2-fpm.sock; } }

Általános Nginx fordított proxybeállítások

A tartalom HTTPS-en keresztüli kiszolgálása manapság szabványossá vált. Ebben a szakaszban példát adunk a HTTPS Nginx fordított proxy konfigurációjára, beleértve az ajánlott Nginx proxy paramétereket és fejléceket.

location/ { proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; proxy_cache_bypass $http_upgrade; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; }

  • proxy_http_version 1.1 - meghatározza a proxy_http_version 1.1 HTTP protokoll verzióját, alapértelmezés szerint 1.0-ra állítva. Internetes kapcsolatokhoz és folyamatos kapcsolatokhoz az 1.1-es verziót kell használni. proxy_cache_bypass $http_upgrade - Beállítja azokat a feltételeket, amelyek mellett a válasz nem kerül gyorsítótárból. Upgrade $http_upgrade és a Connection "upgrade" - Ezekre a fejlécmezőkre szükség van, ha az alkalmazás webkapcsolatokat használ. Host $host - A $host változó a következő fontossági sorrendben tartalmazza: hostnév a kérelem sorából, vagy hostnév a Host kérés fejlécében, vagy a kiszolgáló neve, amely megegyezik a kéréssel. X-Real-IP $remote_addr - Az igazi látogató távoli IP-címét továbbítja a proxykiszolgálóra. X-Forwarded-For $proxy_add_x_forwarded_for - X-Forwarded-For $proxy_add_x_forwarded_for kiszolgálók IP-címeit tartalmazó lista, amelyeken az ügyfél X-Forwarded-For $proxy_add_x_forwarded_for került. X-Forwarded-Proto $scheme - Amikor egy HTTPS szerverblokkban használják, a proxykiszolgáló minden HTTP válaszát átírja a X-Forwarded-Host $host - meghatározza az ügyfél által kért eredeti gazdagépet. X-Forwarded-Port $server_port - meghatározza az ügyfél által igényelt eredeti portot.

Következtetés

Megtanulta az Nginx használatát fordított proxyként. Megmutattuk Önnek, hogyan továbbíthat további paramétereket a kiszolgálóra, és hogyan módosíthatja és beállíthatja a különböző fejléc mezőket a proxy-kérésekben.

nginx