Konfiguration von Nginx und Apache2 auf Ubuntu
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.
- Aktivieren Sie das Modul:
sudo a2enmod remoteip - Konfigurieren Sie es:
sudo nano /etc/apache2/conf-available/remoteip.confFügen Sie hinzu:
RemoteIPHeader X-Forwarded-For RemoteIPInternalProxy 127.0.0.1 - 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:
- Nginx prüfen: Rufen Sie Ihre IP-Adresse im Browser auf. Sie sollten die Standard-Apache-Seite sehen, obwohl Nginx die Anfrage entgegennimmt.
- Ports prüfen: Geben Sie
sudo netstat -tlpnein. Sie sollten sehen, dassnginxauf Port 80 undapache2auf 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.