2026-05-16 16:56:18 +08:00
|
|
|
server {
|
|
|
|
|
listen 3000;
|
|
|
|
|
server_name _;
|
|
|
|
|
|
|
|
|
|
client_max_body_size 200m;
|
|
|
|
|
|
2026-06-27 18:17:00 +08:00
|
|
|
# Docker internal DNS resolver — forces nginx to re-resolve service names
|
|
|
|
|
# at runtime instead of caching IPs at startup (fixes 502 after container restart)
|
|
|
|
|
resolver 127.0.0.11 valid=10s;
|
|
|
|
|
|
2026-05-16 16:56:18 +08:00
|
|
|
location /api/v1/ws {
|
2026-06-27 18:17:00 +08:00
|
|
|
set $backend_api "http://api:8000";
|
|
|
|
|
proxy_pass $backend_api;
|
2026-05-16 16:56:18 +08:00
|
|
|
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;
|
|
|
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
|
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
|
|
|
proxy_set_header Connection "upgrade";
|
|
|
|
|
proxy_read_timeout 3600s;
|
|
|
|
|
proxy_send_timeout 3600s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
location /api/ {
|
2026-06-27 18:17:00 +08:00
|
|
|
set $backend_api "http://api:8000";
|
|
|
|
|
proxy_pass $backend_api;
|
2026-05-16 16:56:18 +08:00
|
|
|
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;
|
|
|
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
|
|
|
proxy_read_timeout 3600s;
|
|
|
|
|
proxy_send_timeout 3600s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
location / {
|
2026-06-27 18:17:00 +08:00
|
|
|
set $backend_web "http://web:3000";
|
|
|
|
|
proxy_pass $backend_web;
|
2026-05-16 16:56:18 +08:00
|
|
|
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;
|
|
|
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
|
|
|
proxy_read_timeout 3600s;
|
|
|
|
|
proxy_send_timeout 3600s;
|
|
|
|
|
}
|
|
|
|
|
}
|