Skip to content

问题

客户在一台电脑本地启动 PC 前端,例如 http://192.168.0.78:5800,后端网关部署在另一台电脑,例如 http://192.168.0.202:49090

客户已经把 .env.development 中的 VITE_BASE_URL 改成网关地址,但登录页仍然请求:

text
http://192.168.0.78:5800/admin-api/system/tenant/get-by-website?website=192.168.0.78

浏览器 Network 显示 502 Bad Gateway

答案

这是本地 Vite 开发代理没有转发到真实网关导致的。仅修改 .env.development 不一定生效,因为 apps/web-antd/vite.config.ts 里的 server.proxy['/admin-api'].target 可能仍写死为本机后端地址。

详细说明

本地开发时,浏览器请求显示为:

text
http://前端电脑IP:5800/admin-api/...

这是正常现象,说明请求先进入本机 Vite dev server。真正访问哪个后端,取决于 Vite 代理配置。

如果 vite.config.ts 中仍是类似配置:

ts
proxy: {
  '/admin-api': {
    changeOrigin: true,
    rewrite: (path: string) => path.replace(/^\/admin-api/, ''),
    target: 'http://localhost:48080/admin-api',
    ws: true,
  },
},

则客户即使把 .env.development 改成:

env
VITE_BASE_URL=http://192.168.0.202:49090
VITE_GLOB_API_URL=/admin-api

请求仍会被 Vite 转发到前端电脑自己的 localhost:48080,而不是远程网关 192.168.0.202:49090。如果前端电脑没有启动后端,或端口不通,就会由 Vite 返回 502 Bad Gateway

涉及代码 / 配置

修复方式一:直接把代理目标改成客户网关地址。

ts
proxy: {
  '/admin-api': {
    changeOrigin: true,
    rewrite: (path: string) => path.replace(/^\/admin-api/, ''),
    target: 'http://192.168.0.202:49090/admin-api',
    ws: true,
  },
},

修复方式二:让代理目标读取环境变量,避免客户以后只改一个地方时漏改。

ts
proxy: {
  '/admin-api': {
    changeOrigin: true,
    rewrite: (path: string) => path.replace(/^\/admin-api/, ''),
    target: `${process.env.VITE_BASE_URL}/admin-api`,
    ws: true,
  },
},

对应 .env.development

env
VITE_BASE_URL=http://192.168.0.202:49090
VITE_GLOB_API_URL=/admin-api

修改后必须重启前端开发服务,只刷新浏览器不会重新加载 Vite 配置。

powershell
pnpm dev:antd

验证方法

  1. 在前端电脑浏览器访问 http://192.168.0.202:49090/doc.html,确认远程网关可访问。
  2. 重启 pnpm dev:antd
  3. 打开登录页,Network 中仍可能看到请求 URL 是 http://192.168.0.78:5800/admin-api/...,这是正常的本地代理入口。
  4. 如果不再出现 502 Bad Gateway,说明 Vite 已能转发到远程网关。
  5. 如果接口返回 401 账号未登录,说明已经打到后端鉴权逻辑,此时应继续检查接口匿名放行或登录态,而不是代理连通性。

修订记录

日期修改
2026-07-08初稿
联系我们

获取报价、演示和二开方案

微信咨询二维码

微信咨询

17156169080

添加时备注「RuoYi Office」

在线体验商业版