fix: host nginx proxies /api to gateway to avoid web DNS 502

Public HTTPS API/AI/gateway go to 127.0.0.1:8180; web only serves static. Restores static gateway upstream inside the web container.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
whm
2026-08-07 01:23:34 +08:00
parent cddf95594e
commit d489169bec
5 changed files with 55 additions and 24 deletions

View File

@@ -8,7 +8,8 @@ AI 建站默认用 **Docker web 容器**`127.0.0.1:5173`)对外提供页面
| 用途 | 仓库路径 | 生效方式 |
|------|----------|----------|
| 容器 Web 反代 | `web/nginx.conf.template` | `./reload-config.sh web` |
| 容器 Web 反代 | `web/nginx.conf.template`(本机 :5173 | `./reload-config.sh web` |
| 公网 API | 宿主机 Nginx `/api/``:8180` | `./reload-config.sh` |
| Platform | `platform/etc/platform.docker.yaml` | `./reload-config.sh platform` |
| Gateway | `gateway/etc/gateway.docker.yaml` | `./reload-config.sh gateway` |
| LLM / 视觉 | `.env` | `./reload-config.sh ai` |

View File

@@ -1,15 +1,12 @@
# 宿主机 Nginx443 终止 TLS,反代到本机 Docker web127.0.0.1:5173
# web 容器内 nginx 已把 /api/、/ai/、/gateway/ 转发到 gateway
# 宿主机 Nginx443 终止 TLS
# - /api/、/ai/、/gateway/ → 本机 gateway127.0.0.1:8180避免经 web 容器 DNS 偶发 502
# - 静态页与其它路径 → web127.0.0.1:5173
#
# 占位符(由 scripts/lib-aijz-deploy.sh 替换):
# __DOMAIN__ 站点域名
# __WEB_PORT__ 宿主机 web 映射端口(默认 5173
# __VERIFY_ROOT__ 域名验证文件目录(项目 verify-root/
#
# 手动部署:
# 1. 证书放到 /etc/ssl/aijianzhan/__DOMAIN__/{fullchain.pem,privkey.pem}
# 2. sudo cp 生成后的 conf 到 /etc/nginx/conf.d/
# 3. sudo nginx -t && sudo systemctl reload nginx
# __DOMAIN__ 站点域名
# __WEB_PORT__ 宿主机 web 映射端口(默认 5173
# __GATEWAY_PORT__ 宿主机 gateway 映射端口(默认 8180
# __VERIFY_ROOT__ 域名验证文件目录(项目 verify-root/
server {
listen 80;
@@ -37,6 +34,42 @@ server {
add_header Cache-Control "no-store";
}
location /api/ {
proxy_pass http://127.0.0.1:__GATEWAY_PORT__;
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 Authorization $http_authorization;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
client_max_body_size 128m;
}
location /ai/ {
proxy_pass http://127.0.0.1:__GATEWAY_PORT__;
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 Authorization $http_authorization;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
client_max_body_size 128m;
}
location /gateway/ {
proxy_pass http://127.0.0.1:__GATEWAY_PORT__;
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 60s;
}
location / {
proxy_pass http://127.0.0.1:__WEB_PORT__;
proxy_http_version 1.1;