Skip to Content
🔥 Nová dokumentace BlazeHost.cz je online — prohlédnout

Nginx

Nginx je rychlý webserver a reverse proxy. Poslouží ke statickému webu i k přesměrování provozu na aplikaci běžící na pozadí.

Instalace

sudo apt update sudo apt install nginx -y

Na Rocky/AlmaLinux použij sudo dnf install nginx -y a službu spusť přes sudo systemctl enable --now nginx.

Otevři v prohlížeči IP serveru — uvidíš uvítací stránku nginx.

Struktura konfigurace

Na Debianu a Ubuntu se weby definují v sites-available a aktivují symlinkem do sites-enabled.

AdresářK čemu slouží
/etc/nginx/nginx.confHlavní konfigurace
/etc/nginx/sites-available/Definice všech webů
/etc/nginx/sites-enabled/Symlinky na aktivní weby

Na Rocky/AlmaLinux tahle struktura chybí. Konfigurace se dává rovnou do /etc/nginx/conf.d/*.conf. Princip server bloku je ale stejný.

Statický web

/etc/nginx/sites-available/muj-web
server { listen 80; server_name mujweb.cz www.mujweb.cz; root /var/www/muj-web; index index.html; location / { try_files $uri $uri/ =404; } }

Reverse proxy

Když ti aplikace (Node.js, Python, kontejner) běží na lokálním portu, nginx ji vystaví na doméně a přidá potřebné hlavičky.

/etc/nginx/sites-available/muj-web
server { listen 80; server_name app.mujweb.cz; 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; } }

Hlavička X-Forwarded-Proto řekne aplikaci, že původní požadavek přišel přes HTTPS. Bez ní ti aplikace za proxy může generovat odkazy s http://.

Aktivace webu

sudo ln -s /etc/nginx/sites-available/muj-web /etc/nginx/sites-enabled/

Otestuj konfiguraci

sudo nginx -t

Načti nginx

sudo systemctl reload nginx

Po každé změně spusť nginx -t před reloadem. Reload s chybnou konfigurací může shodit všechny weby na serveru najednou, ne jen ten upravovaný.

HTTPS přes certbot

Certifikát Let’s Encrypt nasadíš do nginx jedním příkazem:

sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d mujweb.cz -d www.mujweb.cz

Certbot sám upraví server blok a nastaví přesměrování HTTP na HTTPS. Detaily včetně automatického obnovení najdeš v článku SSL.

Časté chyby

ChybaPříčina
502 Bad GatewayAplikace za proxy_pass neběží
conflicting server nameDva weby mají stejný server_name
duplicate default serverDvakrát listen 80 default_server
403 ForbiddenŠpatná práva nebo cesta v root

Tipy

  • Odstraň výchozí web (sites-enabled/default), ať nekoliduje se tvým.
  • Používej reload, ne restart. Reload nezahodí aktivní spojení.
  • Loguj chyby. sudo tail -f /var/log/nginx/error.log řekne víc než 502.

Poznámka

Nginx patří na VPS. Na herním hostingu web nehostuješ — použij samostatný webhosting nebo VPS.

Související články