fix(cinny-nginx): own rate budget for content-hashed app files #40

Merged
jared merged 2 commits from fix/asset-rate-limit into main 2026-10-24 17:39:18 -04:00
Showing only changes of commit ad7d735739 - Show all commits
+14
View File
@@ -17,6 +17,14 @@ map $uri $lotus_shell_cache_control {
# decoration picker can fetch hundreds of thumbnails, which would otherwise use
# up chat_limit and 503 the app's own files.
limit_req_zone $binary_remote_addr zone=decorations_limit:10m rate=100r/s;
#
# [cinny #201 follow-up] Content-hashed app files (js/css/fonts/images/wasm)
# likewise: a cold page load fires ~75 requests within a second, and the
# service worker precaches all ~126 build files at once (every deploy renames
# them), both past chat_limit's burst of 60, so chunks 503ed and pages
# rendered blank / the precache install failed. Immutable files, cheap to
# serve; pages and the webhook keep chat_limit.
limit_req_zone $binary_remote_addr zone=assets_limit:10m rate=100r/s;
server {
listen 80;
@@ -85,6 +93,8 @@ server {
}
location ~* \.(?:js|css|woff2?|png|svg|ico|webp|wasm)$ {
include snippets/cinny-security-headers-framed.conf;
# Own budget (replaces the server-level chat_limit; see assets_limit).
limit_req zone=assets_limit burst=400 nodelay;
expires 1y;
add_header Cache-Control "public, immutable" always;
}
@@ -93,6 +103,8 @@ server {
# Cache content-addressed static assets aggressively
location ~* \.(?:js|css|woff2?|png|svg|ico|webp)$ {
include snippets/cinny-security-headers.conf;
# Own budget (replaces the server-level chat_limit; see assets_limit).
limit_req zone=assets_limit burst=400 nodelay;
expires 1y;
add_header Cache-Control "public, immutable" always;
}
@@ -189,6 +201,8 @@ server {
}
location ~* \.(?:js|css|woff2?|png|svg|ico|webp|wasm)$ {
include snippets/cinny-security-headers-call.conf;
# Own budget (replaces the server-level chat_limit; see assets_limit).
limit_req zone=assets_limit burst=400 nodelay;
expires 1y;
add_header Cache-Control "public, immutable" always;
}