====== Nginx ======
**Nginx** (vyslovováno jako „engine-X“) je výkonný, lehký a vysoce škálovatelný webový server a reverzní proxy server. Vyvinutý Igorom Sysoevem v roce 2002, dnes patří k nejrozšířenějším webovým serverům na světě (vedle Apache a Microsoft IIS).
===== Základní vlastnosti =====
* **Asynchronní, událostně řízená architektura** – efektivně zvládá tisíce souběžných připojení s minimální spotřebou paměti.
* **Vhodný pro statický obsah**, ale díky FastCGI, uWSGI a dalším rozhraním také pro dynamický obsah.
* **Reverzní proxy** – může přesměrovávat požadavky na backend servery (např. PHP-FPM, Node.js, Python aplikace).
* **Load balancing** – distribuce zátěže mezi více backend serverů.
* **SSL/TLS terminace** – odlehčení backendů šifrováním/dešifrováním provozu.
* **Rychlá doručování statického obsahu** – ideální pro obrázky, CSS, JavaScript atd.
===== Instalace =====
Na většině moderních Linuxových distribucí lze Nginx nainstalovat přímo z oficiálních repozitářů:
# Ubuntu/Debian
sudo apt update
sudo apt install nginx
# CentOS/RHEL/Fedora
sudo dnf install nginx # Fedora / RHEL 8+
# nebo
sudo yum install nginx # starší verze
Po instalaci je služba obvykle automaticky spuštěná a povolená při startu systému.
===== Základní konfigurace =====
Konfigurační soubory Nginx se nacházejí většinou v:
* `/etc/nginx/nginx.conf` – hlavní konfigurační soubor
* `/etc/nginx/sites-available/` – dostupné konfigurace webů
* `/etc/nginx/sites-enabled/` – symbolické odkazy na aktivní konfigurace
==== Příklad základního server bloku ====
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
==== SSL/TLS konfigurace (s Let's Encrypt) ====
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
root /var/www/example.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
# Přesměrování HTTP → HTTPS
server {
listen 80;
server_name example.com;
return 301 https://$server_name$request_uri;
}
===== Běžné direktivy =====
^ Direktiva ^ Popis ^
| **listen** | Port, na kterém server naslouchá (např. `80`, `443 ssl`) |
| **server_name** | Název domény |
| **root** | Kořenový adresář webu |
| **index** | Výchozí soubor při požadavku na adresář |
| **location** | Definuje chování pro určitou cestu URL |
| **proxy_pass** | Přesměrování požadavku na backend server |
| **try_files** | Hledá soubory v pořadí a vrací první nalezený nebo fallback |
===== Použití jako reverzní proxy =====
location /api/ {
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;
}
===== Řešení běžných problémů =====
* **502 Bad Gateway** – backend server (např. PHP-FPM) není spuštěn nebo Nginx nemůže komunikovat s ním.
* **403 Forbidden** – problém s právy k souborům nebo adresářům.
* **404 Not Found** – špatně nastavený `root` nebo `location` blok.
* **Test konfigurace**: `sudo nginx -t`
* **Reload konfigurace bez restartu**: `sudo systemctl reload nginx`
===== Užitečné příkazy =====
sudo nginx -t # test konfigurace
sudo systemctl reload nginx # načtení nové konfigurace
sudo systemctl restart nginx # restart serveru
sudo systemctl status nginx # stav služby
===== Externí zdroje =====
* Oficiální dokumentace: [[https://nginx.org/en/docs/|nginx.org/en/docs]]
* Nginx Wiki: [[https://wiki.nginx.org/|wiki.nginx.org]]
* Let’s Encrypt – certifikáty zdarma: [[https://letsencrypt.org/|letsencrypt.org]]
===== Viz také =====
* [[Apache]]
* [[PHP-FPM]]
* [[Let's Encrypt]]
* [[HTTP/2]]
* [[TLS]]
----
*Poslední aktualizace: 2026-01-05*