All checks were successful
Client CI/CD / deploy (push) Successful in 25s
- 로그인/회원가입 입력 길이 제한 (username 50자, password 100자) - 공지사항 관리 입력 길이 제한 (제목 200자, 내용 10000자) - AnnouncementBoard aria-expanded 접근성 속성 추가 - DownloadSection useEffect 중복 API 호출 제거 - nginx 보안 헤더 (X-Content-Type-Options, X-Frame-Options) - nginx /assets/ 장기 캐싱 (immutable, 1년) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
29 lines
790 B
Nginx Configuration File
29 lines
790 B
Nginx Configuration File
server {
|
|
listen 80;
|
|
root /usr/share/nginx/html;
|
|
index index.html;
|
|
|
|
# 보안 헤더
|
|
add_header X-Content-Type-Options "nosniff" always;
|
|
add_header X-Frame-Options "DENY" always;
|
|
|
|
# index.html은 캐싱 금지 (배포 후 즉시 반영)
|
|
location = /index.html {
|
|
try_files $uri =404;
|
|
add_header Cache-Control "no-store, no-cache, must-revalidate";
|
|
}
|
|
|
|
# Vite 해시 에셋 장기 캐싱
|
|
location /assets/ {
|
|
add_header Cache-Control "public, max-age=31536000, immutable";
|
|
}
|
|
|
|
# SPA fallback (react-router 사용 시 필요)
|
|
location / {
|
|
try_files $uri $uri/ /index.html;
|
|
}
|
|
|
|
gzip on;
|
|
gzip_types text/plain text/css application/javascript application/json image/svg+xml;
|
|
gzip_min_length 1024;
|
|
} |