Site icon bintorosoft.com

Reverse Proxy konfigurieren: Nginx als Gateway für mehrere Apps

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 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

Backend-Anwendungen vorbereiten

Für jedes Backend muss ein eigener Dienst laufen, z. B. ein Webserver auf unterschiedlichen Ports.

Beispiel-Webapps

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 nginx

HTTPS 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 -y

Zertifikat erstellen

sudo certbot --nginx -d meinewebsite.de -d www.meinewebsite.de

Automatische Erneuerung testen

sudo certbot renew --dry-run

Load 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

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

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