fix(nginx-152): корень редиректит на активную сборку — закрыта кэш-мина (ассеты Unity зовутся относительным путём)

- index.html: buildUrl="Build" -> без редиректа ассеты шли как /Build/WebGL.wasm (без номера сборки)
  под immutable 7д -> браузер неделю отдавал старую сборку
- publish-release.sh --activate пишет /etc/nginx/game-active.inc: return 302 /<N>/
- immutable сужен до путей с номером сборки; остальное no-store
- приёмка: / -> 302 /29/, браузер тянет /29/Build/* (все 200), autoclose-check 9/9, testfront цел
- сборка 29 (fix webgl: дым падения и PC URP) опубликована на nginx
This commit is contained in:
Porfiry
2026-09-15 18:34:12 +03:00
parent 85f092ba14
commit 5087c67201
5 changed files with 137 additions and 40 deletions
+10 -2
View File
@@ -49,8 +49,16 @@ cd ~/WORK/games/pump-game-ops && BASE=https://smart-updown.binom.pw/api \
относительным путём (`Build/WebGL.loader.js`), поэтому без слэша `Build/...` уедет в корень → 404.
- **`skopeo ... dir:` пишет OCI-манифест**, где `layers` — словари. `unpack-release.sh` берёт
`digest` каждого слоя и распаковывает по имени файла `<hex>` (не `sha256:...`).
- **Кэш больше не прилипает между релизами**: URL содержит номер сборки → `immutable` корректен.
Внутри версии каталог не перезаписывается, поэтому ассеты действительно неизменяемы.
- **Корень — 302 на активную сборку** (`location = / { return 302 /<N>/; }` в
`/etc/nginx/game-active.inc`, пишет `publish-release.sh --activate`). Нужен потому, что
`index.html` Unity зовёт ассеты **относительным** путём (`buildUrl = "Build"`): без редиректа они
запрашивались бы как `/Build/WebGL.wasm` — без номера сборки, а такой URL между релизами НЕ
меняется → `immutable` заставлял браузер неделю отдавать старый билд. С редиректом путь становится
`/29/Build/…` и кэш корректен.
- **`immutable` только для путей с номером сборки** (`~^/[0-9]+/…`). Всё остальное, включая
неверсионированные ассеты, — `no-store` (страховка от отравления кэша).
- ⚠️ Если правишь `game.nginx.conf` — не забудь `include /etc/nginx/game-active.inc;`, иначе корень
снова начнёт раздавать файлы напрямую и мина вернётся.
- **Сборки копятся** (~68 МБ на версию) — ретеншен пока ручной, см. `TASKS.md`.
- **Откат схемы целиком**: вернуть `/opt/traefik/static/smart-updown.yaml` из
`/root/bak-smart-updown-nginx-2026-09-15/` на VDS — домен снова пойдёт целиком в куб.