Kurz gesagt
Bei PHP-FPM ist der Webserver selten der Engpass, sondern PHP und die Datenbank. Nehmen Sie Apache, wenn die Anwendung auf .htaccess setzt oder Ihr Team Apache kennt. Nehmen Sie nginx, wenn Sie zentral konfigurieren, viele statische Dateien ausliefern oder ohnehin nginx als Proxy einsetzen.
| Kriterium | nginx | Apache |
|---|---|---|
| Anbindung an PHP | fastcgi_pass an Socket oder Port von PHP-FPM | mod_proxy_fcgi mit Event-MPM, alternativ mod_php |
| .htaccess | Nicht unterstützt, Regeln müssen in die Server-Konfiguration | Unterstützt, Anwendungen bringen eigene Regeln mit |
| Konfigurationsstil | Zentral, kompakt, location-Blöcke | Zentral plus verteilt per .htaccess, viele Module |
| Upload-Limit | client_max_body_size | LimitRequestBody |
| Timeout zu PHP | fastcgi_read_timeout | ProxyTimeout bzw. Timeout |
| Statische Dateien | Sehr ressourcenschonend | Gut, mit Event-MPM ebenfalls effizient |
| Herstellerdoku | Bei Nextcloud und vielen Apps vorhanden, aber Regeln müssen exakt passen | Oft der Referenz-Setup der Anwendung |
| Konfigtest | nginx -t | apachectl configtest |
nginx passt, wenn …
- nginx ohnehin als Reverse Proxy oder TLS-Terminator vor anderen Diensten läuft.
- Sie alle Regeln zentral und versioniert in der Server-Konfiguration haben wollen.
- viele statische Dateien oder viele gleichzeitige Verbindungen anfallen.
- Anwender oder Plugins keine Webserver-Regeln per .htaccess ändern sollen.
Apache passt, wenn …
- die Anwendung
.htaccess-Regeln mitbringt und aktualisiert, etwa WordPress-Plugins oder Nextcloud. - Sie Shared-Hosting-artige Setups mit Kunden betreiben, die eigene Regeln brauchen.
- das Team Apache kennt und keine Zeit für eine Umstellung hat.
- Sie Module wie
mod_auth_mellonodermod_auth_openidcnutzen wollen.
Stolpersteine aus dem Betrieb
- 502 Bad Gateway nach Updates: PHP-FPM-Socket hat einen neuen Pfad oder falsche Rechte. Socket-Pfad im Webserver und in der Pool-Konfiguration vergleichen.
- Upload bricht ab, obwohl PHP angepasst wurde: Das Limit im Webserver oder im vorgeschalteten Proxy ist noch klein.
- 504 Gateway Timeout bei langen Aufgaben: Timeout im Webserver ist kürzer als
max_execution_timebzw.request_terminate_timeoutin PHP-FPM. - Nach Umstellung von Apache auf nginx fehlen .htaccess-Schutzregeln. Prüfen Sie, dass Verzeichnisse wie
data/oderconfig/nicht per HTTP erreichbar sind.
Häufige Fragen
Ist nginx schneller als Apache?
Bei statischen Dateien und vielen offenen Verbindungen ist nginx meist sparsamer. Bei PHP-Anwendungen mit PHP-FPM bestimmt aber fast immer PHP, Caching und die Datenbank die Antwortzeit, nicht die Wahl des Webservers.
Kann ich beide kombinieren?
Ja, häufig läuft nginx als Reverse Proxy mit TLS vorn und Apache dahinter. Das funktioniert, verdoppelt aber Timeouts, Upload-Limits und Logs, die Sie bei Fehlern beide prüfen müssen.