Reverse Proxy mit NGINX und Let's Encrypt - Tutorial deutsch
Inhaltsverzeichnis:
- Voraussetzungen
- Verwendung von Nginx als Reverse Proxy
- Anforderungsheader übergeben
- Konfigurieren von Nginx als Reverse Proxy für einen Nicht-HTTP-Proxy-Server
- Allgemeine Nginx Reverse Proxy-Optionen
- Fazit
Ein Reverseproxy ist ein Dienst, der eine Clientanforderung entgegennimmt, die Anforderung an einen oder mehrere Proxy-Server sendet, die Antwort abruft und die Antwort des Servers an den Client übermittelt.
Aufgrund seiner Leistung und Skalierbarkeit wird NGINX häufig als Reverse-Proxy für HTTP- und Nicht-HTTP-Server verwendet. Eine typische Reverse-Proxy-Konfiguration besteht darin, Nginx vor Node.js-, Python- oder Java-Anwendungen zu setzen.
Die Verwendung von Nginx als Reverse Proxy bietet Ihnen mehrere zusätzliche Vorteile:
- Lastausgleich - Nginx kann einen Lastausgleich durchführen, um die Anforderungen der Clients auf die Proxy-Server zu verteilen, wodurch die Leistung, Skalierbarkeit und Zuverlässigkeit verbessert werden. Zwischenspeichern - Mit Nginx als Reverse-Proxy können Sie die vorgerenderten Versionen von Seiten zwischenspeichern, um die Ladezeiten der Seiten zu verkürzen. Es funktioniert, indem der Inhalt, der von den Antworten der Proxy-Server empfangen wurde, zwischengespeichert wird und verwendet wird, um auf Clients zu antworten, ohne dass der Proxy-Server jedes Mal nach demselben Inhalt gefragt werden muss. SSL-Beendigung - Nginx kann als SSL-Endpunkt für Verbindungen mit den Clients fungieren. Eingehende SSL-Verbindungen werden verarbeitet und entschlüsselt, und die Antworten des Proxy-Servers werden verschlüsselt. Komprimierung - Wenn der Proxy-Server keine komprimierten Antworten sendet, können Sie Nginx so konfigurieren, dass die Antworten komprimiert werden, bevor sie an die Clients gesendet werden. DDoS-Angriffe verringern - Sie können die Anzahl der eingehenden Anfragen und Verbindungen pro IP-Adresse auf einen für normale Benutzer typischen Wert begrenzen. Mit Nginx können Sie auch den Zugriff basierend auf dem Client-Standort und dem Wert der Anforderungsheader wie "User-Agent" und "Referer" blockieren oder einschränken.
Dieser Artikel beschreibt die Schritte, die zum Konfigurieren von Nginx als Reverse Proxy erforderlich sind.
Voraussetzungen
Wir gehen davon aus, dass Sie Nginx auf Ihrem Ubuntu-, CentOS- oder Debian-Server installiert haben.
Verwendung von Nginx als Reverse Proxy
Um Nginx als Reverse-Proxy für einen HTTP-Server zu konfigurieren, öffnen Sie die Serverblock-Konfigurationsdatei der Domäne und geben Sie einen Speicherort und einen Proxy-Server darin an:
server { listen 80; server_name www.example.com example.com; location /app { proxy_pass http://127.0.0.1:8080; } }
Die Proxy-Server-URL wird mit der Anweisung
proxy_pass
und kann
HTTP
oder
HTTPS
als Protokoll, Domänenname oder IP-Adresse sowie einen optionalen Port und URI als Adresse verwenden.
Die obige Konfiguration weist Nginx an, alle Anforderungen an den
/app
Speicherort an den Proxy-Server unter
http://127.0.0.1:8080
.
/etc/nginx/conf.d
Verzeichnis
/etc/nginx/sites-available
gespeichert, während sie unter CentOS im Verzeichnis
/etc/nginx/conf.d
.
Um besser zu veranschaulichen, wie die Anweisungen
location
und
proxy_pass
funktionieren, nehmen wir das folgende Beispiel:
server { listen 80; server_name www.example.com example.com; location /blog { proxy_pass http://node1.com:8000/wordpress/; } }
Wenn ein Besucher auf
http://example.com/blog/my-post
zugreift, überträgt Nginx diese Anforderung an
http://node1.com:8000/wordpress/my-post
.
Wenn die Adresse des Proxy-Servers einen URI enthält (
/wordpress/
), wird der Anforderungs-URI, der an den Proxy-Server übergeben wird, durch einen in der Direktive angegebenen URI ersetzt. Wenn die Adresse des Proxy-Servers ohne URI angegeben wird, wird der vollständige Anforderungs-URI an den Proxy-Server übergeben.
Anforderungsheader übergeben
Wenn Nginx eine Anfrage als Proxy fungiert, werden automatisch zwei Header-Felder in einem Proxy-Request vom Client,
Host
und
Connection
, definiert und leere Header entfernt.
Host
ist auf die Variable
$proxy_host
, und
Connection
ist auf close festgelegt.
Verwenden Sie zum Anpassen oder Festlegen von Headern für Proxy-Verbindungen die Anweisung
proxy_set_header
, gefolgt vom Header-Wert. Hier finden Sie eine Liste aller verfügbaren Anforderungsheader und ihrer zulässigen Werte. Wenn Sie verhindern möchten, dass ein Header an den Proxy-Server übergeben wird, setzen Sie ihn auf eine leere Zeichenfolge
""
.
Im folgenden Beispiel ändern wir den Wert des
Host
Header-Felds in
$host
und entfernen das
Accept-Encoding
Header-Feld, indem wir den Wert auf eine leere Zeichenfolge setzen.
location / { proxy_set_header Host $host; proxy_set_header Accept-Encoding ""; proxy_pass http://localhost:3000; }
Wenn Sie die Konfigurationsdatei ändern, müssen Sie den Nginx-Dienst neu starten, damit die Änderungen wirksam werden.
Konfigurieren von Nginx als Reverse Proxy für einen Nicht-HTTP-Proxy-Server
Um Nginx als Reverse-Proxy für einen Nicht-HTTP-Proxy-Server zu konfigurieren, können Sie die folgenden Anweisungen verwenden:
-
fastcgi_pass
- Reverse-Proxy zu einem FastCGI-Server.uwsgi_pass
- Reverse-Proxy zu einem uwsgi-Server.scgi_pass
- Reverse-Proxy zu einem SCGI-Server.memcached_pass
- Reverse-Proxy zu einem Memcached-Server.
Eines der häufigsten Beispiele ist die Verwendung von Nginx als Reverse-Proxy für PHP-FPM:
server { #… other directives location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.2-fpm.sock; } }
Allgemeine Nginx Reverse Proxy-Optionen
Die Bereitstellung von Inhalten über HTTPS ist heutzutage ein Standard. In diesem Abschnitt geben wir Ihnen ein Beispiel für die HTTPS-Nginx-Reverse-Proxy-Konfiguration, einschließlich der empfohlenen Nginx-Proxy-Parameter und -Header.
location/ { proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; proxy_cache_bypass $http_upgrade; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; 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; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; }
-
proxy_http_version 1.1
- Definiert die HTTP-Protokollversion für das Proxying. Standardmäßig ist sie auf 1.0 eingestellt. Für Websockets undkeepalive
Verbindungen müssen Sie die Version 1.1 verwenden.proxy_cache_bypass $http_upgrade
- Legt die Bedingungen fest, unter denen die Antwort nicht aus einem Cache abgerufen wird.Upgrade $http_upgrade
undConnection "upgrade"
- Diese Headerfelder sind erforderlich, wenn Ihre Anwendung Websockets verwendet.Host $host
- Die Variable$host
in der folgenden Rangfolge enthält: Hostname aus der Anforderungszeile oder Hostname aus demHost
oder den Servernamen, der einer Anforderung entspricht.X-Real-IP $remote_addr
-X-Real-IP $remote_addr
die Remote-IP-Adresse des realen Besuchers an den Proxy-Server weiter.X-Forwarded-For $proxy_add_x_forwarded_for
- Eine Liste mit den IP-Adressen aller Server, über die der Client weitergeleitet wurde.X-Forwarded-Proto $scheme
- Bei Verwendung innerhalb eines HTTPS-Serverblocks wird jede HTTP-Antwort vom Proxy-Server in HTTPS umgeschrieben.X-Forwarded-Host $host
- Definiert den vom Client angeforderten ursprünglichen Host.X-Forwarded-Port $server_port
- Definiert den ursprünglich vom Client angeforderten Port.
Fazit
Sie haben gelernt, wie Sie Nginx als Reverse Proxy verwenden. Wir haben Ihnen auch gezeigt, wie Sie zusätzliche Parameter an den Server übergeben und verschiedene Header-Felder in Proxy-Anforderungen ändern und festlegen.
NginxEinrichten eines kostenlosen Business Servers mit Ubuntu
Mit kleinem Budget? Sie können einfach Ihren eigenen kostenlosen Dateiserver erstellen, indem Sie Ubuntu Linux auf einem Computer installieren, den Sie bereits besitzen.
Vodafone Einrichten eines eigenen App Stores
Vodafone plant, einen eigenen App Store einzurichten, indem Entwickler Zugang zu seinem großen Kundenstamm von
Verwenden Sie die App School-PCs einrichten zum Einrichten von Windows-PCs in Schulen
Download Einrichten der School-PCs-App im Windows Store & Verwenden Sie es, um Ihre Windows 10-Computer für bessere Lernoptionen für Schüler schnell einzurichten.