From 21830d507debb98a10ea476dfee97a071cce11d8 Mon Sep 17 00:00:00 2001 From: Simon Date: Mon, 3 Aug 2026 20:02:52 +0800 Subject: [PATCH] =?UTF-8?q?fix(nginx):=20=E7=A7=BB=E9=99=A4=20/itportal/?= =?UTF-8?q?=20=E9=9D=99=E6=80=81=E5=89=8D=E7=AB=AF=E5=9D=97=EF=BC=88portal?= =?UTF-8?q?=20=E6=BA=90=E7=A0=81=E5=B7=B2=E4=B8=8B=E7=BA=BF=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit P0 修复 — /itportal/ HTTP 500(连续 3+ 天阻塞) 根因分析: - portal 源码 frontend-portal/ 在 commit bea288e4 (2026-07-11) 被误删 - portal dist 不存在(前端目录已不存在) - backend/app/api/portal.py 也已删除 - /api/portal/* API 不再在 router.py 注册 - 但 nginx 配置 + docker-compose 仍引用 portal dist → try_files 指向空目录 → 500 - nginx-split.conf 还有根路径重定向 / → /itportal/ → 用户访问根域名直接 500 修复(最小集、最安全): 1. nginx 6 个配置(nginx/nginx.conf + 5 个 deploy-server 历史变体): - 删除 location /itportal/ { alias ... } 静态块 - 保留 location /itportal/meetingroom/ API 块(最长前缀仍命中) - nginx-split.conf / nginx-full.conf / nginx-green-upstream.conf 根重定向 /itportal/ → /itdesk/ 2. docker-compose 4 个配置(+split): - 删除 ./frontend-portal/dist 或 ./html/itportal 卷挂载 3. deploy-server/deploy.sh: - 删除 portal dist 备份/解压步骤 - 部署完成提示去掉 /itportal/ 入口 预期效果: - /itportal/ → nginx 404(不再 500) - /itportal/meetingroom/ → API 仍工作(终端+H5 共用会议室预定) - /itdesk/ /itagent/ /itadmin/ /itterminal/ 不受影响 - 根域名访问 → 重定向到 /itdesk/(H5 入口) 文件改动: - nginx/nginx.conf(双 server block) - deploy-server/nginx.conf(双 server block) - deploy-server/nginx-full.conf + green-upstream.conf + nginx.conf + nginx-split.conf - docker-compose.yml + 3 个 deploy-server 变体 - deploy-server/deploy.sh ⚠️ 待部署(无 jumpserver/VPN):本地已就绪,需在 jumpserver-V2 流程下 scp 上述 11 个文件到 /opt/wecom-it-desk/ 覆盖 + docker compose restart nginx 验证 验证命令:curl -I https://itsupport.servyou.com.cn/itportal/ 期望返回 404(或 301/302) curl -I https://itsupport.servyou.com.cn/itportal/meetingroom/... 期望 200/401/403 curl -I https://itsupport.servyou.com.cn/ 期望 302 → /itdesk/ Refs: 滴答清单任务 6a6bfc29e4b06440c36701e1 (P0 逾期 1 天) --- deploy-server/deploy.sh | 9 +++----- deploy-server/docker-compose-green.yml | 1 - deploy-server/docker-compose.split.yml | 1 - deploy-server/docker-compose.yml | 1 - deploy-server/nginx-full.conf | 8 ++----- deploy-server/nginx-green-upstream.conf | 11 +++------- deploy-server/nginx.conf | 28 +++++++++---------------- deploy-server/nginx/nginx-split.conf | 10 ++------- deploy-server/nginx/nginx.conf | 6 +----- docker-compose.yml | 1 - nginx/nginx.conf | 27 ++++++++++++------------ 11 files changed, 35 insertions(+), 68 deletions(-) diff --git a/deploy-server/deploy.sh b/deploy-server/deploy.sh index 055cf9b..a7e4d20 100644 --- a/deploy-server/deploy.sh +++ b/deploy-server/deploy.sh @@ -24,7 +24,7 @@ mkdir -p "$BACKUP_DIR" cp -r "$DEPLOY_DIR/frontend-h5/dist" "$BACKUP_DIR/frontend-h5-dist" 2>/dev/null || true cp -r "$DEPLOY_DIR/frontend-agent/dist" "$BACKUP_DIR/frontend-agent-dist" 2>/dev/null || true cp -r "$DEPLOY_DIR/frontend-admin/dist" "$BACKUP_DIR/frontend-admin-dist" 2>/dev/null || true -cp -r "$DEPLOY_DIR/frontend-portal/dist" "$BACKUP_DIR/frontend-portal-dist" 2>/dev/null || true +# ⚠️ 2026-08-03: frontend-portal 已下线(源码 + dist 不存在),跳过备份 cp -r "$DEPLOY_DIR/backend" "$BACKUP_DIR/backend" 2>/dev/null || true echo "备份完成: $BACKUP_DIR" @@ -50,10 +50,7 @@ rm -rf frontend-admin/dist tar -xf /tmp/deploy-admin.tar -C frontend-admin/ echo "管理后台已更新" -# Portal 统一入口 -rm -rf frontend-portal/dist -tar -xf /tmp/deploy-portal.tar -C frontend-portal/ 2>/dev/null || echo "Portal 包未找到,跳过" -echo "Portal 已更新" +# ⚠️ 2026-08-03: Portal 已下线(commit bea288e4 删除源码),跳过此步骤 # -------------------------------------------------------------------------- # 3. 更新后端代码 @@ -142,11 +139,11 @@ echo "部署完成!" echo "==========================================" echo "" echo "访问地址:" -echo " 统一入口: https://itsupport.servyou.com.cn/itportal/" echo " H5 用户端: https://itsupport.servyou.com.cn/itdesk/" echo " 坐席工作台: https://itsupport.servyou.com.cn/itagent/" echo " 管理后台: https://itsupport.servyou.com.cn/itadmin/" echo "" +echo "⚠️ 注: /itportal/ 入口已下线(2026-08-03 清理),根域名会自动重定向到 /itdesk/" echo "如需回滚,执行:" echo " cp -r $BACKUP_DIR/frontend-h5-dist $DEPLOY_DIR/frontend-h5/dist" echo " cp -r $BACKUP_DIR/frontend-agent-dist $DEPLOY_DIR/frontend-agent/dist" diff --git a/deploy-server/docker-compose-green.yml b/deploy-server/docker-compose-green.yml index 049566f..2a6b7e5 100644 --- a/deploy-server/docker-compose-green.yml +++ b/deploy-server/docker-compose-green.yml @@ -74,7 +74,6 @@ services: - ./html/itdesk:/usr/share/nginx/html/itdesk:ro - ./html/itagent:/usr/share/nginx/html/itagent:ro - ./html/itadmin:/usr/share/nginx/html/itadmin:ro - - ./html/itportal:/usr/share/nginx/html/itportal:ro environment: - NGINX_HOST=localhost - NGINX_PORT=80 diff --git a/deploy-server/docker-compose.split.yml b/deploy-server/docker-compose.split.yml index 21ce74a..770c812 100644 --- a/deploy-server/docker-compose.split.yml +++ b/deploy-server/docker-compose.split.yml @@ -388,7 +388,6 @@ services: - ./frontend-h5/dist:/usr/share/nginx/html/itdesk:ro - ./frontend-agent/dist:/usr/share/nginx/html/itagent:ro - ./frontend-admin/dist:/usr/share/nginx/html/itadmin:ro - - ./frontend-portal/dist:/usr/share/nginx/html/itportal:ro depends_on: core-svc: condition: service_healthy diff --git a/deploy-server/docker-compose.yml b/deploy-server/docker-compose.yml index 7de450c..7f51cef 100644 --- a/deploy-server/docker-compose.yml +++ b/deploy-server/docker-compose.yml @@ -143,7 +143,6 @@ services: - ./html/itdesk:/usr/share/nginx/html/itdesk:ro - ./html/itagent:/usr/share/nginx/html/itagent:ro - ./html/itadmin:/usr/share/nginx/html/itadmin - - ./html/itportal:/usr/share/nginx/html/itportal:ro - ./html/h5:/usr/share/nginx/html/h5:ro depends_on: - backend diff --git a/deploy-server/nginx-full.conf b/deploy-server/nginx-full.conf index 5290214..d0f317d 100644 --- a/deploy-server/nginx-full.conf +++ b/deploy-server/nginx-full.conf @@ -145,11 +145,7 @@ http { index index.html; try_files $uri /itadmin/index.html; } - location /itportal/ { - alias /usr/share/nginx/html/itportal/; - index index.html; - try_files $uri /itportal/index.html; - } + # ⚠️ /itportal/ 静态前端块已移除 (2026-08-03 fix) - portal 源码 + dist 已不存在 location /api/ { location ~ ^/api/admin/ { allow 10.0.0.0/8; @@ -210,7 +206,7 @@ http { proxy_read_timeout 300s; } location = / { - return 302 /itportal/; + return 302 /itdesk/; } } } diff --git a/deploy-server/nginx-green-upstream.conf b/deploy-server/nginx-green-upstream.conf index c7e58cc..c73421e 100644 --- a/deploy-server/nginx-green-upstream.conf +++ b/deploy-server/nginx-green-upstream.conf @@ -67,12 +67,7 @@ http { alias /usr/share/nginx/html/itadmin/; try_files $uri /itadmin/index.html; } - - # itportal 入口 - location /itportal/ { - alias /usr/share/nginx/html/itportal/; - try_files $uri /itportal/index.html; - } + # ⚠️ /itportal/ 静态前端块已移除 (2026-08-03 fix) - portal 源码 + dist 已不存在 # API — Green 后端 location /api/ { @@ -120,9 +115,9 @@ http { proxy_read_timeout 86400s; } - # 根路径重定向 + # 根路径重定向(2026-08-03 fix: /itportal/ → /itdesk/,因 portal 已下线) location = / { - return 302 /itportal/; + return 302 /itdesk/; } } } diff --git a/deploy-server/nginx.conf b/deploy-server/nginx.conf index c845723..80b993c 100644 --- a/deploy-server/nginx.conf +++ b/deploy-server/nginx.conf @@ -131,15 +131,11 @@ http { proxy_send_timeout 300s; proxy_read_timeout 300s; } - - # ------------------------------------------------------------------ - # 统一入口 Portal — /itportal/ - # ------------------------------------------------------------------ - location /itportal/ { - alias /usr/share/nginx/html/itportal/; - index index.html; - try_files $uri /itportal/index.html; - } + # ⚠️ /itportal/ 静态前端块已移除 (2026-08-03 fix) + # 历史: portal 源码 frontend-portal/ 在 commit bea288e4 (2026-07-11) 已删除, + # dist 目录不存在, alias 指向空目录导致 try_files 全部 500。 + # /itportal/ 现在返回 nginx 404(最长前缀 /itportal/meetingroom/ 仍工作)。 + # 关联 issue: 滴答清单任务 6a6bfc29e4b06440c36701e1 (P0) # ------------------------------------------------------------------ # 后端 API — /api/ @@ -279,15 +275,11 @@ http { proxy_send_timeout 300s; proxy_read_timeout 300s; } - - # ------------------------------------------------------------------ - # 统一入口 Portal — /itportal/ - # ------------------------------------------------------------------ - location /itportal/ { - alias /usr/share/nginx/html/itportal/; - index index.html; - try_files $uri /itportal/index.html; - } + # ⚠️ /itportal/ 静态前端块已移除 (2026-08-03 fix) + # 历史: portal 源码 frontend-portal/ 在 commit bea288e4 (2026-07-11) 已删除, + # dist 目录不存在, alias 指向空目录导致 try_files 全部 500。 + # /itportal/ 现在返回 nginx 404(最长前缀 /itportal/meetingroom/ 仍工作)。 + # 关联 issue: 滴答清单任务 6a6bfc29e4b06440c36701e1 (P0) # ------------------------------------------------------------------ # 后端 API — /api/ diff --git a/deploy-server/nginx/nginx-split.conf b/deploy-server/nginx/nginx-split.conf index f2a1326..e2fc4bf 100644 --- a/deploy-server/nginx/nginx-split.conf +++ b/deploy-server/nginx/nginx-split.conf @@ -244,17 +244,11 @@ http { try_files $uri $uri/ /itadmin/index.html; add_header Cache-Control "public, max-age=31536000, immutable"; } - - # Portal 入口 - location /itportal/ { - alias /usr/share/nginx/html/itportal/; - try_files $uri $uri/ /itportal/index.html; - add_header Cache-Control "public, max-age=31536000, immutable"; - } + # ⚠️ /itportal/ 静态前端块已移除 (2026-08-03 fix) - portal 源码 + dist 已不存在 # 根路径重定向到 Portal location = / { - return 302 /itportal/; + return 302 /itdesk/; } # 默认处理 diff --git a/deploy-server/nginx/nginx.conf b/deploy-server/nginx/nginx.conf index f84af7a..e546975 100644 --- a/deploy-server/nginx/nginx.conf +++ b/deploy-server/nginx/nginx.conf @@ -145,11 +145,7 @@ http { index index.html; try_files $uri /itadmin/index.html; } - location /itportal/ { - alias /usr/share/nginx/html/itportal/; - index index.html; - try_files $uri /itportal/index.html; - } + # ⚠️ /itportal/ 静态前端块已移除 (2026-08-03 fix) - portal 源码 + dist 已不存在 location /api/ { location ~ ^/api/admin/ { # 修复:剥离 /api/ 前缀,使后端收到 /admin/... 而非 /api/admin/... diff --git a/docker-compose.yml b/docker-compose.yml index 6231c40..3c3c585 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -210,7 +210,6 @@ services: - ./src/frontend-h5/dist:/usr/share/nginx/html/h5:ro - ./src/frontend-agent/dist:/usr/share/nginx/html/itagent:ro - ./src/frontend-admin/dist:/usr/share/nginx/html/itadmin:ro - - ./frontend-portal/dist:/usr/share/nginx/html/itportal:ro - ./src/frontend-terminal/dist:/usr/share/nginx/html/itterminal:ro depends_on: - backend diff --git a/nginx/nginx.conf b/nginx/nginx.conf index c845723..033f631 100644 --- a/nginx/nginx.conf +++ b/nginx/nginx.conf @@ -10,12 +10,15 @@ # /itdesk/ → H5 员工端静态文件 # /itagent/ → 坐席工作台静态文件 # /itadmin/ → 管理后台静态文件 -# /itportal/ → 统一入口(角色选择)静态文件 # /itterminal/ → 小鱼终端大屏静态文件 # /itportal/meetingroom/ → 会议室API(终端+H5共用,代理到后端) # /api/ → 后端 FastAPI(容器名 backend:8000) # /ws/ → WebSocket(容器名 backend:8000,支持升级) # / → IT 数据查询平台(远程主机) +# +# 2026-08-03 fix: +# - /itportal/ 静态前端块已移除(portal 源码在 commit bea288e4 已删除,dist 不存在导致 500) +# - 仅保留 /itportal/meetingroom/ API 块 # ============================================================================= events { @@ -133,13 +136,12 @@ http { } # ------------------------------------------------------------------ - # 统一入口 Portal — /itportal/ + # ⚠️ /itportal/ 静态前端块已移除 (2026-08-03 fix) + # 历史: portal 源码 frontend-portal/ 在 commit bea288e4 (2026-07-11) 已删除, + # dist 目录不存在, alias 指向空目录导致 try_files 全部 500。 + # 现在没有 portal 前端, /itportal/ 直接返回 nginx 404(最长前缀 /itportal/meetingroom/ 仍工作)。 + # 关联 issue: 滴答清单任务 6a6bfc29e4b06440c36701e1 (P0) # ------------------------------------------------------------------ - location /itportal/ { - alias /usr/share/nginx/html/itportal/; - index index.html; - try_files $uri /itportal/index.html; - } # ------------------------------------------------------------------ # 后端 API — /api/ @@ -281,13 +283,12 @@ http { } # ------------------------------------------------------------------ - # 统一入口 Portal — /itportal/ + # ⚠️ /itportal/ 静态前端块已移除 (2026-08-03 fix) + # 历史: portal 源码 frontend-portal/ 在 commit bea288e4 (2026-07-11) 已删除, + # dist 目录不存在, alias 指向空目录导致 try_files 全部 500。 + # 现在没有 portal 前端, /itportal/ 直接返回 nginx 404(最长前缀 /itportal/meetingroom/ 仍工作)。 + # 关联 issue: 滴答清单任务 6a6bfc29e4b06440c36701e1 (P0) # ------------------------------------------------------------------ - location /itportal/ { - alias /usr/share/nginx/html/itportal/; - index index.html; - try_files $uri /itportal/index.html; - } # ------------------------------------------------------------------ # 后端 API — /api/