server {
    listen       80;
    listen  [::]:80;
    server_name  _;

    root   /usr/share/nginx/html;
    index  index.html;

    # Compressão para texto/JS/CSS.
    gzip              on;
    gzip_vary         on;
    gzip_min_length   1024;
    gzip_proxied      any;
    gzip_types        text/plain text/css application/javascript application/json
                      image/svg+xml application/xml application/xml+rss;

    # Assets com hash (Vite -> /assets/*.[hash].*): cache longo e imutável.
    location /assets/ {
        expires    1y;
        add_header Cache-Control "public, immutable";
        try_files  $uri =404;
    }

    # SPA fallback: qualquer rota/refresh devolve index.html.
    location / {
        try_files $uri $uri/ /index.html;
    }

    # index.html nunca em cache (garante deploy fresco).
    location = /index.html {
        add_header Cache-Control "no-cache, no-store, must-revalidate";
    }

    # Páginas de erro também caem no SPA.
    error_page 404 /index.html;
}
