server { listen 2229; server_name _; root /usr/share/nginx/html; index index.html; # 静态资源压缩 # 注意:显式声明 gzip_types 会覆盖内置默认列表,但 text/html 始终会被压缩,无需重复声明 #(重复写 text/html 只会触发 nginx 的 duplicate MIME type 警告) gzip on; gzip_vary on; gzip_min_length 1024; gzip_types text/plain text/css text/xml text/javascript application/javascript application/json application/xml image/svg+xml; # 带内容哈希的构建产物可以长期缓存 location /_nuxt/ { add_header Cache-Control "public, max-age=31536000, immutable"; try_files $uri =404; } # Service Worker 每次都要回源校验,否则老用户会被锁在旧版本 location = /sw.js { add_header Cache-Control "no-cache, no-store, must-revalidate"; try_files $uri =404; } # 无扩展名的关联域名文件需要正确的 Content-Type location /.well-known/ { default_type application/json; add_header Cache-Control "public, max-age=3600"; try_files $uri =404; } # CSR 应用:未预渲染的路由交给前端路由处理 location / { try_files $uri $uri/ /index.html; } error_page 404 /404.html; }