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í.
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ď:
| 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 |
PHP nejčastěji běží jako FastCGI proces přes PHP-FPM (PHP FastCGI Process Manager):
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:
| 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ěď.
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.
*Poslední aktualizace: 2026-01-05*