# OPNsense HAProxy: Reverse Proxy & Modern Web Exposure

TL;DR / Management Summary Ein direkter Port-Forward (Artikel 561) auf interne Webserver ist unsicher und unflexibel. Der HAProxy Reverse Proxy agiert als intelligentes Gateway zwischen Internet und LAN. Er terminiert SSL-Verbindungen, filtert böswillige Anfragen und leitet Traffic basierend auf dem Hostnamen (z.B. wiki.firma.de vs. cloud.firma.de) an unterschiedliche interne Server weiter. Ein Senior Admin nutzt HAProxy, um das Sicherheitsniveau seiner Web-Infrastruktur massiv zu steigern.


# 1. Einführung & Konzepte

Layer-7 Switching.

HAProxy arbeitet auf der Anwendungsebene (OSI Layer 7).


# 2. Einrichtung in der Praxis

Dienste sicher bündeln.

# Schritt 1: Das Zertifikat

Importieren Sie Ihr Wildcard-Zertifikat oder nutzen Sie das ACME Plugin (Artikel 322), um Zertifikate automatisch von Let’s Encrypt zu beziehen.

# Schritt 2: Backends definieren

Services -> HAProxy -> Backend Pool. Erstellen Sie für jede App (Wiki, Nextcloud, Proxmox GUI) ein eigenes Backend.

# Schritt 3: Frontends & ACLs

  1. Erstellen Sie ein Frontend auf Port 443.
  2. Definieren Sie eine ACL: Host matches: wiki.firma.de.
  3. Verknüpfen Sie die ACL mit dem passenden Backend.

# 3. Deep Dive: SSL Offloading & Security

Verschlüsselung am Rand.

# SSL Offloading

Der User spricht HTTPS mit OPNsense. OPNsense spricht HTTP mit dem internen Server.

# IP-Passthrough (X-Forwarded-For)

Damit der Webserver im LAN die echte IP des Users sieht (und nicht nur die IP der Firewall):


# 4. Day-2 Operations: Rate Limiting & Schutz

DoS-Angriffe abwehren.

HAProxy kann User blockieren, die zu viele Anfragen pro Sekunde schicken.


# 5. Troubleshooting & “War Stories”

Wenn der Proxy streikt.

# Top 3 Fehlerbilder

  1. Symptom: “503 Service Unavailable”.

    • Ursache: Das Backend ist offline oder der Health-Check (Artikel 562) schlägt fehl.
    • Lösung: Health-Check Methode auf TCP (einfacher Connect) statt HTTP stellen für den ersten Test.
  2. Symptom: Unendliche Redirect-Schleife (HTTP -> HTTPS -> HTTP).

    • Ursache: Der interne Webserver versucht selbst auf HTTPS umzuleiten, erkennt aber nicht, dass HAProxy die Verbindung bereits verschlüsselt hat.
    • Lösung: Im internen Webserver (Apache/Nginx) das X-Forwarded-Proto Flag auswerten.
  3. Symptom: Große Dateiuploads (z.B. Nextcloud) brechen ab.

    • Lösung: Timeouts im Frontend und Backend von 30s auf 300s erhöhen.

# “War Story”: Der “Double-Header” Bug

Ein Admin wunderte sich, warum seine Web-Applikation sporadisch “Invalid Header” Fehler warf. Die Entdeckung: Sowohl die OPNsense Firewall (via Shaper) als auch HAProxy fügten spezifische Header hinzu. Wenn ein Paket beide Instanzen passierte, war der Header-Bereich zu groß für den internen Webserver. Lösung: Wir konfigurierten HAProxy so, dass er bestehende X-Forwarded-For Header erst löscht, bevor er seine eigenen setzt. Lehre: Ein Reverse Proxy ist ein Protokoll-Manipulator. Man muss exakt wissen, welche Header-Felder die Applikation erwartet.


# 6. Monitoring & Reporting

Dashboard für Web-Traffic.

# HAProxy Statistics

Nutzen Sie die integrierte Statistik-Seite (Port 9000, Passwort-geschützt).


# 7. Fazit & Empfehlung

HAProxy ist die sicherste Methode, um Webdienste im Internet anzubieten.


# Anhang: Cheatsheet für ACLs

Typ Wert Zweck
Host matches cloud.meine.de Routing nach Domain
Path starts with /admin Schutz von Unterverzeichnissen
Source IP Alias_HomeOffice Zugriffsbeschränkung
Backend Status 0 (Down) Fehlerseite anzeigen

# Referenzen