Konfiguration von Nginx und Apache2 auf Ubuntu

Melden

Hier ist ein ausführliches Tutorial zur Konfiguration von Nginx und Apache2 auf Ubuntu 20.04 LTS. In diesem Szenario nutzen wir die gängigste Methode: Nginx als Reverse Proxy vor einem Apache-Backend.

Dies kombiniert die Geschwindigkeit von Nginx bei statischen Inhalten mit der Flexibilität von Apache (z. B. .htaccess-Dateien).


Dieses Tutorial führt Sie durch die Schritte, um Apache auf einem alternativen Port laufen zu lassen und Nginx als primären Webserver einzurichten, der Anfragen an Apache weiterleitet.

Voraussetzungen

  • Ein Server mit Ubuntu 20.04 LTS.
  • Root-Zugriff oder ein Benutzer mit sudo-Rechten.

Schritt 1: Apache2 installieren und konfigurieren

Zuerst installieren wir Apache und ändern den Port, auf dem er lauscht, damit es nicht zu Konflikten mit Nginx kommt (beide nutzen standardmäßig Port 80).

1.1 Apache installieren

sudo apt update
sudo apt install apache2

1.2 Den Apache-Port ändern

Öffnen Sie die Konfigurationsdatei für die Ports:

sudo nano /etc/apache2/ports.conf

Ändern Sie die Zeile Listen 80 in:

Listen 8080

1.3 Virtual Host anpassen

Passen Sie die Standard-Virtual-Host-Datei an, damit sie ebenfalls auf Port 8080 reagiert:

sudo nano /etc/apache2/sites-available/000-default.conf

Ändern Sie die erste Zeile von <VirtualHost *:80> zu:

<VirtualHost *:8080>

Speichern und schließen Sie die Datei (STRG+O, Enter, STRG+X).

1.4 Apache neu starten

sudo systemctl restart apache2

Schritt 2: Nginx installieren und als Reverse Proxy einrichten

Nun installieren wir Nginx, das auf Port 80 (HTTP) lauscht und die Anfragen an Apache (Port 8080) weiterreicht.

2.1 Nginx installieren

sudo apt install nginx

2.2 Nginx-Konfiguration erstellen

Erstellen Sie eine neue Konfigurationsdatei für Ihre Webseite:

sudo nano /etc/nginx/sites-available/proxy-setup

Fügen Sie den folgenden Inhalt ein (ersetzen Sie ihre_domain.de durch Ihre IP oder Domain):

server {
    listen 80;
    server_name ihre_domain.de;

    location / {
        proxy_pass http://localhost: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;
    }
}

2.3 Konfiguration aktivieren

Erstellen Sie einen Symlink, um die Konfiguration zu aktivieren, und löschen Sie die Standard-Nginx-Seite:

sudo ln -s /etc/nginx/sites-available/proxy-setup /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default

2.4 Nginx testen und neu starten

sudo nginx -t
sudo systemctl restart nginx

Schritt 3: Apache-Modul für korrekte IP-Adressen (Optional)

Da Nginx nun die Anfragen weiterleitet, sieht Apache standardmäßig nur die IP des eigenen Servers (127.0.0.1). Um die echten Besucher-IPs in den Apache-Logs zu sehen, nutzen wir mod_remoteip.

  1. Aktivieren Sie das Modul:
    sudo a2enmod remoteip
  2. Konfigurieren Sie es:
    sudo nano /etc/apache2/conf-available/remoteip.conf

    Fügen Sie hinzu:

    RemoteIPHeader X-Forwarded-For
    RemoteIPInternalProxy 127.0.0.1
  3. Konfiguration aktivieren und Apache neu starten:
    sudo a2enconf remoteip
    sudo systemctl restart apache2

Schritt 4: Firewall anpassen

Falls Sie die ufw Firewall verwenden, stellen Sie sicher, dass HTTP- und HTTPS-Verkehr zugelassen sind:

sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Apache'
sudo ufw reload

Schritt 5: Testen der Einrichtung

Sie können nun prüfen, ob beide Server korrekt arbeiten:

  1. Nginx prüfen: Rufen Sie Ihre IP-Adresse im Browser auf. Sie sollten die Standard-Apache-Seite sehen, obwohl Nginx die Anfrage entgegennimmt.
  2. Ports prüfen: Geben Sie sudo netstat -tlpn ein. Sie sollten sehen, dass nginx auf Port 80 und apache2 auf Port 8080 lauscht.

Zusammenfassung:

  • Nginx fungiert als Türsteher auf Port 80.
  • Apache erledigt die Arbeit im Hintergrund auf Port 8080.
  • Sie profitieren von der Geschwindigkeit von Nginx und den Funktionen von Apache.
0