server { listen 80; server_name _; root /usr/share/nginx/html; index index.html; # Use Docker's internal DNS resolver with short cache resolver 127.0.0.11 valid=10s ipv6=off; # SPA routing location / { try_files $uri $uri/ /index.html; } # API proxy to gateway location /api/v1/ { set $upstream_gateway gateway; proxy_pass http://$upstream_gateway:8088; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } # WebSocket proxy (client connects to /api/socket, gateway listens on /api/v1/socket) location /api/socket { set $upstream_gateway gateway; proxy_pass http://$upstream_gateway:8088/api/v1/socket; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_read_timeout 86400; } # WebSocket proxy (direct v1 path) location /api/v1/socket { set $upstream_gateway gateway; proxy_pass http://$upstream_gateway:8088; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_read_timeout 86400; } }