server { listen 80; server_name _; root /usr/share/nginx/html; index index.html; gzip on; gzip_types text/css application/javascript application/json image/svg+xml; # Fingerprinted build output can be cached forever. location /static/ { try_files $uri =404; add_header Cache-Control "public, max-age=31536000, immutable"; } # Exchangeable graphics (public/assets) are not fingerprinted; revalidate them # so replaced files show up immediately. location /assets/ { try_files $uri =404; add_header Cache-Control "no-cache"; } location = /config.js { add_header Cache-Control "no-store"; } location = /index.html { add_header Cache-Control "no-cache"; } # Single page app fallback. location / { try_files $uri $uri/ /index.html; } }