Obsah

FastCGI

FastCGI (Fast Common Gateway Interface) je protokol a rozhraní pro komunikaci mezi webovým serverem (např. Nginx, Apache) a externími aplikacemi (např. PHP, Python, Perl). Je to vylepšená a výkonnější náhrada za původní CGI (Common Gateway Interface).

Na rozdíl od CGI, kde se pro každý požadavek spouští nový proces aplikace, FastCGI udržuje procesy v běhu, což výrazně snižuje režii a zvyšuje výkon – zejména u dynamických webových aplikací.

Proč FastCGI?

Jak to funguje?

1. Webový server (např. Nginx) obdrží požadavek na dynamický obsah (např. `.php` soubor). 2. Namísto spuštění skriptu přímo server předá požadavek FastCGI procesu (např. PHP-FPM). 3. FastCGI proces zpracuje požadavek a vrátí výsledek zpět webovému serveru. 4. Webový server odešle odpověď klientovi.

Komunikace probíhá buď:

FastCGI vs CGI

Vlastnost CGI FastCGI
Procesy Nový proces pro každý požadavek Trvalé procesy (fond)
Výkon Nízký (vysoká režie) Vysoký
Použití dnes Téměř zastaralé Standard pro moderní servery
Příklad použití Staré CGI skripty PHP-FPM, uWSGI, Gunicorn

FastCGI a PHP

PHP nejčastěji běží jako FastCGI proces přes PHP-FPM (PHP FastCGI Process Manager):

Konfigurace v Nginx

Příklad předání PHP požadavku FastCGI procesu (PHP-FPM):

location ~ \.php$ {
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    fastcgi_index index.php;
}

Důležité direktivy:

FastCGI parametry (důležité proměnné)

Proměnná Popis
————————–——-
`SCRIPT_FILENAME` Absolutní cesta ke skriptu na disku (nejdůležitější!)
`QUERY_STRING` Část URL za `?`
`REQUEST_METHOD` HTTP metoda (`GET`, `POST`, atd.)
`CONTENT_TYPE` MIME typ těla požadavku
`HTTP_HOST` Hodnota hlavičky `Host`
`REMOTE_ADDR` IP adresa klienta

Bez správného nastavení `SCRIPT_FILENAME` bude PHP vracet chybu nebo prázdnou odpověď.

Další FastCGI implementace

FastCGI není jen pro PHP. Používá se i pro:

I když v současnosti jsou populárnější jiné protokoly (např. HTTP pro mikroslužby, WSGI pro Python), FastCGI stále dominuje v PHP ekosystému.

Běžné chyby

Bezpečnostní doporučení

Viz také

Externí zdroje


*Poslední aktualizace: 2026-01-05*