js_import njs/main.js; map $http_upgrade $connection_upgrade { default upgrade; '' close; } upstream frontend { server frontend:5173; } upstream backend { server backend:3000; } server { listen 80; set $proxy_target ""; location /api { proxy_pass http://backend; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } # DNS resolver for Docker's internal DNS resolver 127.0.0.11 valid=30s; # Game WebSocket routing location ~ /api/room/([^/]+)/socket { set $room_id $1; proxy_pass http://room_$room_id:4500; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 7m; proxy_send_timeout 7m; proxy_read_timeout 7m; proxy_buffering off; } location / { proxy_pass http://frontend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }