Ein Reverse Proxy dient als Gateway zwischen Clients und mehreren Backend-Anwendungen. Nginx ist ein besonders leistungsfähiger Webserver, der sich hervorragend als Reverse Proxy einsetzen lässt. Mit Nginx können mehrere Webanwendungen über eine einzige IP-Adresse und unterschiedliche Domains oder Pfade erreichbar gemacht werden, während gleichzeitig SSL/TLS, Caching und Load Balancing integriert werden können. Dieser Leitfaden zeigt Schritt für Schritt, wie Nginx als Reverse Proxy für mehrere Apps konfiguriert wird.
Systemvorbereitung
Bevor Nginx als Reverse Proxy eingerichtet wird, sollte das System aktualisiert und notwendige Pakete installiert werden.
System aktualisieren
sudo apt update
sudo apt upgrade -y
Für CentOS/RHEL:
sudo yum update -y
Basis-Pakete installieren
sudo apt install wget curl git unzip -y
Nginx Installation
Nginx kann über die Paketverwaltung installiert werden. Für aktuelle Versionen empfiehlt sich das offizielle Repository.
Installation unter Ubuntu/Debian
sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx
Installation unter CentOS/RHEL
sudo yum install epel-release -y
sudo yum install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx
Reverse Proxy Grundlagen
Ein Reverse Proxy leitet eingehende Anfragen an die entsprechenden Backend-Server weiter. Dies ermöglicht die Bündelung mehrerer Dienste hinter einer IP-Adresse.
Vorteile eines Reverse Proxy
- Zentrale SSL/TLS-Termination
- Lastverteilung (Load Balancing)
- Caching statischer Inhalte
- Schutz der Backend-Server vor direktem Zugriff
- Routing nach Domain oder URL-Pfad
Backend-Anwendungen vorbereiten
Für jedes Backend muss ein eigener Dienst laufen, z. B. ein Webserver auf unterschiedlichen Ports.
Beispiel-Webapps
- App1: http://localhost:8081
- App2: http://localhost:8082
- App3: http://localhost:8083
Nginx als Reverse Proxy konfigurieren
Die Konfiguration erfolgt über Serverblöcke, die Anfragen an die entsprechenden Backends weiterleiten.
Serverblock für mehrere Apps
sudo nano /etc/nginx/sites-available/reverse-proxy.conf
server { listen 80; server_name meinewebsite.de www.meinewebsite.de;location /app1/ {
proxy_pass http://localhost:8081/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /app2/ {
proxy_pass http://localhost:8082/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /app3/ {
proxy_pass http://localhost:8083/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}}
Serverblock aktivieren
sudo ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginxHTTPS mit Let’s Encrypt einrichten
TLS/SSL schützt die Kommunikation zwischen Client und Reverse Proxy. Let’s Encrypt bietet kostenlose Zertifikate.
Certbot installieren
sudo apt install certbot python3-certbot-nginx -yZertifikat erstellen
sudo certbot --nginx -d meinewebsite.de -d www.meinewebsite.deAutomatische Erneuerung testen
sudo certbot renew --dry-runLoad Balancing konfigurieren
Nginx kann eingehende Anfragen auf mehrere Backend-Server verteilen, um die Last zu reduzieren.
Beispiel: Round-Robin Load Balancing
upstream app1_backend { server localhost:8081; server localhost:8084; }server {
listen 80;
server_name meinewebsite.de;location /app1/ {
proxy_pass http://app1_backend/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}}
Caching und Performance
Ein Reverse Proxy kann statische Inhalte cachen, um die Backend-Server zu entlasten.
Beispiel: statisches Caching
location /static/ { root /var/www/html/; expires 30d; add_header Cache-Control "public"; }Sicherheit und Schutz
Nginx als Reverse Proxy kann auch als Sicherheitsbarriere dienen.
Wichtige Maßnahmen
- SSL/TLS erzwingen (HTTPS)
- HTTP Security Header setzen: HSTS, X-Frame-Options, X-Content-Type-Options
- IP-Whitelisting oder Rate-Limiting für sensible Pfade
- Fail2ban zur Absicherung gegen Brute-Force-Angriffe
Beispiel Security Header
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
Monitoring und Logs
Logs sind essenziell, um die Performance und Sicherheit des Reverse Proxy zu überwachen.
Nginx Logs prüfen
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log
Traffic und Status überwachen
sudo nginx -s reopen
sudo systemctl status nginx
Netzwerkkonfiguration
Damit der Reverse Proxy erreichbar ist, müssen IP-Adresse und Ports korrekt konfiguriert sein.
Subnetzberechnung
Beispiel: Server-IP 10.0.1.15/24
<math>
Subnetzadresse = 10.0.1.15 & 255.255.255.0 = 10.0.1.0
Broadcastadresse = 10.0.1.0 | ~255.255.255.0 = 10.0.1.255
</math>
Netzwerkinterface konfigurieren
sudo nano /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: no
addresses:
- 10.0.1.15/24
gateway4: 10.0.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
sudo netplan apply
Best Practices
- Regelmäßige Updates von Nginx und Linux-Paketen
- Automatische SSL-Erneuerung testen
- Minimalrechte für Backend-Server und Dienste vergeben
- Load Balancing nutzen, um Hochlast zu bewältigen
- Logs regelmäßig analysieren und überwachen
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.

