Einrichten von Nginx Reverse Proxy für Apache ⋆ ALexHost SRL

Testen Sie Ihre Fähigkeiten mit unseren Hosting-Diensten und erhalten Sie 15% Rabatt!

Code an der Kasse verwenden:

Skills
10.12.2024

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:
sudo apt update
sudo apt install nginx apache2
Für CentOS/RHEL:
sudo yum install epel-release
sudo yum install nginx httpd

Sobald sowohl Nginx als auch Apache installiert sind, starten und aktivieren Sie beide Dienste, um sicherzustellen, dass sie beim Booten laufen:

sudo systemctl start nginx
sudo systemctl start apache2 # Für CentOS verwenden Sie 'httpd' anstelle von 'apache2'

sudo systemctl aktivieren nginx
sudo systemctl enable apache2

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
(anstelle des Standardports
80
), damit Nginx auf Port
80
lauschen kann.

Konfigurieren Sie Apache so, dass er auf Port 8080 lauscht:
  1. Öffnen Sie die Apache-Konfigurationsdatei:
    sudo nano /etc/apache2/ports.conf # Für Debian/Ubuntu
    sudo nano /etc/httpd/conf/httpd.conf # Für CentOS/RHEL
  2. Suchen Sie die Zeile, die den Port angibt, an dem Apache lauscht (normalerweise
    Listen 80
    ), und ändern Sie sie in:
    Listen 8080
  3. Speichern Sie die Änderungen und verlassen Sie den Editor.
  4. Starten Sie Apache neu, um die Änderungen zu übernehmen:
    sudo systemctl restart apache2 # Für Debian/Ubuntu
    sudo systemctl restart httpd # Für CentOS/RHEL

Jetzt ist Apache so konfiguriert, dass er auf Port

8080
lauscht, was es Nginx ermöglicht, auf Port
80
(dem Standard-HTTP-Port) zu lauschen und Anfragen an Apache weiterzuleiten.

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
lauscht und Anfragen an Apache auf Port
8080
weiterleitet.

Konfiguration des virtuellen Nginx-Hosts erstellen:
  1. Öffnen oder erstellen Sie eine neue Konfigurationsdatei für den virtuellen Host in Nginx:
    sudo nano /etc/nginx/sites-available/example.com # Für Debian/Ubuntu
    sudo nano /etc/nginx/conf.d/example.com.conf # Für CentOS/RHEL
  2. Fügen Sie die folgende Konfiguration in die Datei ein:
    server {
    listen 80;
    server_name example.com www.example.com; # Ersetzen Sie durch Ihre Domain oder Ihren Server IPlocation
    / {
    proxy_pass http://127.0.0.1:8080; # Anfragen an Apache weiterleiten
    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;
    }# Statische Inhalte direkt über Nginx ausliefern, um die Leistung zu verbessern
    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    läuft 365d ab;
    root /var/www/html; # Pfad zu Ihren statischen Dateien
    }
    }

In dieser Konfiguration:

  • listen 80
    : Nginx lauscht auf Port
    80
    auf eingehende Anfragen.
  • server_name
    : Die Domäne oder IP-Adresse, die Nginx bedienen wird.
  • proxy_pass
    : Leitet Anfragen an Apache weiter, der an Port
    8080
    lauscht.
  • proxy_set_header
    : Leitet verschiedene Header an den Apache weiter, einschließlich der ursprünglichen IP-Adresse und des Protokolls des Clients.
  • Der
    Location-Block
    für statische Inhalte stellt sicher, dass Nginx Dateien wie Bilder, CSS und JavaScript direkt ausliefert und so die Belastung des Apache reduziert.
  1. Speichern und schließen Sie die Konfigurationsdatei.
  2. Wenn Sie Debian/Ubuntu verwenden, aktivieren Sie die Site, indem Sie einen Symlink zu
    sites-enabled
    erstellen:
    sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
  3. Testen Sie die Nginx-Konfiguration auf Syntaxfehler:
    sudo nginx -t
  4. Starten Sie Nginx neu, um die neue Konfiguration anzuwenden:
    sudo systemctl restart nginx

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.

  1. Besuchen Sie Ihre Domäne oder IP-Adresse: Öffnen Sie Ihren Browser und navigieren Sie zu
    http://example.com
    (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.
  2. Ü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:
      /var/log/nginx/access.log
      und
      /var/log/nginx/error.log
    • Apache-Protokolle:
      /var/log/apache2/access.log
      und
      /var/log/apache2/error.log
      (oder
      /var/log/httpd/
      für CentOS/RHEL)

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:
  1. Besorgen Sie sich ein SSL-Zertifikat: Sie können Let’s Encrypt verwenden, um ein kostenloses SSL-Zertifikat für Ihre Domain zu erhalten:
    sudo apt install certbot python3-certbot-nginx # Für Debian/Ubuntu
    sudo yum install certbot python3-certbot-nginx # Für CentOS/RHELsudo
    certbot –nginx -d example.com -d www.example.com
  2. Ändern Sie die Nginx-Konfiguration: Aktualisieren Sie Ihre Nginx-Konfigurationsdatei, um auf Port
    443
    für HTTPS zu lauschen:
    nginx
    server {
    listen 443 ssl;
    server_name example.com www.example.com;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;location / {
    proxy_pass http://127.0.0.1:8080;
    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;
    }location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    läuft 365d ab;
    root /var/www/html;
    }
    }
  3. HTTP auf HTTPS umleiten: Fügen Sie einen Umleitungsblock in Ihre Konfiguration ein, um sicherzustellen, dass alle HTTP-Anfragen auf HTTPS umgeleitet werden:
    server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$server_name$request_uri;
    }
  4. Starten Sie Nginx neu: Starten Sie Nginx neu, um die Änderungen zu übernehmen:
    sudo systemctl restart nginx

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.

Testen Sie Ihre Fähigkeiten mit unseren Hosting-Diensten und erhalten Sie 15% Rabatt!

Code an der Kasse verwenden:

Skills