monitor/docker/nginx/default.conf.template
fds2610-bot 72bad859f1 Reload-Countdown laedt die Buero-Visualisierung bei 0 tatsaechlich neu
Bisher zaehlte der Countdown im Header nur rein kosmetisch herunter, ohne
selbst etwas neu zu laden. Ein dauerhaft offener Tab (z.B. auf einer
Monitor-Wand) blieb dadurch auf unbestimmte Zeit bei der beim Laden
geholten JS-Version haengen, auch wenn ein Fix laengst gemergt und per
Auto-Update deployt war - so blieben z.B. die in PR #106 entfernten
KPI-Graphen auf bereits offenen Tabs weiter sichtbar (Issue #108).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-01 13:39:56 +02:00

33 lines
1.7 KiB
Text

server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
# Einstiegsseite ist die Buero-Visualisierung - ohne diese Direktive liefert
# nginx beim Aufruf der Basis-URL ein 403 (Directory-Listing ist deaktiviert,
# und eine index.html gibt es nicht).
index office.html;
# Laufzeit-Konfiguration fuers Frontend: Das html/-Verzeichnis ist read-only gemountet,
# deshalb werden API-Basis-URL und Sync-Intervall nicht als Datei abgelegt, sondern hier
# aus der Umgebung ausgeliefert (MONITOR_API_BASE, MONITOR_SYNC_INTERVAL, siehe .env).
# Das nginx-Image ersetzt ${MONITOR_API_BASE}/${MONITOR_SYNC_INTERVAL} beim Containerstart
# per envsubst - nur Variablen, die tatsaechlich in der Umgebung definiert sind,
# nginx-eigene wie $uri bleiben unangetastet. Ist eine der beiden Variablen gar nicht
# definiert, bleibt ihr Platzhalter stehen und nginx verweigert den Start
# ("unknown \"monitor_api_base\" variable") - besser ein lauter Fehler als eine still
# falsche URL. docker-compose.yml setzt beide Variablen daher immer (ggf. mit Default).
# MONITOR_SYNC_INTERVAL speist den Reload-Countdown im Header (Issue #12) - der laedt die
# Seite bei 0 tatsaechlich per location.reload() neu (Issue #108), hat aber keinen Einfluss
# auf den laufenden Update-Takt der Szene selbst (SSE/Polling, siehe office-render.js).
location = /config.js {
default_type application/javascript;
add_header Cache-Control "no-store";
return 200 'window.MONITOR_API_BASE = "${MONITOR_API_BASE}"; window.MONITOR_SYNC_INTERVAL = ${MONITOR_SYNC_INTERVAL};';
}
location / {
try_files $uri $uri/ =404;
}
}