So konfigurieren Sie einen NGINX-Reverse-Proxy

So konfigurieren Sie einen NGINX-Reverse-Proxy

NGINX ist ein leistungsstarker Webserver, der für seine Stabilität, seinen großen Funktionsumfang und seinen geringen Ressourcenverbrauch bekannt ist. Als Reverse Proxy fungiert NGINX als Vermittler zwischen Clients und Backend-Servern und verbessert so die Sicherheit, Leistung und Skalierbarkeit von Webanwendungen.

In diesem Artikel erfahren Sie, was ein NGINX-Reverse-Proxy ist, welche Rolle er in modernen Webarchitekturen spielt und wie Sie ihn einrichten. Wir führen Sie durch die Installation und Konfiguration, damit Ihre Anwendungen effizienter und sicherer laufen.

Was ist ein NGINX-Reverse-Proxy?

Ein NGINX-Reverse-Proxy ist eine Serverkonfiguration, die eingehenden Traffic anhand der URL an verschiedene Backend-Server weiterleitet und so für eine effiziente Lastverteilung und den Zugriff auf Ressourcen sorgt.

Ein NGINX-Reverse-Proxy-Server leitet nicht nur Traffic weiter, sondern trägt auch zur Leistungssteigerung von Webanwendungen bei. Er verwaltet sowohl dynamische als auch statische Inhalte und leitet sie zur optimalen Verarbeitung und Bereitstellung an die entsprechenden Server weiter.

Mit NGINX Plus erhalten Benutzer Zugriff auf erweiterte Funktionen wie eine leistungsfähigere Lastverteilung, umfassende Überwachungsmöglichkeiten und verstärkte Sicherheitsmaßnahmen.

In Kubernetes-Umgebungen zeichnet sich NGINX als Ingress-Controller aus, der den externen Zugriff auf Dienste steuert – eine wichtige Komponente bei der Bereitstellung skalierbarer Cloud-nativer Anwendungen.

Darüber hinaus verbessert NGINX mit seiner API-Gateway-Funktionalität die Netzwerkeffizienz, vereinfacht das Management des Traffics und sorgt für ein zuverlässiges Routing zu Upstream-Diensten.

Wie funktioniert ein NGINX-Reverse-Proxy?

Im Wesentlichen fungiert der NGINX-Reverse-Proxy als Brücke zwischen Client-Geräten und Backend-Servern wie LiteSpeed oder Apache und verwaltet dabei die eingehenden Anfragen.

Verarbeitung von Anfragen

Wenn ein Client-Gerät HTTP-Anfragen an Ihre Webanwendung sendet, erreichen diese zunächst den NGINX-Reverse-Proxy-Server. NGINX prüft anschließend Details wie die URL und die Header, um zu bestimmen, wie die Anfrage verarbeitet werden soll.

Bei Anfragen nach statischen Inhalten optimiert NGINX die Bereitstellung, indem es die Inhalte aus seinem Cache ausliefert und so die Ladezeiten erheblich verkürzt. Anfragen nach dynamischen Inhalten, die eine Echtzeitverarbeitung erfordern, leitet NGINX hingegen an den entsprechenden Backend-Server weiter.

Auswahl des Backend-Servers für die Anfrageweiterleitung

NGINX verwendet verschiedene Methoden zur Lastverteilung, um zu bestimmen, an welchen Backend-Server Anfragen weitergeleitet werden:

  • Round Robin. Verteilt Anfragen gleichmäßig auf alle Server und verhindert so, dass ein einzelner Server überlastet wird.
  • Least Connections. Leitet Anfragen an den Server mit den wenigsten aktiven Verbindungen weiter und eignet sich daher für langlebige Verbindungen.
  • IP Hash. Weist Anfragen anhand der Client-IP-Adresse zu, sodass Benutzer stets mit demselben Server interagieren. Dies kann für die Sitzungspersistenz hilfreich sein.

Erweiterte Konfigurationen

Für komplexe Szenarien können Sie NGINX-Regeln anhand von Anfrage-Headern, Inhaltstypen und sogar benutzerdefinierten Codemodulen konfigurieren und dadurch präzise festlegen, wie Anfragen weitergeleitet werden.

Dank dieser Flexibilität kann NGINX Traffic effizient an Web- und Anwendungsserver weiterleiten und bei entsprechender Konfiguration auch als Forward Proxy für ausgehende Anfragen fungieren.

Voraussetzungen für die Konfiguration eines NGINX-Reverse-Proxy-Servers

Bevor Sie einen NGINX-Reverse-Proxy auf einem Virtual Private Server (VPS) einrichten, sollten die folgenden Voraussetzungen erfüllt sein:

  • Serverzugriff. Sie benötigen Root– oder sudo-Zugriff auf Ihren VPS, um Software zu installieren und Konfigurationsdateien zu ändern.
  • Domainname. Idealerweise verfügen Sie über einen Domainnamen, der auf die IP-Adresse Ihres VPS verweist. Dadurch können Sie über den Domainnamen statt nur über die IP-Adresse auf Ihren NGINX-Reverse-Proxy-Server zugreifen.
  • Backend-Server. Die Hauptaufgabe eines Reverse Proxys besteht darin, Traffic an einen oder mehrere Backend-Server, beispielsweise einen Apache-Server, weiterzuleiten. Stellen Sie sicher, dass Ihre Backend-Server korrekt konfiguriert sind und laufen, bevor Sie mit der Einrichtung des NGINX-Reverse-Proxys beginnen.
  • Netzwerkkonfiguration. Konfigurieren Sie Ihren VPS so, dass HTTP- und HTTPS-Traffic zulässig ist. Passen Sie die Firewall-Einstellungen an, um Verbindungen über Port 80 (HTTP) und Port 443 (HTTPS) zuzulassen.
  • Kenntnisse der NGINX-Konfiguration. Machen Sie sich mit der standardmäßigen Konfigurationssyntax von NGINX vertraut, da Sie zum Einrichten eines Reverse Proxys Konfigurationsdateien bearbeiten müssen.
  • SSL-Zertifikate (optional, aber empfohlen). Für HTTPS-Verbindungen empfiehlt sich ein SSL-Zertifikat für Ihre Domain. Die Verschlüsselung schützt die Daten, die zwischen dem Client und dem Reverse Proxy übertragen werden.

So richten Sie NGINX als Reverse Proxy ein

Wir führen Sie durch die Konfiguration eines NGINX-Reverse-Proxys auf einem Hostinger VPS mit Ubuntu 22.04. Die Anleitung sollte auch mit neueren Ubuntu-Versionen funktionieren.

1. Installieren Sie NGINX

Um einen NGINX-Reverse-Proxy einzurichten, installieren Sie zunächst NGINX auf Ihrem VPS. Gehen Sie dazu wie folgt vor:

  1. Öffnen Sie PuTTY oder Ihren bevorzugten SSH-Client und melden Sie sich mit Ihren Zugangsdaten beim VPS an.
  2. Aktualisieren Sie mit den folgenden Linux-Befehlen die Paketinformationen und die installierten Pakete auf Ihrem Server, um mögliche Konflikte zu vermeiden und die neuesten Sicherheitspatches zu installieren:
sudo apt update
sudo apt upgrade -y
  1. Installieren Sie die neueste Version von NGINX mit dem Paketmanager:
sudo apt install nginx -y
  1. NGINX sollte nach der Installation automatisch starten. Überprüfen Sie mit folgendem Befehl, ob NGINX läuft:
sudo systemctl status nginx

Die Ausgabe sollte anzeigen, dass der NGINX-Dienst active (running) ist, ähnlich wie im folgenden Beispiel:

● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2025-01-01 12:34:56 UTC; 2min 22s ago
Docs: man:nginx(8)
Main PID: 1234 (nginx)
Tasks: 2 (limit: 1152)
Memory: 5.3M
CGroup: /system.slice/nginx.service
├─1234 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─1235 nginx: worker process

Falls auf Ihrem VPS eine Firewall konfiguriert ist, müssen Sie außerdem Traffic für NGINX zulassen. Wenn Sie Uncomplicated Firewall (UFW) verwenden, lassen Sie den Traffic auf den entsprechenden Ports mit folgendem Befehl zu:

sudo ufw allow 'Nginx Full'

2. Konfigurieren Sie die Dateistruktur

Bei der Installation von NGINX richtet das System automatisch mehrere wichtige Verzeichnisse und Dateien für die Konfiguration und den Betrieb ein.

Eine strukturierte Organisation der NGINX-Konfigurationsdateien ist wichtig, um NGINX an bestimmte Anforderungen anzupassen, etwa um unterschiedliche Workloads zu verwalten und Anfragen effizient an mehrere Server weiterzuleiten.

Grundlegende Struktur der NGINX-Konfigurationsdateien

Die zentrale NGINX-Konfigurationsdatei nginx.conf befindet sich unter /etc/nginx/. Sie enthält globale Einstellungen und Direktiven, über die zusätzliche Konfigurationen aus anderen Dateien und Verzeichnissen eingebunden werden:

  • /etc/nginx/nginx.conf. Die Hauptkonfigurationsdatei von NGINX.
  • /etc/nginx/sites-available/. Enthält mögliche Konfigurationen für virtuelle Hosts. Jede Datei steht für eine separate Website, die einzeln aktiviert oder deaktiviert werden kann.
  • /etc/nginx/sites-enabled/. Enthält symbolische Links zu den Konfigurationen unter sites-available, die NGINX verwenden soll. Nur die in diesem Verzeichnis verlinkten Konfigurationen sind aktiv.
  • /etc/nginx/conf.d/. Enthält in der Regel globale Konfigurationen, die für alle Websites gelten. Dateien mit der Endung .conf in diesem Verzeichnis werden automatisch in die NGINX-Hauptkonfiguration eingebunden.

Wichtige NGINX-Direktiven

Um NGINX effektiv zu nutzen, sollten Sie mit den wichtigsten Direktiven vertraut sein:

  • server. Definiert einen Serverblock. Jeder Serverblock kann eine Website oder einen Teil einer Website hosten und enthält Direktiven wie listen und server_name.
  • location. Legt fest, wie Anfragen für verschiedene Ressourcen innerhalb eines Serverblocks verarbeitet werden. In location-Blöcken können Sie Webinhalte und Proxy-Einstellungen festlegen.

3. Richten Sie NGINX als Reverse Proxy ein

Erstellen Sie eine neue Konfigurationsdatei, um NGINX als Reverse Proxy zu konfigurieren. Sie enthält die Serverblöcke und Direktiven, die für die Weiterleitung von Anfragen erforderlich sind. Gehen Sie wie folgt vor:

  1. Wechseln Sie in das Konfigurationsverzeichnis:
cd /etc/nginx/sites-available/
  1. Erstellen Sie mit einem Texteditor wie nano eine Konfigurationsdatei, die nach Ihrer Website benannt ist, zum Beispiel:
sudo nano example.com
  1. Konfigurieren Sie den Server in der NGINX-Konfigurationsdatei so, dass er Port 80 überwacht, und verwenden Sie die Direktive proxy_pass, um Proxy-Anfragen an Ihren Backend-Server weiterzuleiten:
server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://your_backend_server_ip;
        proxy_set_header Host $host; # Forwarded host
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_redirect off;
    }
}

Ersetzen Sie your_backend_server_ip durch die tatsächliche IP-Adresse Ihres Backend-Servers.

Konfigurieren der Lastverteilung

Definieren Sie einen upstream-Block und verwenden Sie proxy_pass innerhalb Ihres Serverblocks, um einen Load Balancer einzurichten und den Traffic auf mehrere Server zu verteilen:

upstream myapp1 {
    server backend1.example.com;
    server backend2.example.com;
}
server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://myapp1;
        proxy_next_upstream error timeout;
        # Additional settings...
    }
}

Statische Inhalte bereitstellen

Stellen Sie statische Inhalte über einen separaten location-Block direkt mit NGINX bereit:

server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://your_backend_server_ip;
        # Proxy settings...
    }
    location /static/ {
        root /path/to/static/files;
        expires 30d;
    }
}

Proxy-Direktiven anpassen

Mit verschiedenen proxy_-Direktiven können Sie festlegen, wie NGINX mit den Backend-Servern interagiert, um die Leistung zu verbessern und weitergeleitete Anfragen effektiv zu verarbeiten:

  • proxy_pass. Gibt das Protokoll und die Adresse des Backend-Servers an. Die grundlegende Verwendung für die Weiterleitung von Anfragen anhand der Anfrage-URI sieht folgendermaßen aus:
location / {
    proxy_pass http://backend.example.com;
}
  • proxy_set_header. Ändert oder ergänzt Header in der Anfrage, die an den Backend-Server weitergeleitet wird, damit der Backend-Server alle erforderlichen Informationen über die ursprüngliche Anfrage erhält:
location / {
    proxy_pass http://backend.example.com;
    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_cache. Aktiviert das Caching von Antworten des Backend-Servers. Konfigurieren Sie zusätzlich proxy_cache_path, um die Cache-Parameter festzulegen:
http {
    proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
    server {
        location / {
            proxy_pass http://backend.example.com;
            proxy_cache my_cache;
        }
    }
}
  • proxy_buffering. Steuert die Pufferung von Antworten. Das Deaktivieren der Pufferung kann bei bestimmten Anwendungsfällen die Latenz verringern:
location / {
proxy_pass http://backend.example.com;
proxy_buffering off;
}
  • proxy_ssl. Sorgt für sichere Verbindungen zum Backend-Server mit SSL-Verschlüsselung:
location / {
    proxy_pass https://backend.example.com;
    proxy_set_header X-Forwarded-Proto https;
}
  • proxy_buffer_size. Legt die Puffergröße für den ersten Teil der Antwort fest:
location / {
    proxy_pass http://backend.example.com;
    proxy_buffer_size 4k;
}
  • Proxy-Timeouts. Legen Sie die Timeouts für den Verbindungsaufbau sowie das Lesen und Senden von Daten an den Backend-Server fest:
location / {
    proxy_pass http://backend.example.com;
    proxy_connect_timeout 60s;
    proxy_read_timeout 60s;
    proxy_send_timeout 60s;
}

4. Testen Sie den NGINX-Reverse-Proxy

Nachdem Sie den NGINX-Reverse-Proxy konfiguriert haben, aktivieren Sie die Konfiguration, prüfen Sie sie auf Syntaxfehler und übernehmen Sie anschließend die Änderungen:

  1. Erstellen Sie einen symbolischen Link von Ihrer Konfigurationsdatei unter sites-available zu sites-enabled, um sie zu aktivieren:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
  1. Testen Sie die NGINX-Konfiguration, um Dienstunterbrechungen durch mögliche Fehlkonfigurationen zu vermeiden:
sudo nginx -t

Alternativ können Hostinger VPS-Kunden ihre NGINX-Konfiguration mit Hostinger Agent überprüfen. Öffnen Sie im linken Seitenbereich Ihres VPS-Dashboards das Menü Hostinger Agent KI-Assistent und geben Sie anschließend Ihren Prompt ein.

Wenn der Hostinger Agent Probleme bei der NGINX-Reverse-Proxy-Konfiguration erkennt, zeigt er an, wo diese auftreten, sodass Sie die Fehler beheben können.

NGINX neu laden oder neu starten

Um die Änderungen an Ihrer Konfiguration zu übernehmen, können Sie NGINX entweder neu laden oder neu starten.

  • Laden Sie NGINX neu. Diese Methode wird im Allgemeinen bevorzugt, da sie Änderungen übernimmt, ohne bestehende Verbindungen zu unterbrechen:
sudo systemctl reload nginx
  • Starten Sie NGINX neu. Falls erforderlich, können Sie NGINX vollständig neu starten. Dadurch wird der Dienst kurzzeitig unterbrochen:
sudo systemctl restart nginx

Bei umfangreicheren Änderungen oder zur Behebung von NGINX-Fehlern kann ein Neustart erforderlich sein.

Fazit

In diesem Leitfaden haben Sie erfahren, wie Sie NGINX als Reverse Proxy einrichten – von der Installation über die Konfiguration bis zum Testen.

Indem NGINX eingehende Anfragen verwaltet und gleichmäßig verteilt, sorgen Sie für eine optimale Auslastung Ihres Servers und einen reibungslosen Betrieb Ihrer Webanwendungen. Nutzen Sie diese Schritte als Ausgangspunkt, um die Leistung, Sicherheit und Skalierbarkeit Ihrer Serverumgebung mit NGINX zu verbessern.

Häufig gestellte Fragen (FAQ) zum NGINX-Reverse-Proxy

In diesem Abschnitt beantworten wir die häufigsten Fragen zu NGINX-Reverse-Proxy-Servern.

Welche Vorteile bietet ein NGINX-Reverse-Proxy?

Ein NGINX-Reverse-Proxy-Server kann die Leistung verbessern, indem er den Traffic auf mehrere Webserver verteilt. Außerdem erhöht er die Sicherheit und Skalierbarkeit in Rechenzentren und eignet sich daher für die Verwaltung von Webanwendungen.

Kann ich NGINX als Reverse Proxy für mehrere Backend-Server verwenden?

Ja, Sie können NGINX als Reverse Proxy für mehrere Backends verwenden, auch wenn diese unterschiedliche Technologien wie Apache Tomcat einsetzen. Diese Konfiguration verbessert die Ressourcenzuweisung und die Leistung anderer Server.

Welche Sicherheitsaspekte sollte ich bei der Konfiguration eines NGINX-Reverse-Proxys beachten?

Verwenden Sie bei der Konfiguration eines NGINX-Reverse-Proxys SSL, um die Datenübertragung zu schützen. Da der Reverse Proxy als zentraler Zugangspunkt dient, sind robuste Sicherheitsmaßnahmen besonders wichtig. Stellen Sie außerdem sicher, dass WebSockets korrekt konfiguriert sind, um eine sichere Echtzeitkommunikation zu gewährleisten.

Kann ich Inhalte mit einem NGINX-Reverse-Proxy zwischenspeichern?

Ja. Das Caching mit einem NGINX-Reverse-Proxy kann Ladezeiten verkürzen und die Serverauslastung reduzieren, indem Kopien häufig aufgerufener Ressourcen zwischengespeichert werden. Dies ist besonders bei Microservices und virtuellen Hosts hilfreich, da das Caching die Bereitstellung von Inhalten optimiert und die Benutzererfahrung verbessert.

Alle Tutorial-Inhalte auf dieser Website unterliegen Hostingers strengen redaktionellen Standards und Normen.

Author
Erstellt von

Faradilla Ayunindya

Faradilla, auch bekannt als Ninda, ist Content Marketing Specialist bei Hostinger mit über fünf Jahren Erfahrung und einem zehnjährigen Hintergrund als Linguistin. Sie möchte Technologie für alle zugänglich machen, indem sie komplexe Anleitungen in klare und leicht verständliche Schritt-für-Schritt-Guides verwandelt. In ihrer Freizeit interessiert sie sich für Biowissenschaften oder schaut gerne lustige Tiervideos. Vernetzen Sie sich mit ihr auf LinkedIn.

Was unsere Kunden sagen

Comments

0 responses

Write a respond

Please fill the required fields.Bitte akzeptieren Sie die Datenschutzklausel.Bitte füllen Sie die erforderlichen Felder aus und akzeptieren Sie die Datenschutzklausel.

Thank you! Your comment has been successfully submitted. It will be approved within the next 24 hours.