Kontaktiere uns

info@serverion.com

Vollständige Anleitung zum Erstellen eines sicheren Nginx-Reverse-Proxys

Vollständige Anleitung zum Erstellen eines sicheren Nginx-Reverse-Proxys

Die Einrichtung eines sicheren, zuverlässigen und skalierbaren Reverse-Proxys ist für Unternehmen und IT-Experten, die stark frequentierte Websites oder komplexe Anwendungen verwalten, von entscheidender Bedeutung. Nginx, ein Open-Source-Webserver und Reverse-Proxy, ist eine leistungsstarke Lösung für das Routing, die Optimierung und die Sicherung des Datenverkehrs zu Ihren Backend-Diensten. In dieser Anleitung erläutern wir die Einrichtung eines robusten Reverse-Proxys mit Nginx unter Ubuntu 24.04 und behandeln dabei wichtige Schritte wie TLS-Verschlüsselung, Ratenbegrenzung und die Integration mit Cloudflare.

Wenn Sie Websites, E-Commerce-Plattformen oder Medienserver auf Unternehmensebene verwalten, können Sie mit diesem Handbuch die Leistung verbessern, die Betriebszeit sicherstellen und Ihre Infrastruktur vor Sicherheitslücken schützen.

Was ist ein Nginx-Reverse-Proxy?

Ein Nginx-Reverse-Proxy fungiert als Vermittler zwischen Clients und Backend-Diensten. Er leitet Client-Anfragen an den entsprechenden Backend-Server weiter, optimiert die Lastverteilung, erhöht die Sicherheit und ermöglicht Funktionen wie Caching, SSL-Terminierung und Traffic-Filterung. Dieses Setup eignet sich besonders für das Hosting von Medienservern, Multi-Site-Anwendungen und Diensten hinter Firewalls.

Warum Sie einen Reverse-Proxy benötigen

Ein Reverse-Proxy bietet mehrere wichtige Vorteile:

  • Verbesserte Sicherheit: Verbirgt die IPs der Backend-Server und aktiviert die Verschlüsselung über TLS/SSL.
  • Lastenausgleich: Verteilt den Datenverkehr gleichmäßig auf mehrere Backend-Server.
  • Optimierung: Reduziert die Latenz und verbessert die Ressourceneffizienz.
  • Skalierbarkeit: Erleichtert die Verwaltung von Szenarien mit hohem Datenverkehr.
  • Einfache Verwaltung: Vereinfacht die Konfiguration mehrerer Backend-Dienste hinter einer einheitlichen Domäne.

In diesem Tutorial zeigen wir Ihnen Folgendes:

  • Richten Sie Nginx als Reverse-Proxy ein.
  • Sichern Sie Ihr Setup mit TLS-Zertifikaten von Let’s Encrypt.
  • Konfigurieren Sie erweiterte Optimierungen wie Ratenbegrenzung und Anforderungsweiterleitung.
  • Integrieren Sie Cloudflare, um Portbeschränkungen Ihres ISPs zu umgehen.

Schritt 1: Installieren von Nginx und Certbot unter Ubuntu 24.04

Aktualisieren Sie Ihr System

Stellen Sie vor der Installation von Software sicher, dass Ihr System auf dem neuesten Stand ist:

sudo apt update && sudo apt upgrade 

Installieren Sie Nginx und Certbot

Verwenden Sie die folgenden Befehle, um Nginx und Certbot mit dem Nginx-Plugin zu installieren:

sudo apt install nginx -y sudo apt install certbot python3-certbot-nginx -y 

Installation überprüfen

Bestätigen Sie, dass Nginx ausgeführt wird:

sudo systemctl status nginx 

Um den Zugriff zu testen, ermitteln Sie die IP-Adresse Ihres Servers:

IP a 

Rufen Sie die IP-Adresse in einem Browser auf. Bei erfolgreichem Aufruf wird die standardmäßige Nginx-Begrüßungsseite angezeigt.

Schritt 2: Konfigurieren von Firewall-Regeln

Unkomplizierte Firewall (UFW) aktivieren

Mit UFW können Sie Firewall-Regeln einfach verwalten:

sudo ufw erlauben 'Nginx Full' sudo ufw erlauben OpenSSH sudo ufw aktivieren 

Überprüfen Sie den Status Ihrer Firewall, um sicherzustellen, dass die richtigen Ports geöffnet sind:

sudo ufw-Status 

Schritt 3: Einrichten der Nginx-Proxy-Konfiguration

Erstellen Sie benutzerdefinierte Konfigurationsdateien

Für mehr Flexibilität und Sicherheit verwenden Sie Snippet-Dateien zum Speichern spezifischer Konfigurationen. Erstellen Sie die folgenden Dateien:

  1. Sicherheitsheader:
    sudo nano /etc/nginx/snippets/security-headers.conf 
    Definieren Sie Sicherheitsheader, um den Schutz zu verbessern:
    add_header X-Frame-Optionen "SAMEORIGIN"; add_header X-Content-Type-Optionen "nosniff"; add_header X-XSS-Schutz "1; Modus=Block"; 
  2. Proxy-Einstellungen:
    sudo nano /etc/nginx/snippets/proxy.conf 
    Optimieren Sie lange Streams und verhindern Sie langsame Antworten:
    Proxy_Verbindungs-Timeout 60 s; Proxy_Sende-Timeout 60 s; Proxy_Lese-Timeout 60 s; 
  3. Ratenbegrenzungen:
    sudo nano /etc/nginx/snippets/rate-limit.conf 
    Reduzieren Sie übermäßige Anfragen:
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s; 

Snippets in die Hauptkonfiguration einschließen

Bearbeiten Sie die Hauptkonfiguration von Nginx:

sudo nano /etc/nginx/nginx.conf 

Fügen Sie unter dem http Block:

include /etc/nginx/snippets/*.conf; 

Starten Sie Nginx neu, um die Änderungen zu übernehmen:

sudo systemctl nginx neu laden 

Schritt 4: Einrichten eines Reverse-Proxys für einen Backend-Dienst

Erstellen eines virtuellen Hosts

Erstellen Sie eine Konfigurationsdatei für Ihren Backend-Dienst:

sudo nano /etc/nginx/sites-available/jellyfin 

Beispielkonfiguration für einen Jellyfin-Medienserver:

Server { listen 80; Servername jelly.yourdomain.com; Standort / { Proxy-Passwort http://10.10.0.112:8096; include /etc/nginx/snippets/proxy.conf; } } 

Aktivieren Sie die Site, indem Sie einen symbolischen Link erstellen:

sudo ln -s /etc/nginx/sites-available/jellyfin /etc/nginx/sites-enabled/ 

Testen und neu laden von Nginx:

sudo nginx -t sudo systemctl nginx neu laden 

Schritt 5: Sichern Ihrer Domain mit Let’s Encrypt TLS

Um Ihre Domain zu sichern, verwenden Sie Let's Encrypt, um kostenlose Zertifikate auszustellen:

sudo certbot --nginx -d jelly.yourdomain.com 

Certbot konfiguriert SSL automatisch in Ihrer Nginx-Site-Datei. Um sicherzustellen, dass Zertifikate automatisch erneuert werden, überprüfen Sie, ob der systemd-Timer aktiv ist:

sudo systemctl list-timers | grep certbot 

Schritt 6: Integration von Cloudflare für zusätzliche Sicherheit und ISP-Port-Bypass

Cloudflared installieren

Cloudflared erstellt einen sicheren Tunnel, um den Datenverkehr durch Cloudflare zu leiten und dabei die ISP-Beschränkungen für die Ports 80 und 443 zu umgehen:

  1. Laden Sie die .deb Paket von der GitHub-Seite von Cloudflare.
  2. Installieren Sie das Paket:
    sudo dpkg -i cloudflared-version.deb 

Konfigurieren eines Tunnels

Authentifizieren Sie sich mit Ihrem Cloudflare-Konto:

Cloudflare-Tunnel-Anmeldung 

Erstellen Sie einen neuen Tunnel:

Cloudflared-Tunnel erstellen my-tunnel 

Bearbeiten Sie die Cloudflare-Konfigurationsdatei:

sudo nano /etc/cloudflared/config.yml 

Beispielkonfiguration:

Tunnel: my-tunnel Anmeldeinformationen-Datei: /home/user/.cloudflared/my-tunnel.json Eingang: - Hostname: jelly.yourdomain.com Dienst: http://localhost:8096 - Dienst: http_status:404 

Starten und aktivieren Sie den Tunneldienst:

sudo systemctl cloudflared aktivieren sudo systemctl cloudflared starten 

Die wichtigsten Erkenntnisse

  • Nginx Reverse Proxy: Unverzichtbar für die sichere Weiterleitung des Datenverkehrs und die Optimierung von Backend-Diensten.
  • TLS-Verschlüsselung: Verwenden Sie Let's Encrypt, um Ihre Domänen mit kostenlosen SSL-Zertifikaten zu sichern.
  • Firewall-Regeln: Öffnen Sie die erforderlichen Ports für HTTP (80), HTTPS (443) und SSH (22).
  • Sicherheitsoptimierung: Implementieren Sie Header und Ratenbegrenzungen, um Angriffe zu verhindern.
  • Cloudflare-Integration: Verwenden Sie Cloudflared-Tunnel für sicheres, ISP-freundliches Hosting.
  • Automatisierung: Systemd-Timer stellen sicher, dass SSL-Zertifikate automatisch erneuert werden.

Abschluss

Die Einrichtung eines sicheren Nginx-Reverse-Proxys erfordert Liebe zum Detail und sorgfältige Konfiguration, doch der Aufwand lohnt sich. Egal, ob Sie Medienserver wie Jellyfin hosten oder Unternehmensanwendungen verwalten – dieser Leitfaden vermittelt Ihnen die Tools und das Wissen für den Aufbau einer hochsicheren und effizienten Umgebung. Mit Funktionen wie TLS, Cloudflare-Tunneln und erweiterten Optimierungen ist Ihre Infrastruktur bereit für moderne Anforderungen.

Quelle: „Hören Sie auf, Ihre Apps preiszugeben! Erstellen Sie einen sicheren Nginx-Reverse-Proxy!“ – KeepItTechie, YouTube, 19. August 2025 – https://www.youtube.com/watch?v=MzbhS2S7H_g

Verwendung: Eingebettet als Referenz. Kurze Zitate für Kommentare/Rezensionen.

Verwandte Blogbeiträge

de_DE_formal