Files
EpicNext-Cms/deployment/proxy/nginx-mime.types
T
openhands 7697728d07
Gitea Actions Runner Test / test-job (push) Successful in 0s
CI / check (push) Successful in 28s
CI / tests-unit (push) Successful in 1m39s
CI / tests-integration (push) Successful in 1m41s
CI / tests-ui (push) Successful in 2m27s
CI / preflight (push) Skipped
CI / deploy (push) Successful in 3m35s
feat(cache): single-owner caching across nginx, edge and content edits
Rebuild production nginx from the repo (deployment/proxy/*) with a single
Cache-Control owner per route: the app stays the source, nginx only manages
headers, and Cloudflare stores the public API allowlist at the edge.

- deployment/proxy: nginx.conf, mime.types, nginx-cms.conf and the
  blue/green upstream snippet; config backed by scripts/nginx-sync.sh
  (idempotent install + reload, --check/--force).
- nginx serves Cache-Tag headers on the public allowlist (cms-public),
  gamedata, client and camera responses so the edge and purge stay in sync.
- src/lib/edge-cache.ts + tests: coalesced, fire-and-forget edge purges that
  no-op unless Cloudflare is configured; scripts/cf-purge.sh and
  cf-setup-cache.sh create and purge the cache rule.
- src/lib/cloudflare-api.ts: purgeCacheByTags/purgeCacheByUrls.
- Purge hooks after catalog exports (public + gamedata) and on shop, team,
  guild, photo and rare-values edits; ci-deploy purges after each release.
- src/proxy.ts excludes the imaging/images docs from the middleware matcher.
2026-09-28 21:55:18 +02:00

34 lines
793 B
Plaintext

types {
text/html html htm shtml;
text/css css;
text/xml xml;
text/plain txt;
application/javascript js mjs;
application/json json map;
application/ld+json jsonld;
application/rss+xml rss;
application/wasm wasm;
application/xml xsd xsl;
font/ttf ttf;
font/otf otf;
font/woff woff;
font/woff2 woff2;
image/svg+xml svg svgz;
image/bmp bmp;
image/gif gif;
image/jpeg jpeg jpg;
image/png png;
image/webp webp;
image/avif avif;
image/x-icon ico cur;
video/mp4 mp4 m4v;
video/webm webm;
audio/mpeg mp3;
audio/ogg ogg;
audio/wav wav;
application/octet-stream dat bin swf;
application/zip zip;
application/gzip gz;
application/pdf pdf;
application/vnd.apple.mpegurl m3u8;
}