2019 年使用 Zuul 和 Eureka 搭建本地集群时,我遇到过一个现象:经网关访问服务正常,直接在 Chrome 打开 http://localhost:6666/ 却失败。
页面上的通用提示像是服务不可达,真正有区分度的是错误码:
ERR_UNSAFE_PORT
网关成功,不代表浏览器直连也会成功
这两条请求路径不同:经网关时,浏览器访问的是网关端口,再由网关连接后端;直连时,浏览器自己决定是否允许访问后端端口。
当时换用另一浏览器可以打开,问题由此指向浏览器的端口限制,而不是业务接口本身。Chromium 的限制端口列表也包含 6666;具体策略以所用版本为准。Chromium 端口检查源码
排查顺序
- 记录完整 URL 和错误码,区分端口限制、连接拒绝、超时等错误。
- 查看服务监听端口与启动日志,确认没有把网关地址和服务地址混为一谈。
- 用服务端日志或网络记录判断请求是否真正到达后端。
- 为开发服务选择不受该限制且未被占用的端口,例如确认可用后改为 8080,并同步注册中心、网关、前端配置和回调地址。
如果换端口后错误变成连接拒绝,还需要继续检查监听地址和进程状态,不应认为所有问题都已解决。
这次经验的重点是先识别失败发生在哪一层。无需关闭浏览器安全策略,也不应把某个旧浏览器能够访问当作长期解决方案。