# Bascule l'en-tête Connection selon qu'il s'agit d'un WebSocket ou non — # nécessaire pour le terminal des conteneurs, qui passe par /api/…. map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { listen 80; root /usr/share/nginx/html; index index.html; # Proxy vers le backend FastAPI location /api/ { proxy_pass http://backend:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; # Relais WebSocket (terminal interactif) proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; # Un terminal ouvert peut rester inactif longtemps sans être coupé proxy_read_timeout 3600s; proxy_send_timeout 3600s; proxy_buffering off; } # SPA fallback location / { try_files $uri $uri/ /index.html; } }