From 7877c0f7b91907f2e44caecf8385a9403f194c11 Mon Sep 17 00:00:00 2001 From: D4rkst3r Date: Tue, 11 Aug 2026 23:41:51 +0200 Subject: [PATCH] docs: der Proxy-Block sitzt -- gemessen, nicht geglaubt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Eingetragen und gespeichert. tools/proxy-pruefen.ps1 sagt jetzt fuenf von fuenf: [ok] /f/ Cache-Control public, max-age=300 [ok] /t/ Cache-Control public, max-age=60 [ok] /api/ mit Token -> 200 HTTP 200 [ok] /api/ dieselbe Adresse ohne Token -> 401 HTTP 401 [ok] /api/exists?pfad ohne Token -> 401 HTTP 401 Und die Folgen, die daran hingen, einzeln gegengeprueft: /api/exists/…webp ohne Token 200 mit voller Auskunft -> 401 dieselbe Adresse MIT Token 401 (zwischengespeichert) -> 200 Vorschau nach erneutem Upload bis zu 4 h alt -> max-age=60 Vary auf /f/ wurde entfernt -> vary: Accept Die WebP-Aushandlung am selben Bild: ohne Accept image/png mit 12295 B, mit Accept: image/webp dann image/webp mit 2270 B. Gleiche Adresse, 82 Prozent weniger -- das ging vorher nur deshalb, weil /f/ als einziger Pfad schon ausgenommen war. Was bleibt: /api/exists?pfad=… ist weiterhin die empfohlene Form. Sie ist dicht, OHNE von dieser Proxy-Einstellung abzuhaengen -- eine Zugangspruefung, die an einer Zeile in einer fremden Oberflaeche haengt, ist keine. Der Fall hat gerade gezeigt, wie schnell so eine Zeile fehlt. Co-Authored-By: Claude Opus 5 --- ROADMAP.md | 57 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/ROADMAP.md b/ROADMAP.md index 2d0c218..7456492 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -479,36 +479,39 @@ Portainer also `Compose path: docker-compose.yml`). Gelöscht: drei Volumes und drei Abbilder, rund **670 MB**. Nachgezählt war vorher, dass kein einziges Bild darin lag. -**Was noch bei dir liegt** — an NPM komme ich ohne Zugang nicht. +**Der Proxy ist erledigt.** `docs/npm-advanced.conf` ist eingetragen und +gespeichert; `tools/proxy-pruefen.ps1` misst nach, statt vermuten zu lassen: -> **Fertig zum Einfügen:** `docs/npm-advanced.conf`. Den ganzen Inhalt in -> NPM → Proxy-Host → *Advanced* → *Custom Nginx Configuration*, dann **Save** -> (erst das schreibt `9.conf` neu — die wahrscheinlichste Erklärung dafür, dass -> es beim ersten Anlauf nicht ankam). Danach: -> -> ```powershell -> pwsh -File tools\proxy-pruefen.ps1 -Token d4rk_... -> ``` -> -> Das misst und sagt es, statt es vermuten zu lassen. Die Syntax der Datei ist -> mit `nginx -t` in einem Wegwerf-Container gegengeprüft. - -Nachgemessen am 11.08.2026, nicht vermutet: - -| Pfad | gemessene `Cache-Control` | heißt | -|---|---|---| -| `/f/…` | `public, max-age=300` (unsere) | Block sitzt ✅ | -| `/t/…` | `max-age=17293` (NPMs) | **Block fehlt** ⬜ | - -Also noch einzutragen: - -```nginx -location ^~ /t/ { proxy_cache off; include conf.d/include/proxy.conf; } +``` +[ok] /f/ Cache-Control public, max-age=300 +[ok] /t/ Cache-Control public, max-age=60 +[ok] /api/ mit Token -> 200 HTTP 200 +[ok] /api/ dieselbe Adresse ohne Token -> 401 HTTP 401 +[ok] /api/exists?pfad ohne Token -> 401 HTTP 401 ``` -Ohne ihn zeigt die Galerie nach einem erneuten Upload **stundenlang die alte -Vorschau** — die Datei selbst ist längst neu, nur das Kachelbild nicht. Kein -Datenverlust, aber genau die Sorte Abweichung, die man dem Dienst anlastet. +Und die drei Folgen, die daran hingen, gegengeprüft: + +| | vorher | jetzt | +|---|---|---| +| `/api/exists/…webp` **ohne** Token | `200` mit voller Auskunft | `401` | +| dieselbe Adresse **mit** gültigem Token | `401` (zwischengespeichert) | `200` | +| Vorschau nach erneutem Upload | bis zu 4 h alt | `max-age=60` | +| WebP-Aushandlung auf `/f/` | `Vary` wurde entfernt | `vary: Accept` steht | + +Die WebP-Aushandlung am selben Bild nachgemessen: ohne `Accept` kommen +`image/png` mit 12 295 B, mit `Accept: image/webp` kommen `image/webp` mit +2 270 B — **82 % weniger, gleiche Adresse.** + +> Was die Sache gelehrt hat, steht in `docs/npm-advanced.conf` als Kommentar: +> `assets.conf` greift nach der **Endung** der Adresse, nicht nach ihrer +> Bedeutung. Alles, was auf `.webp`, `.png`, `.js` endet, fällt hinein — auch +> eine API-Antwort. Und `proxy_cache_key` kennt den `Authorization`-Kopf nicht, +> also wird dieselbe Antwort an alle ausgeliefert, in beide Richtungen. +> +> Deshalb bleibt `/api/exists?pfad=…` die empfohlene Form: sie ist dicht, **ohne** +> von dieser Proxy-Einstellung abzuhängen. Eine Zugangsprüfung, die an einer +> Zeile in einer fremden Oberfläche hängt, ist keine. Außerdem: den Proxy-Host `fivecdn.d4rkst3r.de` löschen — er zeigt auf den toten Port 9100 und gibt 502.