VPS · Návod

nginx jako reverzní proxy: návod

Aktualizováno October 11, 2026 4 min čtení

Na této stránce
  1. Co dělá reverzní proxy
  2. Krok 1: Instalace nginx
  3. Krok 2: Vytvoření proxy server bloku
  4. Hlavičky a koncové lomítko
  5. WebSockets
  6. Krok 3: HTTPS zdarma s Certbotem
  7. Řešení chyb 502, 504 a 413
  8. Provozujte to na HytHost VPS
  9. FAQ

Reverzní proxy stojí před vašimi aplikacemi a předává jim požadavky návštěvníků. S nginx vpředu se z aplikace v Node.js, Docker kontejneru nebo dashboardu běžícího na nějakém portu stane https://app.example.com – s HTTPS, správnými hlavičkami a jedním místem pro správu všeho.

Tento návod krok za krokem nastaví nginx jako reverzní proxy na Ubuntu: server blok, hlavičky, WebSockets, HTTPS zdarma a chyby, na které nejspíš narazíte.

Co dělá reverzní proxy

  • Jeden veřejný vstupní bod. nginx naslouchá na portech 80 a 443 a každou doménu nebo cestu přepošle správné aplikaci, takže samotné aplikace nikdy nejsou vystavené internetu.
  • HTTPS na jednom místě. Certifikáty spravuje nginx; aplikace za ním mohou na localhostu mluvit obyčejným HTTP.
  • Více aplikací na jednom serveru. app.example.com, api.example.com a example.com/blog mohou každá vést na jinou službu.
  • Něco navíc: komprese, cache, limity nahrávání a pravidla přístupu, aniž byste sahali do aplikace.

Krok 1: Instalace nginx

sudo apt update
sudo apt install nginx

Otevřete http://your-server-ip a měli byste vidět uvítací stránku nginx. Pokud používáte ufw, povolte webový provoz příkazem sudo ufw allow 'Nginx Full'.

Ověřte, že vaše aplikace běží a je dostupná přímo na serveru, například pomocí curl http://127.0.0.1:3000. Pokud to selže, selže i nginx.

Provozujte nginx a své aplikace s plným rootem: HytHost KVM VPS od €2.92/měs.

Zobrazit VPS tarify

Krok 2: Vytvoření proxy server bloku

Na Ubuntu má každý web svůj soubor v /etc/nginx/sites-available/, který se zapíná odkazem v sites-enabled. Vytvořte /etc/nginx/sites-available/app.example.com:

server {
    listen 80;
    server_name app.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        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;
    }
}

Zapněte ho, otestujte konfiguraci a načtěte ji znovu:

sudo ln -s /etc/nginx/sites-available/app.example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Nasměrujte A záznam domény na svůj server a na http://app.example.com se zobrazí vaše aplikace. Před každým reloadem spusťte nginx -t: zachytí překlepy dřív, než web shodí.

Hlavičky a koncové lomítko

  • Host předává doménu, kterou návštěvník požadoval. Bez ní nginx pošle adresu z proxy_pass a aplikace, které skládají odkazy z hostitele, se rozbijí.
  • X-Real-IP a X-Forwarded-For předávají IP adresu návštěvníka. Bez nich vypadá každý požadavek, jako by přišel z 127.0.0.1.
  • X-Forwarded-Proto říká aplikaci, zda návštěvník použil HTTPS, aby nepřesměrovávala ve smyčce.

Balíček nginx v Ubuntu tyto řádky obsahuje v /etc/nginx/proxy_params, takže include proxy_params; je zkratka.

Na koncovém lomítku záleží. Pro aplikaci pod cestou:

location /app/ {
    proxy_pass http://127.0.0.1:3000/;
}

S lomítkem za portem dorazí /app/login do aplikace jako /login. Bez něj aplikace dostane celé /app/login.

WebSockets

Chatovací aplikace, živé dashboardy a mnoho administračních panelů používá WebSockets, které potřebují dvě hlavičky navíc. Přidejte tuto mapu jednou do bloku http, například v novém souboru /etc/nginx/conf.d/websocket.conf:

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

Potom do location:

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 1h;

nginx zavře proxované spojení, které 60 sekund nic nepošle; delší proxy_read_timeout udrží tiché WebSockets otevřené. proxy_http_version 1.1 je výchozí až od nginx 1.29.7 a Ubuntu 24.04 dodává 1.24, takže řádek ponechte.

Krok 3: HTTPS zdarma s Certbotem

sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/local/bin/certbot
sudo certbot --nginx -d app.example.com

Certbot získá bezplatný certifikát Let's Encrypt, doplní nastavení HTTPS do vašeho server bloku a může přesměrovat HTTP na HTTPS. Certifikát obnovuje automaticky; ověřte to příkazem sudo certbot renew --dry-run. Více o certifikátech v návodu jak získat SSL certifikát zdarma.

Řešení chyb 502, 504 a 413

ChybaObvyklá příčinaŘešení
502 Bad Gatewaynginx se nedostane k aplikaci: je zastavená, spadla, nebo naslouchá na jiném portu či adreseSpusťte aplikaci, ověřte port pomocí curl http://127.0.0.1:PORT, přečtěte /var/log/nginx/error.log
504 Gateway TimeoutAplikaci trvala odpověď déle než 60 sekundZrychlete požadavek, nebo pro danou location zvyšte proxy_read_timeout
413 Request Entity Too LargeNahrávaný soubor je větší než výchozí limit nginx 1 MBNastavte client_max_body_size 50m; v server bloku
Smyčka přesměrováníAplikace neví, že návštěvník použil HTTPSPředávejte X-Forwarded-Proto a řekněte aplikaci, že běží za proxy

Po každé změně: sudo nginx -t, potom sudo systemctl reload nginx.

Provozujte to na HytHost VPS

Reverzní proxy potřebuje server, kde máte porty 80 a 443 pod kontrolou. HytHost VPS tarify běží na KVM s plným root přístupem, SSD úložištěm a ochranou proti DDoS; zvolte Ubuntu 24.04 a postupujte podle kroků výše. Provozujete aplikace v kontejnerech? Nejdřív nastavte Docker podle návodu jak nainstalovat Docker na Ubuntu a porty kontejnerů navažte na 127.0.0.1, aby se k nim dostal jen nginx.

FAQ

Časté dotazy

Reverzní proxy přeposílá požadavky jedné nebo více aplikacím za sebou. Load balancer je reverzní proxy, která rozkládá požadavky mezi několik kopií stejné aplikace. nginx zvládne obojí, s blokem upstream, který kopie vyjmenuje.

nginx se nedostane k aplikaci za sebou. Zkontrolujte, že aplikace běží a naslouchá na adrese a portu z proxy_pass, a přesnou příčinu najdete v /var/log/nginx/error.log.

Ne, pokud aplikace běží na stejném serveru. nginx obstará HTTPS pro návštěvníky a s aplikací komunikuje obyčejným HTTP na 127.0.0.1, které nikdy neopustí stroj.

Dejte každé aplikaci vlastní server blok s vlastním server_name, například app.example.com a api.example.com, každý s proxy_pass na jiný port.

Ano. Port každého kontejneru publikujte jen na 127.0.0.1 a nasměrujte na něj proxy_pass. Kontejnery tak zůstanou mimo veřejný internet, což je důležité, protože publikované porty Dockeru obcházejí ufw.

Hostujte své aplikace za nginx

HytHost KVM VPS s plným root přístupem, SSD úložištěm a ochranou proti DDoS od €2.92/měs.

Live chat 8 AM – 11 PM (Chișinău time) · tickets answered during business hours

Byl tento návod užitečný?