worker_processes ·
worker_connections ·
gzip ·
caching ·
buffer ·
keepalive
Diese Direktiven optimieren die Leistung von NGINX – von der Worker-Prozess-Konfiguration über Komprimierung und Caching bis hin zu Verbindungsmanagement und Buffering.
Worker Processes steuern, wie viele NGINX-Arbeitsprozesse laufen. worker_connections begrenzt die Anzahl gleichzeitiger Verbindungen pro Worker.
| Direktive | Beschreibung | Empfehlung |
|---|---|---|
| worker_processes | Anzahl der Worker-Prozesse | auto (entspricht CPU-Kernen) |
| worker_connections | Max. Verbindungen pro Worker | 1024 - 4096 (je nach RAM) |
| worker_rlimit_nofile | Max. offene Dateien pro Worker | 65536 (oder höher) |
| use | Event-Methode | epoll (Linux), kqueue (BSD) |
| multi_accept | Mehrere Verbindungen gleichzeitig | on (für hohe Last) |
worker_processes auto nutzt NGINX automatisch alle verfügbaren CPU-Kerne. Die maximale Anzahl Verbindungen ist worker_processes * worker_connections.
gzip komprimiert Antworten, bevor sie an den Client gesendet werden – das reduziert die Bandbreitennutzung und verbessert die Ladezeit.
| Direktive | Beschreibung | Empfehlung |
|---|---|---|
| gzip on | Komprimierung aktivieren | on |
| gzip_types | MIME-Typen, die komprimiert werden | text/*, application/json, application/javascript |
| gzip_comp_level | Komprimierungsstufe (1-9) | 5-6 (gute Balance) |
| gzip_min_length | Mindestgröße für Komprimierung | 1000 (Bytes) |
| gzip_proxied | Komprimierung für Proxy-Antworten | any |
| gzip_disable | Deaktivierung für bestimmte User-Agents | "msie6" |
| gzip_vary | Vary-Header setzen | on |
gzip_static on, um vorkomprimierte .gz-Dateien auszuliefern.
Caching reduziert die Last auf Backend-Server und verbessert die Antwortzeiten erheblich. NGINX kann sowohl Proxy-Caching als auch Browser-Caching steuern.
X-Cache-Status) hilft beim Debugging – mögliche Werte: HIT, MISS, BYPASS, EXPIRED.
Buffer und Timeouts steuern, wie NGINX mit eingehenden und ausgehenden Daten umgeht – sie verhindern Speicherprobleme und hängende Verbindungen.
| Direktive | Beschreibung | Empfehlung |
|---|---|---|
| client_header_timeout | Timeout für Header | 60s |
| client_body_timeout | Timeout für Body | 60s |
| client_body_buffer_size | Buffer für Body | 128k |
| client_max_body_size | Maximale Body-Größe | 1m-100m (je nach Anwendung) |
| proxy_buffers | Anzahl/Größe der Proxy-Buffer | 8 16k oder 32 16k |
| proxy_buffer_size | Größe für Proxy-Header | 16k |
| proxy_busy_buffers_size | Buffer für aktive Verbindungen | 32k |
| send_timeout | Timeout für Senden | 60s |
proxy_buffering off verwenden, um Daten direkt an den Client zu streamen (z.B. für große Dateien oder Server-Sent Events).
Keepalive reduziert den Overhead durch den Aufbau neuer Verbindungen, indem bestehende Verbindungen wiederverwendet werden – sowohl für Client-Verbindungen als auch für Upstream-Verbindungen.
proxy_http_version 1.1 und proxy_set_header Connection "" gesetzt werden. Die Anzahl der Keepalive-Verbindungen sollte der Anzahl der Worker-Prozesse entsprechen.
Limits schützen Ihren Server vor Überlastung und Missbrauch – durch Ratenbegrenzung, Verbindungslimits und maximale Body-Größen.
limit_req mit burst und nodelay ermöglicht eine sanftere Ratenbegrenzung – kurze Spitzen werden erlaubt, langfristig wird die Rate begrenzt.
worker
gzip
cache
buffer
keepalive
limit
worker_processes auto ·
gzip on ·
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mycache:10m