Docker: interner nginx statt socat (Host-Header -> localhost)

Ursache des 404 bei Zugriff über IP/Proxy: .NET-HttpListener bedient den Prefix
http://localhost:8077/ nur bei Host: localhost. socat (L4) reicht den originalen
Host-Header durch -> 404. Jetzt sitzt ein winziger nginx im Container davor, der
den Host-Header auf localhost umschreibt (Upstream [::1]:8077, IPv4 als Fallback).
App-Code bleibt unverändert.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-09-21 14:35:24 +02:00
co-authored by Claude Opus 4.8
parent c217f5f8f3
commit f40be6e4bd
5 changed files with 55 additions and 25 deletions
+5 -3
View File
@@ -9,9 +9,11 @@ Entrypoint-Script.
> veröffentlichten Port (`8080`) an. HTTPS macht der Proxy.
## Wie es funktioniert
- Die App bindet unverändert auf `http://localhost:8077/` (nur containerintern).
- Ein **socat-Bridge** im Container leitet `0.0.0.0:8080 → 127.0.0.1:8077` — dadurch ist
die App von außen erreichbar, ohne den App-Code anzufassen.
- Die App bindet unverändert auf `http://localhost:8077/` (nur containerintern) und
bedient — bedingt durch .NET-`HttpListener` — **nur Requests mit `Host: localhost`**.
- Ein **interner nginx** (Port 8080) leitet auf die App weiter und schreibt dabei den
**`Host`-Header auf `localhost`** um. Ohne dieses Rewrite käme bei Zugriff über IP/Proxy
ein `404`. Der App-Code bleibt unangetastet.
- Settings/Policy-Exporte liegen im Volume `/data` (`XDG_CONFIG_HOME=/data`, wird von
`Get-AppDataDir` auf Linux automatisch genutzt).