Website-Suche

So richten Sie den Nginx-Reverse-Proxy ein


In dieser Anleitung erfahren Sie Schritt für Schritt, wie Sie einen Nginx-Reverse-Proxy einrichten. Wir erklären Ihnen auch, wie ein Reverse-Proxy-Server funktioniert und welche Vorteile er hat. Darüber hinaus gehen wir auch auf verschiedene Konfigurationsoptionen ein, die Linux-Administratoren häufig auf ihren Reverse-Proxy-Servern verwenden.

In diesem Tutorial lernen Sie:

  • Wie funktioniert ein Reverse-Proxy?
  • Was sind die Vorteile eines Reverse-Proxys?
  • So richten Sie den Nginx-Reverse-Proxy ein
  • So übergeben Sie Header
  • Konfigurieren des Lastausgleichs
  • So testen Sie die Nginx-Konfiguration

So richten Sie den Nginx-Reverse-Proxy ein

Verwendete Softwareanforderungen und Konventionen

Wie funktioniert ein Reverse-Proxy?

Ein System, das sich zwischen einem Client und einem Webserver (oder mehreren Servern) befindet, kann als Reverseproxy konfiguriert werden. Der Proxy-Dienst fungiert als Frontend und verarbeitet alle eingehenden Client-Anfragen und verteilt sie an das Backend-Web, die Datenbank und/oder andere Server.

Vorteile eines Reverse-Proxys

Die Konfiguration eines Nginx-Reverse-Proxys bedeutet, dass alle eingehenden Anfragen an einem einzigen Punkt bearbeitet werden, was mehrere Vorteile bietet:

  • Lastausgleich – Der Reverseproxy verteilt eingehende Verbindungen an Backend-Server und kann dies sogar entsprechend der aktuellen Auslastung der einzelnen Server tun. Dadurch wird sichergestellt, dass keiner der Backend-Server mit Anfragen überlastet wird. Es verhindert auch Ausfallzeiten, da der Reverseproxy den Datenverkehr umleiten kann, wenn ein Backend-Server offline geht.
  • Zentrale Protokollierung – Anstatt dass mehrere Server Protokolldateien generieren, kann der Reverse-Proxy alle relevanten Informationen an einem einzigen Ort protokollieren. Dies erleichtert die Arbeit des Administrators ungemein, da Probleme viel schneller isoliert werden können und es nicht erforderlich ist, Protokolldateien von mehreren Speicherorten zu analysieren, um Probleme zu beheben.
  • Verbesserte Sicherheit – Ein Reverse-Proxy verschleiert Informationen über die Backend-Server und dient als erste Verteidigungslinie gegen eingehende Angriffe. Da der Reverse-Proxy den Datenverkehr herausfiltert, bevor er an das Back-End weitergeleitet wird, wird nur harmloser Datenverkehr an die anderen Server weitergeleitet.
  • Bessere Leistung – Ein Reverseproxyserver kann kluge Entscheidungen darüber treffen, wie die Last auf die Backend-Server verteilt wird, was zu schnelleren Antwortzeiten führt. Andere gängige Serveraufgaben wie Zwischenspeicherung und Komprimierung können ebenfalls auf den Reverseproxyserver ausgelagert werden, wodurch Ressourcen für die Backend-Server freigegeben werden.

WUSSTEN SIE SCHON?
Ein Reverseproxyserver ist nicht in jedem Webhostingszenario eine notwendige Komponente. Die Vorteile eines Reverse-Proxys werden am deutlichsten bei hohem Datenverkehr oder in Situationen, in denen mehrere Backend-Server bereitgestellt werden und eine Form des Lastausgleichs erforderlich ist.

Warum Nginx?

Nachdem wir nun die Vorteile eines Reverse-Proxys skizziert haben, fragen Sie sich vielleicht, warum Sie einen speziell mit Nginx konfigurieren sollten. Die Skalierbarkeit von Nginx und seine nachgewiesene Fähigkeit, ein extrem hohes Volumen an Verbindungen zu bewältigen, bedeuten, dass es sich perfekt für den Einsatz als Reverse-Proxy und Load Balancer eignet.

Eine gängige Anwendung ist die Platzierung von Nginx zwischen Clients und einem Webserver, wo es als Endpunkt für SSL-Verschlüsselung und Webbeschleuniger fungieren kann. Operationen, die normalerweise die Last auf einem Webserver erhöhen würden, wie Verschlüsselung, Komprimierung und Caching, können über einen Nginx-Reverse-Proxy effizienter durchgeführt werden.

So richten Sie den Nginx-Reverse-Proxy Schritt für Schritt ein Anleitung

Da wir erklärt haben, wie ein Reverse-Proxy funktioniert und welche Vorteile die Verwendung eines Reverse-Proxys hat, gehen wir in diesem Abschnitt auf die Schritte ein, die zum Einrichten eines Nginx-Reverse-Proxys erforderlich sind.

  1. Nginx installierenSie können Nginx mit dem Paketmanager Ihres Systems installieren. Auf Ubuntu- und Debian-Distributionen lautet der Befehl:

    sudo apt-get install nginx
    

    Auf CentOS- und Red Hat-Distributionen:

    yum install nginx
    
  2. Deaktivieren des standardmäßigen virtuellen Hosts

    unlink /etc/nginx/sites-enabled/default
    
  3. Erstellen einer ReverseproxykonfigurationsdateiAlle Einstellungen für den Reverseproxy werden in eine Konfigurationsdatei eingefügt, und diese Datei muss im Verzeichnis sites-available abgelegt werden. Navigieren Sie zunächst zum folgenden Verzeichnis:

    cd /etc/nginx/sites-available
    

    Verwenden Sie dann vi oder Ihren bevorzugten Texteditor, um die Konfigurationsdatei zu erstellen:

    vi reverse-proxy.conf
    

    Fügen Sie die folgende Konfigurationsvorlage in diese neu erstellte Datei ein:

    server {
        listen 80;
        location /some/path/ {
            proxy_pass http://example.com;
        }
    }
    

    Ersetzen Sie example.com durch die IP-Adresse oder den Hostnamen des Servers, an den Sie weiterleiten. Sie können auch einen Port mit dem Hostnamen angeben, z. B. 127.0.0.1:8080. Speichern Sie Ihre Änderungen, und beenden Sie dann den Texteditor.

  4. Beachten Sie, dass dies für HTTP-Server funktioniert, Nginx jedoch auch andere Protokolle unterstützt. Wir werden diese Optionen im nächsten Abschnitt behandeln.

  5. Aktivieren des ProxysNachdem Sie Ihre Einstellungen gespeichert haben, aktivieren Sie die neue Konfiguration, indem Sie einen symbolischen Link zum Verzeichnis mit aktivierten Standorten erstellen:

    ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/reverse-proxy.conf
    

Nicht-HTTP-Server

Das obige Beispiel zeigt, wie Anfragen an einen HTTP-Server übergeben werden, aber es ist auch möglich, dass Nginx als Reverse-Proxy für FastCGI, uwsgi, SCGI und memcached fungiert. Anstatt die oben gezeigte Direktive proxy_pass zu verwenden, ersetzen Sie sie durch den entsprechenden Typ:

  • proxy_pass (HTTP-Server – wie oben zu sehen)
  • fastcgi_pass (FastCGI-Server)
  • uwsgi_pass (uwsgi-Server)
  • scgi_pass (SCGI-Server)
  • memcached_pass (Memcached-Server)

Standardbeispiel für fastcgi_pass Direktive

So übergeben Sie Header

Um zu konfigurieren, welche Header der Reverseproxyserver an die anderen Server übergibt, können wir sie in der Konfigurationsdatei definieren, die wir zuvor erstellt haben. Verwenden Sie die Direktive proxy_set_header, um die headers anzupassen.
Sie können auf dem Server, am Standort oder im HTTP-Block konfiguriert werden. Zum Beispiel:

location /some/path/ {
        proxy_set_header HOST $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://example.com;
}

Im obigen Beispiel werden drei Arten von Headern definiert und auf die entsprechenden Variablen gesetzt. Es gibt viele verschiedene Optionen zum Übergeben von Headern, aber dieses Beispiel zeigt drei, die sehr häufig vorkommen.

Der Host-Header enthält Informationen darüber, welcher Host angefordert wird. Die X-Forwarded-Proto-Headerspezies, wenn es sich bei der Anforderung um HTTP oder HTTPS handelt. Und der X-Real-IP-Header enthält die IP-Adresse des anfragenden Clients.

Konfigurieren des Lastausgleichs

Der Lastenausgleich ist eine der wichtigsten Begründungen für die Konfiguration eines Reverseproxyservers. Wir können beginnen, indem wir der Konfigurationsdatei, die wir zuvor erstellt haben, ein paar zusätzliche Zeilen hinzufügen. Schauen Sie sich ein Beispiel an:

upstream backend_servers {
    server host1.example.com;
    server host2.example.com;
    server host3.example.com;
}

server {
    listen 80;
        server_name example.com;
        location / {
        proxy_pass http://backend_servers;
    }
}

In diesem Beispiel haben wir einen Kontext mit dem Namen backend_servers hinzugefügt. Darin wird der Hostname/IP jedes Servers in einer separaten Zeile angegeben.

In der Direktive proxy_pass, in die wir normalerweise einen Hostnamen oder eine IP-Adresse eingeben würden, haben wir stattdessen den Namen des oben definierten Upstream-Kontexts angegeben: backend_servers.

Diese Konfiguration leitet eingehende Anfragen an example.com an die drei verschiedenen Hosts weiter, die in unserem Upstream angegeben sind. Standardmäßig leitet Nginx diese Anfragen im Round-Robin-Verlauf weiter, was bedeutet, dass jeder Host abwechselnd eine Anfrage stellt.

Konfigurieren von Lastausgleichsalgorithmen

Wie bereits erwähnt, ist Round Robin der Standardalgorithmus, den Nginx verwendet, um die Anfragen im Upstream zu rotieren. Es gibt noch ein paar andere Algorithmen, die für bestimmte Situationen besser geeignet sind:

  • least_conn – Verteilt die eingehenden Verbindungen auf die Backend-Server basierend auf der aktuellen Anzahl aktiver Verbindungen. Ein Server erhält nur dann eine Anfrage, wenn er zu diesem Zeitpunkt über die geringste Anzahl von Verbindungen verfügt. Dies ist besonders hilfreich bei Anwendungen, die dauerhafte Verbindungen zum Client erfordern.
  • ip_hash – Verteilt die eingehenden Verbindungen basierend auf der IP-Adresse des Clients. Dies ist hilfreich, wenn Sie Sitzungskonsistenz erstellen müssen.
  • hash – Verteilt die eingehenden Verbindungen basierend auf einem Hash-Schlüssel. Dies ist insbesondere bei Memcached-Hosts hilfreich.

Geben Sie eine Lastausgleichsmethode am Anfang des Upstream-Kontexts an, wie folgt:

upstream backend_servers {
    least_conn;
    server host1.example.com;
    server host2.example.com;
    server host3.example.com;
}

So testen Sie die Nginx-Konfiguration

Sie sollten Ihre Konfiguration immer sofort nach dem Bearbeiten der .conf-Datei auf Fehler testen und dann Nginx neu starten.

service nginx configtest
service nginx restart

Schlussfolgerung

In diesem Artikel haben wir gesehen, wie man einen Reverse-Proxy-Server mit Nginx einrichtet. Wir haben auch gelernt, wie ein Reverse-Proxy-Server funktioniert und welche Vorteile die Verwendung eines Reverse-Proxy-Servers hat. Wir haben uns mit dem Lastausgleich und den verschiedenen Optionen befasst, die ein Administrator benötigt, um ihn auf seinem eigenen Reverse-Proxy zu konfigurieren.

Nachdem Sie die Schritte in diesem Leitfaden ausgeführt haben, werden Sie hoffentlich eine deutliche Leistungssteigerung in Ihrer Webumgebung feststellen und feststellen, dass die Verwaltung jetzt einfacher ist, da eingehende Verbindungen an einen einzigen Punkt gesendet werden.

Verwandte Artikel: