Nginx ist einer der am weitesten verbreiteten Reverse Proxies weltweit. Dieser Leitfaden deckt alles ab, von der grundlegenden proxy_pass-Konfiguration bis zu erweiterten Konfigurationen einschliesslich WebSocket-Unterstuetzung, Caching und Health Checks.
Was ist ein Reverse Proxy?
Ein Reverse Proxy steht zwischen Clients (Browsern) und Ihren Backend-Servern. Vorteile:
- SSL-Terminierung — HTTPS auf Proxy-Ebene verwalten
- Lastverteilung — Traffic auf mehrere Instanzen verteilen
- Caching — Haeufig angeforderte Inhalte bereitstellen
- Sicherheit — Backend-Server-Details verbergen
- Komprimierung — Antworten vor dem Senden komprimieren
Grundkonfiguration
server {
listen 80;
server_name app.knowledgexchange.xyz;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
SSL-Terminierung
server {
listen 443 ssl http2;
server_name app.knowledgexchange.xyz;
ssl_certificate /etc/letsencrypt/live/app.knowledgexchange.xyz/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/app.knowledgexchange.xyz/privkey.pem;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
WebSocket-Proxy
location /ws/ {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400s;
}
Lastverteilung
upstream backend_pool {
least_conn;
server 10.0.1.10:3000;
server 10.0.1.11:3000;
server 10.0.1.12:3000;
}
Rate Limiting
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;
location /api/ {
limit_req zone=api_limit burst=20 nodelay;
limit_req_status 429;
proxy_pass http://127.0.0.1:3000;
}
Sicherheit
server_tokens off;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
client_max_body_size 10m;
Konfiguration Testen
sudo nginx -t
sudo systemctl reload nginx
Fazit
Nginx als Reverse Proxy bietet eine zuverlaessige, leistungsstarke Schicht zwischen Ihren Benutzern und Ihren Backend-Anwendungen. Beginnen Sie einfach mit proxy_pass, dann fuegen Sie SSL-Terminierung, Caching, Rate Limiting und Lastverteilung nach Bedarf hinzu.