Kromě Apache je Nginx nejpopulárnějším dostupným webovým serverem. Kromě toho, že jde o webový server, může být také použit jako nástroj pro vyrovnávání zatížení nebo reverzní proxy. V tomto tutoriálu vám Quantrimang.com ukáže, jak můžete použít Nginx jako reverzní proxy.
Co je reverzní proxy?
Proxy server funguje jako prostředník mezi klientem a jiným serverem. Proxy server načte prostředky ze serveru, ke kterému se chcete připojit, a pošle vám je k zobrazení. Reverzní proxy funguje stejným způsobem, až na to, že role jsou obrácené. Když požadujete informace ze serveru, reverzní proxy podrží požadavek a odešle jej na příslušný backend server. To umožňuje správcům systému používat server pro více aplikací a také zajistit hladší tok provozu mezi klientem a serverem.

Výhody reverzních proxy
V závislosti na vaší aplikaci můžete mít různé případy použití reverzního proxy.
- Reverzní proxy vám umožňuje spouštět více aplikací na stejném serveru – Pokud na stejném serveru běží více aplikací, nemohou všechny „naslouchat“ současně na portu 80 nebo 433. S reverzním proxy jej můžete nakonfigurovat v případě potřeby přesměrovat provoz do jednotlivých aplikací.
- Vyrovnávání zátěže – Pokud máte více serverů se stejnou aplikací, můžete použít reverzní proxy k rovnoměrnému rozložení provozu na každý server.
- Firewall webových aplikací – Reverzní proxy můžete použít ke skrytí vaší aplikace a také k filtrování spamových IP adres nebo k ochraně před DDOS útokem .
- Snadné protokolování a auditování – Vzhledem k tomu, že veškerý příchozí provoz je řízen reverzním proxy serverem, je jednodušší protokolovat a monitorovat toky provozu.
Nakonfigurujte Nginx jako reverzní proxy
Chcete-li nastavit Nginx jako reverzní proxy, článek použije parametr proxy_pass v konfiguračním souboru Nginx.
Poznámka : Tento výukový program předpokládá, že máte určité znalosti o Nginx a že jste Nginx na svém serveru nainstalovali a nastavili.
Ve většině případů použití bude Nginx front-end serverem, který „naslouchá“ portu 80 (HTTP) nebo 443 (HTTPS) pro příchozí požadavky. Protože na portu 80 nebo 443 může „naslouchat“ pouze jedna služba, vaše aplikace bude muset „naslouchat“ na jiném portu, například na portu 8081. Nejjednodušší konfigurace bude vypadat takto:
server {
listen 80;
listen [::]:80;
server_name myapp.com;
location / {
proxy_pass http://localhost:8081/;
}
}
To znamená, že všechny požadavky na myapp.com na portu 80 budou přesměrovány na port 8081.
Pokročilé nastavení
Kromě direktivy proxy_pass existuje několik dalších direktiv, které můžete použít pro pokročilejší nastavení.
- proxy_set_header – Umožňuje nastavit hlavičku, která se má odeslat do aplikace na pozadí. Podívejte se například na následující konfiguraci:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Můžete nastavit potřebné proxy hlavičky, které se mají předat aplikaci, sdělit jí IP a vzdálenou adresu požadavku a poté odeslat správný obsah na žádající web.
- proxy timeout - Umožňuje nastavit hodnotu časového limitu pro odesílání a přijímání proxy požadavků. Například:
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
- proxy_buffers - To umožňuje Nginx dočasně podržet odpověď proxy serveru a odeslat ji žádajícímu serveru až poté, co proxy server dokončí odpověď. Například:
proxy_buffers 32 4k;
Pokud vaše aplikace odesílá velké množství souborů, možná budete chtít zakázat proxy_buffers:
proxy_buffering off;
Jak můžete vidět, Nginx je reverzní proxy server, který má mnoho využití. Největší výhodou je, že se snadno konfiguruje, snadno se používá a stále vám umožňuje škálovat ve složitějších scénářích. Další podrobnosti najdete v dokumentaci k proxy modulu Nginx (na https://nginx.org/en/docs/http/ngx_http_proxy_module.html) nebo v příkladech konfigurace (na https://www .nginx.com/resources/wiki /start/topics/examples/full/).
Doufám, že jste úspěšní.