====== 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*