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 -yNa 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.conf | Hlavní 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
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.
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
Vytvoř symlink
sudo ln -s /etc/nginx/sites-available/muj-web /etc/nginx/sites-enabled/Otestuj konfiguraci
sudo nginx -tNačti nginx
sudo systemctl reload nginxPo 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.czCertbot 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
| Chyba | Příčina |
|---|---|
502 Bad Gateway | Aplikace za proxy_pass neběží |
conflicting server name | Dva weby mají stejný server_name |
duplicate default server | Dvakrá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, nerestart. 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.