Am Host erkennt nginx den Dienst; eine neue App sind zwei Zeilen. Geprueft mit zwei Diensten gleichzeitig: richtige data-app je Host, unbekannter Host 404, WebSocket-Upgrade durchgereicht. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
64 lines
2.8 KiB
Plaintext
64 lines
2.8 KiB
Plaintext
# ─────────────────────────────────────────────────────────────────────────────
|
|
# Ein Einsetzer für alle Dienste, die die Leiste tragen sollen.
|
|
#
|
|
# Pangolin gibt den ursprünglichen Host weiter; daran erkennt nginx, welcher
|
|
# Dienst gemeint ist. Eine neue App heisst: zwei Zeilen in den Tabellen unten,
|
|
# neu laden, fertig — kein weiterer Behälter.
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
# Wohin durchgereicht wird. Links der Name, unter dem du die App aufrufst,
|
|
# rechts Behältername und Port im Docker-Netz.
|
|
map $host $ziel {
|
|
default "";
|
|
pdf.honeyos.duckdns.org "bentopdf:8080";
|
|
status.honeyos.duckdns.org "uptime-kuma:3001";
|
|
}
|
|
|
|
# Welche App das für HoneyOS ist. Muss der id in der App-Liste entsprechen —
|
|
# daran erkennt die Leiste, wo man gerade ist, und hebt sie hervor.
|
|
map $host $appid {
|
|
default "";
|
|
pdf.honeyos.duckdns.org "bentopdf";
|
|
status.honeyos.duckdns.org "status";
|
|
}
|
|
|
|
server {
|
|
listen 80;
|
|
server_name _;
|
|
|
|
# Für ein proxy_pass mit Variable braucht nginx einen Namensauflöser —
|
|
# im Docker-Netz ist das der eingebaute unter 127.0.0.11.
|
|
resolver 127.0.0.11 valid=30s ipv6=off;
|
|
|
|
# Unbekannter Host: nicht raten, sondern ablehnen. Sonst wird aus einem
|
|
# Tippfehler in Pangolin eine stille Weiterleitung irgendwohin.
|
|
if ($ziel = "") { return 404; }
|
|
|
|
location / {
|
|
proxy_pass http://$ziel;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
|
|
# WebSockets durchlassen — viele Werkzeuge (Uptime Kuma, Dashboards,
|
|
# alles mit Live-Anzeige) brechen sonst ab.
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection $connection_upgrade;
|
|
|
|
# Unkomprimiert anfordern, sonst ist im Strom nichts zu ersetzen.
|
|
proxy_set_header Accept-Encoding "";
|
|
|
|
# Nur HTML anfassen; alles andere geht unberührt durch.
|
|
sub_filter_types text/html;
|
|
sub_filter_once on;
|
|
sub_filter '</head>'
|
|
'<script defer src="https://honeyos.duckdns.org/honeybar/honeybar.js" data-app="$appid"></script></head>';
|
|
|
|
# Lange Antworten nicht künstlich aufhalten (Downloads, Fortschritt).
|
|
proxy_buffering off;
|
|
proxy_read_timeout 300s;
|
|
}
|
|
}
|