server { listen 80; server_name localhost; client_max_body_size 50M; # Service worker and app shell must revalidate so PWA updates are detected location ~* ^/(sw\.js|workbox-.*\.js|manifest\.webmanifest|version\.json)$ { root /usr/share/nginx/html; add_header Cache-Control "no-cache, no-store, must-revalidate"; } location = /index.html { root /usr/share/nginx/html; add_header Cache-Control "no-cache, must-revalidate"; } location / { root /usr/share/nginx/html; index index.html index.htm; try_files $uri $uri/ /index.html; } location /api/ { proxy_pass http://backend:5000/api/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }