server { | |
listen 7860; | |
server_name localhost; | |
root /usr/share/nginx/html; | |
index index.html; | |
# Enable gzip and pre-compressed file support | |
gzip on; | |
gzip_static on; | |
gzip_comp_level 6; | |
gzip_vary on; | |
gzip_proxied any; | |
gzip_types | |
text/plain | |
text/css | |
text/javascript | |
application/javascript | |
application/json | |
application/xml | |
application/font-woff | |
application/font-woff2 | |
application/octet-stream | |
image/svg+xml; | |
# Serve .gz files manually if needed | |
location ~* \.gz$ { | |
add_header Content-Encoding gzip; | |
add_header Vary Accept-Encoding; | |
types { | |
text/javascript js; | |
text/css css; | |
text/html html; | |
application/octet-stream glb; | |
} | |
} | |
# π₯ Cache-busting for fingerprinted assets | |
location ~* \.(js|css|woff2?|eot|ttf|otf|svg|glb|gltf|wasm|png|jpe?g|gif|ico|webp)$ { | |
add_header Cache-Control "public, max-age=31536000, immutable"; | |
try_files $uri =404; | |
} | |
# π« Prevent caching index.html (always load latest) | |
location = /index.html { | |
add_header Cache-Control "no-cache"; | |
try_files $uri =404; | |
} | |
# π§© Optional: glb file support | |
location ~* \.glb$ { | |
add_header Content-Type application/octet-stream; | |
try_files $uri =404; | |
} | |
# π― SPA fallback (Vue/React/etc.) | |
location / { | |
try_files $uri $uri/ /index.html; | |
} | |
} | |