proxy_pass ·
proxy_set_header ·
proxy_cache ·
WebSocket ·
Timeouts & Buffering ·
Sicherheit
NGINX als Reverse Proxy ist die Standardlösung für die Auslieferung von Webanwendungen. Diese Cheatsheet enthält alle wichtigen Direktiven für eine optimale Proxy-Konfiguration.
proxy_pass ist die zentrale Direktive für den Reverse Proxy. Sie leitet Anfragen an ein Backend weiter. Die proxy_set_header-Direktiven setzen wichtige Header für das Backend.
| Variable | Bedeutung |
|---|---|
| $host | Host-Header der Anfrage |
| $remote_addr | IP-Adresse des Clients |
| $proxy_add_x_forwarded_for | Client-IP + X-Forwarded-For-Kette |
| $scheme | Protokoll (http/https) |
| $http_upgrade | Upgrade-Header (für WebSocket) |
| $request_uri | Vollständige URI mit Query-String |
proxy_pass entscheidet, ob der location-Pfad an den Backend-Pfad angehängt wird. Mit Slash wird er ersetzt, ohne Slash wird er angefügt.
Header und Variablen sind entscheidend, damit das Backend die richtige Client-IP, das Protokoll und den Hostnamen erkennt – besonders wichtig hinter einem Proxy.
trust proxy aktivieren, damit die X-Forwarded-* Header akzeptiert werden. In Express: app.set('trust proxy', true).
proxy_cache ermöglicht das Caching von Antworten des Backends. Das reduziert die Last auf dem Backend und verbessert die Antwortzeiten erheblich.
| Direktive | Beschreibung |
|---|---|
| proxy_cache_path | Cache-Verzeichnis, Größe, Zone |
| proxy_cache | Aktiviert den Cache für eine Zone |
| proxy_cache_key | Schlüssel für Cache-Eintrag (z.B. $scheme$host$request_uri) |
| proxy_cache_valid | Gültigkeitsdauer für HTTP-Statuscodes |
| proxy_cache_min_uses | Mindestanzahl Anfragen vor Caching |
| proxy_cache_bypass | Bedingungen für Cache-Bypass |
proxy_cache_path-Direktive muss im http-Block definiert werden. Die Cache-Größe (max_size) sollte an den verfügbaren Speicherplatz angepasst werden.
WebSocket-Proxy erfordert spezielle Header, damit die Verbindung von HTTP auf das WebSocket-Protokoll aktualisiert wird. proxy_http_version 1.1 ist zwingend erforderlich.
proxy_read_timeout und proxy_send_timeout für stabile Verbindungen – besonders bei Chats oder Live-Anwendungen.
Performance und Timeouts beeinflussen die Geschwindigkeit und Stabilität des Proxys. Buffering verbessert die Performance bei großen Antworten, während Timeouts hängende Verbindungen verhindern.
proxy_buffering off die Performance verbessern, da der Proxy die Antwort sofort an den Client weiterleitet.
Sicherheitskonfigurationen schützen den Proxy vor Missbrauch – durch Rate Limiting, IP-Blockierung, Header und SSL-Zwangsverschlüsselung.
limit_req_status 429 um einen passenden HTTP-Statuscode für zu viele Anfragen zurückzugeben.
proxy_pass
proxy_set_header
proxy_cache
Upgrade
timeout
limit_req
proxy_pass http://localhost:3000 ·
proxy_set_header Host $host ·
proxy_cache my_cache