PUBLIC_URL umgestellt. FILES_HOST ist leer, der Dienst achtet also gar nicht
auf den Hostnamen, und in NPM stehen beide auf DEMSELBEN Host -- die drei
^~-Bloecke gelten damit fuer beide. Nachgemessen: unter beiden Namen health 200
und dasselbe Bild, bytegleich.
Nachgezogen:
7 Stellen in den Ressourcen d4rk_phone/config.lua (2)
d4rk_photostudio/config.upload.lua
d4rk_photostudio/config.upload.example.lua (2)
d4rk_photostudio/settings.json (2)
2 Watchdog-Eintraege im Bot inklusive Anzeigename
16 Stellen in Doku/Werkzeugen README, docs/API.md, Home.md,
npm-advanced.conf, proxy-pruefen.ps1,
uebernehmen.ps1, .env.example
Die Freigabe-Links zeigen von selbst auf den neuen Namen -- sie werden aus
PUBLIC_URL gebaut und stehen nirgends gespeichert. Die alten funktionieren
weiter.
DIE ROADMAP BEHAELT DEN ALTEN NAMEN, an sechzehn Stellen und mit Absicht: dort
steht die Geschichte, warum er ueberhaupt "fivemanage" hiess. Sie zu ersetzen
machte aus einer Begruendung Unsinn.
ZWEI DINGE, DIE DABEI AUFFIELEN.
Cloudflare stand vor dem neuen Namen und brach die WebP-Auslieferung: der
Cache-Schluessel kennt Accept nicht, also bekam ein Aufrufer OHNE
"Accept: image/webp" die WebP-Fassung aus dem Zwischenspeicher -- unsere
eigenen Bytes unter einem .png-Namen. Nach dem Umstellen auf DNS-only gemessen
und in Ordnung: ohne Accept image/png 12295 B, mit Accept image/webp 2270 B,
Server: openresty, vary: Accept, dreimal hintereinander stabil.
Und der Lua-Syntaxtest schlug bei d4rk_phone/config.lua fehl -- an Zeile 93,
`customModel = \`prop_player_phone_02\``. Das ist kein Schaden, sondern eine
CfxLua-Erweiterung: Backticks sind dort ein joaat-Hash und in Standard-Lua 5.4
ein Syntaxfehler. 85 davon stecken in der Datei. luac -p taugt fuer
CfxLua-Dateien also nicht; geprueft wurde stattdessen, dass genau die zwei
URL-Zeilen anders sind.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
92 lines
3.9 KiB
Plaintext
92 lines
3.9 KiB
Plaintext
# d4rk_media — der Block fuer Nginx Proxy Manager
|
|
#
|
|
# WOHIN: NPM oeffnen -> Hosts -> Proxy Hosts -> media.d4rkst3r.de
|
|
# -> Edit -> Reiter "Advanced" -> Feld "Custom Nginx Configuration"
|
|
#
|
|
# WAS: den GESAMTEN Inhalt dieser Datei dort hineinkopieren. Was schon drin
|
|
# steht (der /f/-Block), ist unten enthalten -- also ersetzen, nicht
|
|
# anhaengen.
|
|
#
|
|
# DANACH: "Save" druecken. ERST DANN schreibt NPM seine Datei
|
|
# /data/nginx/proxy_host/9.conf neu und laedt nginx nach. Ohne Save
|
|
# passiert nichts, und das ist die wahrscheinlichste Erklaerung dafuer,
|
|
# dass der Block beim letzten Mal nicht angekommen ist.
|
|
#
|
|
# Die Kommentarzeilen duerfen mit hinein -- nginx kennt '#'. Die Syntax ist
|
|
# gegengeprueft: `nginx -t` in einem Wegwerf-Container, "syntax is ok".
|
|
#
|
|
# ----------------------------------------------------------------------------
|
|
# WARUM DAS UEBERHAUPT NOETIG IST
|
|
#
|
|
# NPM bindet in jeden Proxy-Host eine assets.conf ein. Deren Regel greift auf
|
|
# JEDE Adresse, die auf eine Bild- oder Skriptendung endet:
|
|
#
|
|
# location ~* ^.*\.(css|js|jpe?g|gif|png|webp|woff|...)$ {
|
|
# proxy_cache public-cache;
|
|
# proxy_cache_key $host$request_uri; <- der Token zaehlt NICHT mit
|
|
# proxy_ignore_headers Set-Cookie Cache-Control Expires ...;
|
|
# proxy_cache_valid any 30m;
|
|
# proxy_hide_header Cache-Control;
|
|
# proxy_hide_header Vary;
|
|
# }
|
|
#
|
|
# Drei gemessene Folgen davon:
|
|
#
|
|
# 1. /api/exists/vehicles/adder.webp endet auf ".webp" und faellt hinein. Der
|
|
# Proxy legt die BERECHTIGTE Antwort weg und liefert sie danach an jeden
|
|
# aus -- nachgemessen: 200 mit voller Auskunft, ganz ohne Token. Und
|
|
# andersherum: landet zuerst ein 401 im Speicher, bekommen ihn 30 Minuten
|
|
# lang alle, auch mit gueltigem Token.
|
|
#
|
|
# 2. /t/… (die Vorschaubilder) tragen dadurch "Cache-Control: max-age=12799"
|
|
# statt unserer "public, max-age=60". Nach einem erneuten Upload zeigt die
|
|
# Galerie deshalb stundenlang die ALTE Vorschau.
|
|
#
|
|
# 3. "proxy_hide_header Vary" wuerde unser "Vary: Accept" wegwerfen. Daran
|
|
# haengt die WebP-Auslieferung: ohne die Zeile bekaeme ein Aufrufer, der
|
|
# kein WebP versteht, die WebP-Fassung aus dem Zwischenspeicher.
|
|
#
|
|
# NACHGEMESSEN AM LAUFENDEN DIENST, damit klar ist, dass das kein
|
|
# theoretisches Problem ist -- dieselbe Adresse, dreimal:
|
|
#
|
|
# GET /api/exists/probe-xyz.webp mit gueltigem Token -> 200
|
|
# GET /api/exists/probe-xyz.webp OHNE Token -> 200 (!)
|
|
# GET /api/exists/vehicles/adder.webp mit gueltigem Token -> 401 (!)
|
|
#
|
|
# Die zweite Zeile ist die Auskunft ohne Berechtigung. Die dritte ist derselbe
|
|
# Fehler andersherum: dort lag ein 401 im Speicher, und den bekam auch, wer
|
|
# einen gueltigen Token hatte.
|
|
#
|
|
# Das "^~" ist der ganze Trick: eine gewoehnliche Praefix-Location VERLIERT
|
|
# gegen eine Regex-Location. Mit "^~" gewinnt sie und die Regex kommt gar nicht
|
|
# mehr zum Zuge. In einem Wegwerf-nginx nachgemessen.
|
|
#
|
|
# NICHT ausgenommen wird /assets/ -- die gebaute Oberflaeche. Deren Dateinamen
|
|
# tragen einen Hash (index-DCMjxAfP.js), aendern sich also nie unter demselben
|
|
# Namen. Dort ist der Zwischenspeicher genau richtig.
|
|
# ----------------------------------------------------------------------------
|
|
# AB HIER IST ES KONFIGURATION.
|
|
|
|
|
|
# Die Dateien selbst. Sie koennen sich unter derselben Adresse aendern (ein
|
|
# neu aufgenommenes Fahrzeugbild ersetzt das alte), und sie tragen "Vary:
|
|
# Accept" fuer die sparsame WebP-Fassung.
|
|
location ^~ /f/ {
|
|
proxy_cache off;
|
|
include conf.d/include/proxy.conf;
|
|
}
|
|
|
|
# Die Vorschaubilder. Aendern sich, sobald ein Bild neu hochgeladen wird --
|
|
# und dann soll das Dashboard es sehen und nicht in vier Stunden.
|
|
location ^~ /t/ {
|
|
proxy_cache off;
|
|
include conf.d/include/proxy.conf;
|
|
}
|
|
|
|
# Die API. Hier haengt eine Zugangspruefung dran, und eine zwischengespeicherte
|
|
# Antwort kennt den Token nicht, der sie erlaubt hat.
|
|
location ^~ /api/ {
|
|
proxy_cache off;
|
|
include conf.d/include/proxy.conf;
|
|
}
|