Einrichten von Nginx Reverse Proxy für Apache
Nginx und Apache sind zwei der beliebtesten Webserver der Welt, die beide ihre Stärken haben. Apache ist für seine Flexibilität und sein robustes Modulsystem bekannt, während Nginx für seine hohe Leistung und seinen geringen Ressourcenverbrauch bevorzugt wird, insbesondere für die Bereitstellung statischer Inhalte. In vielen Szenarien ist es von Vorteil, die beiden zu kombinieren, indem man Nginx als Reverse-Proxy vor Apache einsetzt. Auf diese Weise kann Nginx eingehende Anfragen bearbeiten und statische Dateien bereitstellen, während Apache die dynamischen Inhalte, wie PHP-Skripte oder datenbankgestützte Anwendungen, bearbeitet.
In diesem Artikel führen wir Sie durch den Prozess der Einrichtung von Nginx als Reverse-Proxy für Apache, um eine nahtlose und effiziente Webserver-Konfiguration zu gewährleisten.
Was ist ein Reverse-Proxy?
Ein Reverse-Proxy ist ein Server, der vor einem oder mehreren Backend-Servern sitzt und Client-Anfragen an den entsprechenden Server weiterleitet. In diesem Fall fungiert Nginx als Reverse Proxy und leitet Anfragen an Apache weiter, der dynamische Inhalte bereitstellt.
Die Verwendung von Nginx als Reverse-Proxy bietet mehrere Vorteile:
- Verbesserte Leistung: Nginx zeichnet sich durch die schnelle Bereitstellung statischer Dateien (z. B. Bilder, CSS, JavaScript) aus und entlastet damit den Apache.
- Lastausgleich: Nginx kann den Datenverkehr auf mehrere Backend-Server verteilen und so die Verfügbarkeit und Zuverlässigkeit verbessern.
- SSL-Beendigung: Nginx ist in der Lage, SSL-Verschlüsselung zu handhaben und entlastet so den Apache von der Rechenlast.
- Sicherheit: Nginx kann zusätzliche Sicherheitsfunktionen bereitstellen, z. B. Anforderungsfilterung und Ratenbegrenzung.
Schritt 1: Nginx und Apache installieren
Bevor Sie Nginx als Reverse-Proxy konfigurieren, müssen Sie sicherstellen, dass sowohl Nginx als auch Apache auf Ihrem Server installiert sind. Je nach Linux-Distribution können Sie sie mit Ihrem Paketmanager installieren.
Für Debian/Ubuntu:
Für CentOS/RHEL:
Sobald sowohl Nginx als auch Apache installiert sind, starten und aktivieren Sie beide Dienste, um sicherzustellen, dass sie beim Booten laufen:
Schritt 2: Apache konfigurieren
Apache wird als Backend-Server fungieren und dynamische Anfragen wie PHP-Skripte verarbeiten. Vergewissern Sie sich, dass Apache so eingerichtet ist, dass er auf einem bestimmten Port lauscht, normalerweise Port
8080
80
80
Konfigurieren Sie Apache so, dass er auf Port 8080 lauscht:
- Öffnen Sie die Apache-Konfigurationsdatei:
- Suchen Sie die Zeile, die den Port angibt, an dem Apache lauscht (normalerweise), und ändern Sie sie in:
Listen 80
- Speichern Sie die Änderungen und verlassen Sie den Editor.
- Starten Sie Apache neu, um die Änderungen zu übernehmen:
Jetzt ist Apache so konfiguriert, dass er auf Port
8080
80
Schritt 3: Konfigurieren Sie Nginx als Reverse-Proxy
Als Nächstes müssen wir Nginx so konfigurieren, dass es als Reverse-Proxy fungiert und Anfragen an Apache weiterleitet. Wir erstellen einen virtuellen Host in Nginx, der auf Port
80
8080
Konfiguration des virtuellen Nginx-Hosts erstellen:
- Öffnen oder erstellen Sie eine neue Konfigurationsdatei für den virtuellen Host in Nginx:
- Fügen Sie die folgende Konfiguration in die Datei ein:
In dieser Konfiguration:
- : Nginx lauscht auf Port
listen 80
auf eingehende Anfragen.80
- : Die Domäne oder IP-Adresse, die Nginx bedienen wird.
server_name
- : Leitet Anfragen an Apache weiter, der an Port
proxy_pass
lauscht.8080
- : Leitet verschiedene Header an den Apache weiter, einschließlich der ursprünglichen IP-Adresse und des Protokolls des Clients.
proxy_set_header
- Derfür statische Inhalte stellt sicher, dass Nginx Dateien wie Bilder, CSS und JavaScript direkt ausliefert und so die Belastung des Apache reduziert.
Location-Block
- Speichern und schließen Sie die Konfigurationsdatei.
- Wenn Sie Debian/Ubuntu verwenden, aktivieren Sie die Site, indem Sie einen Symlink zuerstellen:
sites-enabled
- Testen Sie die Nginx-Konfiguration auf Syntaxfehler:
- Starten Sie Nginx neu, um die neue Konfiguration anzuwenden:
Schritt 4: Testen der Reverse-Proxy-Einrichtung
Nun, da Nginx und Apache konfiguriert sind, ist es an der Zeit, die Einrichtung des Reverse-Proxys zu testen, um sicherzustellen, dass alles korrekt funktioniert.
- Besuchen Sie Ihre Domäne oder IP-Adresse: Öffnen Sie Ihren Browser und navigieren Sie zu(ersetzen Sie dies durch Ihre tatsächliche Domain oder Server-IP). Wenn alles korrekt eingerichtet ist, sollten Sie sehen, dass der Inhalt von Apache bereitgestellt, aber durch Nginx geleitet wird.
http://example.com
- Überprüfen Sie die Nginx- und Apache-Protokolle: Wenn es Probleme gibt, überprüfen Sie die Protokolle für Nginx und Apache, um die Fehler zu beheben:
- Nginx-Protokolle:und
/var/log/nginx/access.log
/var/log/nginx/error.log
- Apache-Protokolle:und
/var/log/apache2/access.log
(oder/var/log/apache2/error.log
für CentOS/RHEL)/var/log/httpd/
- Nginx-Protokolle:
Schritt 5: (Optional) Konfigurieren Sie SSL für HTTPS
Wenn Sie Ihre Website mit HTTPS sichern wollen, kann Nginx die SSL-Terminierung übernehmen. Das bedeutet, dass Nginx die SSL-Zertifikate und die Verschlüsselung verwaltet, während Apache nur den entschlüsselten HTTP-Verkehr verarbeitet.
Schritte zum Aktivieren von SSL:
- Besorgen Sie sich ein SSL-Zertifikat: Sie können Let’s Encrypt verwenden, um ein kostenloses SSL-Zertifikat für Ihre Domain zu erhalten:
- Ändern Sie die Nginx-Konfiguration: Aktualisieren Sie Ihre Nginx-Konfigurationsdatei, um auf Portfür HTTPS zu lauschen:
443
- HTTP auf HTTPS umleiten: Fügen Sie einen Umleitungsblock in Ihre Konfiguration ein, um sicherzustellen, dass alle HTTP-Anfragen auf HTTPS umgeleitet werden:
- Starten Sie Nginx neu: Starten Sie Nginx neu, um die Änderungen zu übernehmen:
Fazit
Die Verwendung von Nginx als Reverse-Proxy für Apache ist eine leistungsstarke Einrichtung, die die Stärken beider Webserver kombiniert. Nginx verarbeitet statische Inhalte und eingehende Anfragen effizient, während Apache die dynamischen Inhalte und die Backend-Verarbeitung verwaltet. Dieser hybride Ansatz kann die Leistung, Sicherheit und Skalierbarkeit Ihrer Webserver-Infrastruktur erheblich verbessern.
Wenn Sie die in diesem Leitfaden beschriebenen Schritte befolgen, können Sie Nginx als Reverse-Proxy vor Apache einrichten und von den Vorteilen beider Welten profitieren. Darüber hinaus gewährleistet die Implementierung von SSL mit Nginx die Sicherheit Ihrer Website und gibt Ihnen und Ihren Benutzern ein gutes Gefühl.