2019 年使用 Zuul 和 Eureka 搭建本地集群时,我遇到过一个现象:经网关访问服务正常,直接在 Chrome 打开 http://localhost:6666/ 却失败。

页面上的通用提示像是服务不可达,真正有区分度的是错误码:

ERR_UNSAFE_PORT

网关成功,不代表浏览器直连也会成功

这两条请求路径不同:经网关时,浏览器访问的是网关端口,再由网关连接后端;直连时,浏览器自己决定是否允许访问后端端口。

当时换用另一浏览器可以打开,问题由此指向浏览器的端口限制,而不是业务接口本身。Chromium 的限制端口列表也包含 6666;具体策略以所用版本为准。Chromium 端口检查源码

排查顺序

  1. 记录完整 URL 和错误码,区分端口限制、连接拒绝、超时等错误。
  2. 查看服务监听端口与启动日志,确认没有把网关地址和服务地址混为一谈。
  3. 用服务端日志或网络记录判断请求是否真正到达后端。
  4. 为开发服务选择不受该限制且未被占用的端口,例如确认可用后改为 8080,并同步注册中心、网关、前端配置和回调地址。

如果换端口后错误变成连接拒绝,还需要继续检查监听地址和进程状态,不应认为所有问题都已解决。

这次经验的重点是先识别失败发生在哪一层。无需关闭浏览器安全策略,也不应把某个旧浏览器能够访问当作长期解决方案。