Files
crossword/nginx/default.conf
T
plparkandClaude Opus 5 9cb8915173 Fix clue leak, stop the 404 fallback, bust the proxy asset cache
세 가지를 함께 고쳤다.

러시아 편에서 고리키와 어머니의 단서가 서로의 정답을 그대로 담고 있어 두 칸이
한꺼번에 풀렸다. 양쪽 단서에서 상대 이름을 뺐다.

nginx 의 try_files 폴백을 =404 로 바꿨다. 페이지가 여럿이 된 뒤로는 없는 경로도
200 으로 셸을 내려주어, 배포가 안 됐는데도 정상으로 보이는 일이 있었다.

프록시(NPM)가 js/css 에 제 캐시 헤더를 덧붙여 원본의 no-cache 를 덮어쓴다.
이미지 빌드 때 자산 내용의 sha256 앞 열 자리를 뽑아 각 페이지의 링크를
assets/crossword.js?v=<해시> 로 바꾸는 단계를 Dockerfile 에 넣었다. 저장소의
HTML 은 해시 없는 상태로 두고, 자산이 바뀌면 URL 이 저절로 바뀐다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-08 17:56:43 +09:00

31 lines
906 B
Plaintext

server {
listen 8080;
server_name _;
root /usr/share/nginx/html;
index index.html;
charset utf-8;
charset_types text/css application/javascript application/json;
# 프록시(NPM) 뒤에 있으므로 실제 클라이언트 IP 로그
real_ip_header X-Forwarded-For;
gzip on;
gzip_min_length 1024;
gzip_types text/plain text/css application/javascript application/json image/svg+xml;
# 여러 페이지짜리 정적 사이트. 없는 경로는 index.html 로 되돌리지 말고 404 를 준다.
# (되돌리면 /없는페이지.html 이 200 으로 셸을 내려주어 배포 사고를 못 알아챈다)
location / {
try_files $uri $uri/ =404;
add_header Cache-Control "no-cache, must-revalidate";
}
location = /healthz {
access_log off;
default_type text/plain;
return 200 "ok\n";
}
}