Jak vytvořit reverzní proxy v Nginx

NGINX je všestranný a vysoce výkonný webový server široce používaný jako reverzní proxy server. Reverzní proxy je prostředníkem pro klientské požadavky, které je distribuuje na jeden nebo více backendových serverů. Toto nastavení přináší výhody vyrovnávání zátěže, zlepšení zabezpečení a zajištění vysoké dostupnosti. Použití NGINX jako reverzního proxy může zlepšit škálovatelnost a spolehlivost vašich webových služeb.

Tato příručka ukáže, jak vytvořit reverzní proxy v NGINX, a pokryje nezbytné kroky konfigurace pro efektivní směrování požadavků klientů na backend servery.

Vytvořte a nakonfigurujte reverzní proxy v Nginx

Nastavení základního reverzního proxy v Nginx

Nejprve, abyste mohli začít konfigurovat Nginx jako reverzní proxy, otevřete konfigurační soubor Nginx. Obvykle se tento soubor nachází v /etc/nginx/nginx.conf. Otevřete jej pomocí preferovaného textového editoru, například pomocí sudo Nano:

sudo nano /etc/nginx/nginx.conf

Uvnitř konfiguračního souboru se zaměřte na blok http. Zde vložíte blok serveru, základní kámen vašeho nastavení reverzního proxy. Blok serveru naslouchá na určeném portu, obvykle portu 80, pro provoz HTTP. V rámci tohoto bloku umístění/směrnice říká Nginxu, jak zacházet s příchozími požadavky. Použijte direktivu proxy_pass k přesměrování těchto požadavků na backendový server určený jeho IP adresou nebo názvem hostitele.

Konfigurace může vypadat například takto:

http {
    ...
    server {
        listen 80;
        location / {
            proxy_pass http://backendserver_address;
        }
    }
}

Nezapomeňte nahradit backendserver_address skutečnou adresou vašeho backendového serveru. Toto jednoduché nastavení říká Nginxu, aby předával všechny příchozí požadavky HTTP na zadaný backend server.

Pokročilá konfigurace reverzního proxy v Nginx

V pokročilejším nastavení můžete chtít nakonfigurovat další aspekty reverzního proxy. To může zahrnovat nastavení pro vyrovnávání zátěže, ukončení SSL nebo ukládání do mezipaměti.

Implementace Load Balancing

Pokud provozujete více backendových serverů, Nginx může mezi ně distribuovat příchozí provoz, čímž zvyšuje výkon a spolehlivost. Pro vyvažování zátěže byste upravili direktivu proxy_pass tak, aby ukazovala na skupinu serverů definovanou v upstreamovém bloku. Například:

http {
    upstream backend_servers {
        server backend1.example.com;
        server backend2.example.com;
    }

    server {
        listen 80;
        location / {
            proxy_pass http://backend_servers;
        }
    }
}

Tato konfigurace umožňuje Nginxu vyvážit zátěž mezi backend1.example.com a backend2.example.com.

Konfigurace ukončení SSL

U ukončení SSL zajistěte, aby blok serveru naslouchal na portu 443 a zahrnoval umístění certifikátu SSL a souboru klíčů. Konfigurace může připomínat:

server {
    listen 443 ssl;
    ssl_certificate /path/to/certificate.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://backendserver_address;
    }
}

Toto nastavení umožňuje Nginxu zpracovávat připojení SSL a dešifrovat požadavky před jejich předáním backendovým serverům.

Dokončování změn

Po konfiguraci Nginx otestujte konfiguraci na chyby syntaxe pomocí:

nginx -t

Pokud test projde, znovu načtěte Nginx a aplikujte změny pomocí:

sudo systemctl reload nginx

Tento krok zajistí, že se vaše změny projeví bez přerušení stávajících připojení.

Další informace: Nastavení hodnot záhlaví Nginx Proxy

Při konfiguraci Nginx jako reverzní proxy je důležité správně nastavit hodnoty hlavičky proxy. Tyto hlavičky jsou klíčové pro předávání podrobností původního požadavku klienta na backend servery. Tyto informace mohou zahrnovat IP adresu klienta, původní protokol požadavku a další. Správné nastavení těchto hlaviček zajišťuje, že backendové servery mají kontext, který potřebují, aby mohly náležitě reagovat na požadavky.

Pochopení záhlaví proxy

Záhlaví proxy jsou zásadní v nastavení zpětného proxy, protože nesou informace o původním požadavku klienta. Tyto informace jsou nezbytné pro backendové servery, aby mohly přijímat informovaná rozhodnutí o zpracování příchozích požadavků. Například znalost původní IP adresy klienta může být důležitá pro účely protokolování, analýzy nebo zabezpečení.

Společné konfigurace záhlaví proxy

Některé z běžných záhlaví proxy, které můžete nakonfigurovat v Nginx, zahrnují:

  • X-Real-IP: Tato hlavička se používá k předání IP adresy původního klienta backendovému serveru.
  • X-Forwarded-For: Podobný X-Real-IP, tato hlavička nese seznam všech serverů, kterými požadavek prošel, včetně IP klienta.
  • X-Forwarded-Proto: Tato hlavička označuje protokol (HTTP nebo HTTPS) použitý v původním požadavku klienta.

Implementace nastavení záhlaví proxy v Nginx

Chcete-li nastavit tato záhlaví v konfiguraci Nginx, musíte upravit blok umístění v bloku serveru. Zde je příklad, jak můžete nastavit tato záhlaví:

server {
    listen 80;
    location / {
        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_pass http://backendserver_address;
    }
}

V této konfiguraci jsou $remote_addr a $scheme proměnné, které Nginx automaticky vyplní IP adresou klienta a schématem požadavku (HTTP nebo HTTPS).

Osvědčené postupy pro záhlaví proxy

Při konfiguraci proxy hlaviček je důležité vzít v úvahu bezpečnost a přesnost předávaných informací. Abyste předešli potenciálnímu falšování, zajistěte, aby vaše backendové servery byly nakonfigurovány tak, aby těmto hlavičkám důvěřovaly pouze tehdy, když pocházejí z vašeho reverzního proxy Nginx.

Závěr

Úspěšnou konfigurací NGINX jako reverzního proxy můžete optimalizovat webovou infrastrukturu pro lepší výkon, zabezpečení a škálovatelnost. Pravidelně sledujte a upravujte svou konfiguraci, abyste zajistili optimální rozložení zátěže a doby odezvy. Implementace reverzního proxy s NGINX poskytuje robustní řešení pro správu požadavků klientů a udržování vysoké dostupnosti vašich webových služeb.

Joshua James
Následuj mě
Nejnovější příspěvky uživatele Joshua James (vidět vše)

Napsat komentář