Ein Reverse Proxy ist eine zentrale Komponente in modernen Netzwerkarchitekturen, die den Verkehr von Clients bündelt und an die entsprechenden Backend-Dienste weiterleitet. Nginx ist hierbei aufgrund seiner Performance, Stabilität und Flexibilität die bevorzugte Wahl. In diesem Tutorial zeigen wir Schritt für Schritt, wie Nginx als Reverse Proxy für mehrere Dienste eingerichtet wird und dabei Sicherheits- und Performance-Best-Practices berücksichtigt werden.
Nginx Installation
Die Installation von Nginx hängt von Ihrer Linux-Distribution ab. Auf Debian/Ubuntu und RHEL/CentOS/AlmaLinux/Rocky Linux lauten die Befehle:
# Debian/Ubuntu
sudo apt update
sudo apt install nginx
RHEL/CentOS/AlmaLinux/Rocky Linux
sudo dnf install nginx
Nginx starten und aktivieren
Nach der Installation sollte der Nginx-Dienst gestartet und beim Booten aktiviert werden:
# Debian/Ubuntu
sudo systemctl enable --now nginx
sudo systemctl status nginx
RHEL/CentOS/AlmaLinux/Rocky Linux
sudo systemctl enable --now nginx
sudo systemctl status nginx
Firewall konfigurieren
HTTP- und HTTPS-Verkehr muss erlaubt sein, damit Clients die Dienste erreichen können:
# Beispiel mit UFW auf Ubuntu
sudo ufw allow 'Nginx Full'
sudo ufw status
Beispiel mit firewalld auf RHEL/CentOS
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
Verzeichnisstruktur für Reverse Proxy Konfiguration
Es empfiehlt sich, für jeden Dienst eine eigene Konfigurationsdatei zu erstellen. Standardmäßig liegen die Konfigurationen auf Debian/Ubuntu unter /etc/nginx/sites-available/ und auf RHEL/CentOS unter /etc/nginx/conf.d/.
Reverse Proxy für mehrere Dienste einrichten
Jeder Dienst erhält eine separate Server-Block-Konfiguration. Beispiel für zwei Dienste auf Debian/Ubuntu:
# /etc/nginx/sites-available/service1.conf server { listen 80; server_name service1.meine-domain.de;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;
}}
/etc/nginx/sites-available/service2.conf
server {
listen 80;
server_name service2.meine-domain.de;location / {
proxy_pass http://127.0.0.1:9090;
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;
}}
Sites aktivieren
Auf Debian/Ubuntu müssen die Sites aktiviert werden:
sudo ln -s /etc/nginx/sites-available/service1.conf /etc/nginx/sites-enabled/ sudo ln -s /etc/nginx/sites-available/service2.conf /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginxRHEL/CentOS/AlmaLinux/Rocky Linux
Bei diesen Systemen genügt es meist, die Konfigurationsdateien in
/etc/nginx/conf.d/abzulegen und den Dienst neu zu laden:sudo nginx -t sudo systemctl reload nginxSSL/TLS aktivieren
HTTPS schützt den Datenverkehr zwischen Clients und Diensten. Mit Let’s Encrypt und Certbot können kostenlose Zertifikate genutzt werden:
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d service1.meine-domain.de -d service2.meine-domain.deSecurity Best Practices
- Nur benötigte Module aktivieren
- HTTP Strict Transport Security (HSTS) aktivieren:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; - Versteckte Server-Informationen deaktivieren:
server_tokens off; - Fail2ban oder ähnliche Mechanismen nutzen, um wiederholte Angriffe zu blockieren
- Regelmäßige Updates für Nginx und Backend-Dienste durchführen
Logging und Monitoring
Nginx protokolliert Zugriffe und Fehler pro Server-Block. Die Logs sollten regelmäßig überprüft werden:
sudo tail -f /var/log/nginx/service1_access.log
sudo tail -f /var/log/nginx/service1_error.log
Performance-Optimierungen
Um die Performance bei mehreren Diensten zu erhöhen:
- KeepAlive aktivieren:
keepalive_timeout 65; - Caching aktivieren:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off; - Gzip-Kompression aktivieren:
gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
Load Balancing (optional)
Nginx kann auch als Load Balancer für Backend-Pools dienen:
upstream backend_pool { server 127.0.0.1:8080; server 127.0.0.1:8081; }server {
listen 80;
server_name service3.meine-domain.de;location / {
proxy_pass http://backend_pool;
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;
}}
Mit diesen Schritten ist ein Nginx Reverse Proxy für mehrere Dienste eingerichtet. Trennung pro Dienst, SSL/TLS, Logging, Security-Einstellungen und optionale Load-Balancing-Funktionalität sorgen für einen stabilen, sicheren und skalierbaren Betrieb im Unternehmens- oder Homelab-Umfeld.
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.











