# forum-nginx /etc/nginx/conf.d/default.conf — canonical copy (2026-07-20). # The live container has NO bind mount for this file; if the container is ever # recreated, restore with: # scp forum-nginx-default.conf humanjing@100.71.119.27:/tmp/default.conf # ssh humanjing@100.71.119.27 "docker cp /tmp/default.conf forum-nginx:/etc/nginx/conf.d/default.conf && docker exec forum-nginx nginx -s reload" server { listen 80; listen [::]:80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } # GUTS (/gutsy/) ships as UN-VERSIONED ES modules with no build step, so what an edge # cache holds here is CODE, not assets. The origin was sending no Cache-Control at all, # so Cloudflare applied its 4-hour default: a deploy landed on the box and players kept # running the previous build for up to four hours, silently. Revalidate every request — # the files are small, etag'd, and a 304 costs nothing. location /gutsy/ { root /usr/share/nginx/html; add_header Cache-Control "no-cache"; } # arcade express API (counter / guestbook / sando leaderboards). The app # runs in the arcade-landing container on the shared forum_default network. location /arcade-api/ { proxy_pass http://arcade-landing:3001/api/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }