Site icon bintorosoft.com

Reverse Proxy Setup: Nginx als Proxy für mehrere Dienste

Close up of computer web page code inside of html file. Big data and Internet of things trend. Application web source code on monitor.

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 nginx

RHEL/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 nginx

SSL/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.de

Security Best Practices

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:

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:

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Exit mobile version