So erstellen Sie einen Reverse-Proxy in Nginx

NGINX ist ein vielseitiger und leistungsstarker Webserver, der häufig als Reverse-Proxy-Server verwendet wird. Ein Reverse-Proxy ist ein Vermittler für Client-Anfragen und verteilt diese an einen oder mehrere Backend-Server. Diese Konfiguration dient dem Lastenausgleich, verbessert die Sicherheit und bietet hohe Verfügbarkeit. Die Verwendung von NGINX als Reverse-Proxy kann die Skalierbarkeit und Zuverlässigkeit Ihrer Webdienste verbessern.

In dieser Anleitung wird gezeigt, wie Sie in NGINX einen Reverse-Proxy erstellen, und es werden die erforderlichen Konfigurationsschritte beschrieben, um Clientanforderungen effizient an Backend-Server weiterzuleiten.

Erstellen und Konfigurieren eines Reverse-Proxys in Nginx

Einrichten eines einfachen Reverse-Proxys in Nginx

Um Nginx als Reverse-Proxy zu konfigurieren, greifen Sie zunächst auf die Nginx-Konfigurationsdatei zu. Normalerweise befindet sich diese Datei unter /etc/nginx/nginx.conf. Öffnen Sie sie mit Ihrem bevorzugten Texteditor, beispielsweise mit sudo Nano:

sudo nano /etc/nginx/nginx.conf

Konzentrieren Sie sich in der Konfigurationsdatei auf den HTTP-Block. Hier fügen Sie einen Serverblock ein, den Eckpfeiler Ihres Reverse-Proxy-Setups. Der Serverblock überwacht HTTP-Verkehr auf einem angegebenen Port, normalerweise Port 80. Innerhalb dieses Blocks teilt die location/direction Nginx mit, wie eingehende Anfragen zu behandeln sind. Verwenden Sie die proxy_pass-Direktive, um diese Anfragen an den Backend-Server umzuleiten, der durch seine IP-Adresse oder seinen Hostnamen angegeben ist.

Die Konfiguration könnte beispielsweise folgendermaßen aussehen:

http {
    ...
    server {
        listen 80;
        location / {
            proxy_pass http://backendserver_address;
        }
    }
}

Denken Sie daran, backendserver_address durch die tatsächliche Adresse Ihres Backend-Servers zu ersetzen. Dieses einfache Setup weist Nginx an, alle eingehenden HTTP-Anfragen an den angegebenen Backend-Server weiterzuleiten.

Erweiterte Reverse-Proxy-Konfiguration in Nginx

In einer erweiterten Konfiguration möchten Sie möglicherweise zusätzliche Aspekte des Reverse-Proxys konfigurieren. Dies können Einstellungen für Lastenausgleich, SSL-Terminierung oder Caching sein.

Implementieren des Lastenausgleichs

Wenn Sie mehrere Backend-Server betreiben, kann Nginx eingehenden Datenverkehr auf diese verteilen und so Leistung und Zuverlässigkeit verbessern. Zum Lastenausgleich ändern Sie die Direktive proxy_pass so, dass sie auf eine Gruppe von Servern verweist, die in einem Upstream-Block definiert sind. Beispiel:

http {
    upstream backend_servers {
        server backend1.example.com;
        server backend2.example.com;
    }

    server {
        listen 80;
        location / {
            proxy_pass http://backend_servers;
        }
    }
}

Diese Konfiguration ermöglicht es Nginx, die Last zwischen backend1.example.com und backend2.example.com auszugleichen.

Konfigurieren der SSL-Terminierung

Stellen Sie zur SSL-Terminierung sicher, dass der Serverblock auf Port 443 lauscht und das SSL-Zertifikat und die Schlüsseldateispeicherorte einschließt. Die Konfiguration könnte folgendermaßen aussehen:

server {
    listen 443 ssl;
    ssl_certificate /path/to/certificate.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://backendserver_address;
    }
}

Dieses Setup ermöglicht es Nginx, SSL-Verbindungen zu verarbeiten und Anfragen zu entschlüsseln, bevor sie an Backend-Server weitergeleitet werden.

Änderungen abschließen

Nachdem Sie Nginx konfiguriert haben, testen Sie die Konfiguration auf Syntaxfehler mit:

nginx -t

Wenn der Test erfolgreich ist, laden Sie Nginx neu, um die Änderungen mit folgendem Befehl anzuwenden:

sudo systemctl reload nginx

Dieser Schritt stellt sicher, dass Ihre Änderungen wirksam werden, ohne aktuelle Verbindungen zu unterbrechen.

Zusätzliches Lernen: Einrichten von Nginx-Proxy-Header-Werten

Wenn Sie Nginx als Reverse-Proxy konfigurieren, ist es wichtig, die Proxy-Header-Werte richtig einzustellen. Diese Header sind entscheidend, um die ursprünglichen Details der Client-Anforderung an die Backend-Server zu übermitteln. Diese Informationen können die IP-Adresse des Clients, das ursprüngliche Protokoll der Anforderung und mehr umfassen. Durch das richtige Einstellen dieser Header wird sichergestellt, dass die Backend-Server über den Kontext verfügen, den sie benötigen, um angemessen auf Anforderungen zu reagieren.

Grundlegendes zu Proxy-Headern

Proxy-Header sind bei einem Reverse-Proxy-Setup unverzichtbar, da sie Informationen über die ursprüngliche Anfrage des Clients enthalten. Diese Informationen sind für Backend-Server erforderlich, um fundierte Entscheidungen über die Verarbeitung eingehender Anfragen zu treffen. Beispielsweise kann die Kenntnis der ursprünglichen IP-Adresse des Clients für Protokollierungs-, Analyse- oder Sicherheitszwecke wichtig sein.

Allgemeine Proxy-Header-Konfigurationen

Zu den gängigen Proxy-Headern, die Sie in Nginx konfigurieren können, gehören:

  • X-Real-IP: Dieser Header wird verwendet, um die ursprüngliche IP-Adresse des Clients an den Backend-Server zu übergeben.
  • X-Forwarded-For: Ähnlich zu X-Real-IP, dieser Header enthält eine Liste aller Server, die die Anforderung durchlaufen hat, einschließlich der IP des Clients.
  • X-Forwarded-Proto: Dieser Header gibt das in der ursprünglichen Anforderung des Clients verwendete Protokoll (HTTP oder HTTPS) an.

Implementieren von Proxy-Header-Einstellungen in Nginx

Um diese Header in Ihrer Nginx-Konfiguration festzulegen, müssen Sie den Standortblock in Ihrem Serverblock ändern. Hier ist ein Beispiel, wie Sie diese Header festlegen könnten:

server {
    listen 80;
    location / {
        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;
        proxy_pass http://backendserver_address;
    }
}

In dieser Konfiguration sind $remote_addr und $scheme Variablen, die Nginx automatisch mit der IP-Adresse des Clients bzw. dem Schema der Anfrage (HTTP oder HTTPS) füllt.

Best Practices für Proxy-Header

Beim Konfigurieren von Proxy-Headern ist es wichtig, die Sicherheit und Genauigkeit der weitergeleiteten Informationen zu berücksichtigen. Um potenzielles Spoofing zu verhindern, stellen Sie sicher, dass Ihre Backend-Server so konfiguriert sind, dass sie diesen Headern nur vertrauen, wenn sie von Ihrem Nginx-Reverse-Proxy stammen.

Abschluss

Durch die erfolgreiche Konfiguration von NGINX als Reverse-Proxy können Sie Ihre Web-Infrastruktur für bessere Leistung, Sicherheit und Skalierbarkeit optimieren. Überwachen und passen Sie Ihre Konfiguration regelmäßig an, um eine optimale Lastverteilung und Reaktionszeiten sicherzustellen. Die Implementierung eines Reverse-Proxys mit NGINX bietet eine robuste Lösung für die Verwaltung von Client-Anfragen und die Aufrechterhaltung einer hohen Verfügbarkeit Ihrer Webdienste.

Joshua James
Folgen Sie mir
Letzte Artikel von Joshua James (Alle anzeigen)

Hinterlasse einen Kommentar