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 nur den rein kosmetischen Reload-Countdown im Header # (Issue #12) - hat keinen Einfluss auf den tatsaechlichen Update-Takt der Szene. 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; } }