server { listen 80; server_name _; root /usr/share/nginx/html; index index.html; # SPA : toute route inconnue retombe sur index.html (react-router). location / { try_files $uri $uri/ /index.html; } # index.html référence les assets fingerprintés : s'il est mis en cache, le # navigateur continue de charger l'ancien build (assets marqués immutable) # pendant une durée indéterminée. no-cache = il le garde mais revalide, donc # un 304 tant que rien ne change, et le nouveau build dès le déploiement. location = /index.html { add_header Cache-Control "no-cache, must-revalidate"; } # Cache long pour les assets fingerprintés par Vite. location /assets/ { expires 1y; add_header Cache-Control "public, immutable"; } }