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 zuX-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.