Was ist ein Reverse-Proxy?
Ein Standard-Proxy-Server arbeitet im Auftrag von Clients, häufig indem er Datenschutz bereitstellt oder Inhalte filtert. Ein Reverse-Proxy arbeitet im Auftrag eines Servers, fängt Datenverkehr ab und leitet ihn an einen separaten Server weiter.
Es gibt mehrere Gründe, warum Sie einen Reverse-Proxy installieren sollten. Einer der Hauptgründe ist der Datenschutz.
Wenn Sie mehrere Server haben, kann ein Reverse-Proxy dabei helfen, Lasten zwischen Servern auszugleichen und die Leistung zu verbessern. Da ein Reverse-Proxy einen einzigen Kontaktpunkt für Clients bietet, kann er die Protokollierung und Berichterstellung auf mehreren Servern zentralisieren.
Nginx kann die Leistung verbessern, indem statische Inhalte schnell bereitgestellt und dynamische Inhaltsanfragen an Apache-Server weitergeleitet werden.
Diese Anleitung hilft Ihnen bei der Installation und Konfiguration eines Nginx-Reverse-Proxys auf Ihrem System.
Voraussetzungen
- Ein Linux-Server mit Apache, PHP und einer Firewall
- Zugriff auf einen Root-Benutzer mit sudo zugreifen
- Linux-Befehlszeile oder -Terminal (Strg –Alt –T für Ubuntu Alt –F2 für CentOS)
- Paketmanager (wie APT)
Einrichten eines Nginx-Reverse-Proxys
Schritt 1:Installieren Sie Nginx aus den Standard-Repositories
Öffnen Sie ein Terminalfenster und geben Sie Folgendes ein:
sudo apt-get update
Warten Sie, bis der Paketmanager die Aktualisierung der Softwarelisten abgeschlossen hat, und geben Sie dann Folgendes ein:
sudo apt-get install nginx
Warten Sie, bis der Vorgang abgeschlossen ist.
Schritt 2 (optional):Installieren Sie Nginx aus dem offiziellen Repository
Sicherheitsschlüssel hinzufügen
Geben Sie in einem Terminalfenster Folgendes ein:
sudo wget https://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
Dadurch wird der Signaturschlüssel für Nginx heruntergeladen, der bestätigt, dass Sie authentische Software herunterladen.
Öffnen Sie sources.list Datei zum Bearbeiten
Geben Sie im Terminal Folgendes ein:
sudo vi /etc/apt/sources.list
Nginx-Quellen zur Repository-Liste hinzufügen
Geben Sie die folgenden Zeilen in die /etc/apt/sources.list
ein gerade geöffnete Datei:
deb https://nginx.org/packages/mainline/debian/ <CODENAME> nginx
deb-src https://nginx.org/packages/mainline/debian/ <CODENAME> nginx
Ersetzen Sie <CODENAME>
mit dem Codenamen für Ihre Debian-Distribution.
Speichern die Datei und beenden .
Neueste Version von Nginx installieren
Verwenden Sie die folgenden Befehle, um die neueste Version von Nginx zu installieren:
sudo apt-get remove nginx-common
sudo apt-get update
sudo apt-get install nginx
Schritt 3:Nginx starten und konfigurieren, um beim Neustart zu starten
So starten Sie Nginx:
sudo systemctl start nginx
So aktivieren Sie Nginx:
sudo systemctl enable nginx
So überprüfen Sie, ob Nginx ausgeführt wird:
sudo systemctl status nginx
Die Ausgabe sollte Ihnen zeigen, dass der Dienst aktiv (läuft) ist , wie im Bild unten:
Schritt 4:Verknüpfung mit Standardkonfigurationsdatei aufheben
Geben Sie im Terminal Folgendes ein:
sudo unlink /etc/nginx/sites-enabled/default
Schritt 5:Neue Konfigurationsdatei erstellen
Um eine neue Konfigurationsdatei zu erstellen, geben Sie ein:
cd /etc/nginx/sites-available/
sudo vi custom_server.conf
Ersetzen Sie custom_server
mit einem für Sie aussagekräftigen Namen. Geben Sie in der neuen Datei Folgendes ein:
server {
listen 80;
location / {
proxy_pass http://my_server;
}
}
Dies ist ein sehr einfaches Nginx-Reverse-Proxy-Beispiel. Nginx ist so eingestellt, dass es den gesamten Datenverkehr auf Port 80 überwacht.
Der proxy_pass
Der Befehl leitet den gesamten Datenverkehr auf Port 80 an http://my_server
weiter . Ändern Sie einfach http://my_server
an den Ort Ihrer Wahl, und Nginx fängt Client-Anfragen ab und leitet sie an den von Ihnen angegebenen Ort weiter. Wenn Sie fertig sind, speichern Sie die Datei und beenden Sie.
Schritt 6:Konfigurationsdatei verknüpfen und aktivieren
Um die neue Nginx-Datei zu aktivieren, geben Sie Folgendes ein:
ln -s /etc/nginx/sites-available/custom_server.conf
/etc/nginx/sites-enabled/custom_server.conf
Ersetzen Sie wie gewohnt custom_server
durch den Namen der Konfigurationsdatei, die Sie in Schritt 5 erstellt haben.
Schritt 7:Nginx testen und neu starten
So testen Sie Nginx:
sudo service nginx configtest
So starten Sie Nginx neu:
sudo service nginx restart
Optionale Nginx-Konfigurationsoptionen
Proxy-Puffer
Standardmäßig puffert Nginx den Datenverkehr für Server, für die es als Proxy fungiert. Puffer verbessern die Serverleistung, da eine Serverantwort erst gesendet wird, wenn der Client eine vollständige Antwort gesendet hat.
Um den Puffer zu deaktivieren, öffnen Sie die Konfigurationsdatei aus Schritt 5. Unter location/section , fügen Sie Folgendes hinzu:
proxy_buffering off;
Anfrage-Header
Header liefern dem Server Informationen über die getätigten Anfragen oder über den Client.
Nginx definiert zwei der Header-Felder neu:host
ist für $proxy_host
konfiguriert , und connection
ist für close
konfiguriert . Wenn Sie diese Header verwenden, stellen Sie sicher, dass Sie das Verhalten in der Konfigurationsdatei ändern.
Wenn Header-Strings leer sind, entfernt Nginx diese Felder einfach.
Um die Art und Weise zu ändern, wie Nginx Heather behandelt, verwenden Sie die folgenden Befehle in Ihrer Konfigurationsdatei:
location / {
proxy_set_header Host $host;
}
Dieses Beispiel weist Nginx an, host
festzulegen zum $host
Variable.
Um zu verhindern, dass ein Header-Feld an den Proxy-Server weitergegeben wird, verwenden Sie eine leere Zeichenfolge wie folgt:
location / {
proxy_set_header header-variable "";
}
Lastenausgleich
Sie können die Konfigurationsdatei verwenden, um Datenverkehr an mehrere Server weiterzuleiten. Um diese Konfiguration zu verwenden, sieht Ihre Konfigurationsdatei ähnlich wie in diesem Beispiel aus:
http {
server {
proxy_pass http://my_server
}
}
Mit anderen Worten, die HTTP-Konfiguration geht über die Serverkonfiguration aus Schritt 5 hinaus.
Um einen Namen für eine Gruppe von Servern zu erstellen, verwenden Sie den upstream
Befehl:
http {
upstream server_group {
server my.server1.com weight=3;
server my.server2.com;
}
server {
location / {
proxy_pass http://server_group;
}
}
}
Diese Bezeichnung benötigt zwei Server – my.server1.com
und my.server2.com
– und bündelt sie. Nginx vertritt diese Gruppe von Servern unter dem Namen http://server_group
. Sie können sie beliebig umbenennen.
Dieses Beispiel verwendet das weight
Befehl, um drei Anfragen an my.server1.com
weiterzuleiten , dann 1 Anfrage an my.server2.com
. Dies ist eine Option zum manuellen Ausgleichen der Clientlast zwischen den Servern. Eine andere Methode besteht darin, einfach jede Bezeichnung wegzulassen, in der Nginx die Anfragen gleichmäßig auf die aufgelisteten Server verteilt.