server { listen 80; server_name _; root /usr/share/nginx/html; index index.html; gzip on; gzip_types text/plain text/css application/javascript application/json image/svg+xml; # Static assets with long cache location ~* \.(js|css|png|jpg|jpeg|gif|svg|webp|ico|woff2?)$ { expires 30d; add_header Cache-Control "public, immutable"; try_files $uri =404; } # SPA fallback: serve index.html for any unknown route location / { try_files $uri $uri/ /index.html; } }