NGINX REVERSE PROXY ARCHITECTURE Nginx SSL-Terminierung Lastverteilung Caching Komprimierung Rate Limiting Nginx routes client requests to the appropriate backend server

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.