Ocelot API网关调用下游AccountAPI提示目标机器积极拒绝连接求助
问题排查与解决指南
核心问题修复
1. 修正Docker网络下的下游服务地址
Docker Compose 为同栈服务创建了独立内部网络,容器内的localhost指向自身,无法访问宿主机端口映射的其他容器服务。需修改ocelot.json配置:
- 下游Host替换为Docker Compose中AccountAPI的服务名
accountapi - 下游端口使用容器内部暴露的端口:HTTP对应
80,HTTPS对应443,不要使用宿主机映射的5101端口 - 同步校验
DownstreamScheme与下游服务协议匹配
修正后的配置参考:
{ "GlobalConfiguration": { "BaseUrl": "http://localhost:5111/" }, "Routes": [ { "DownstreamPathTemplate": "/Account/{url}", "DownstreamScheme": "http", "DownstreamHostAndPorts": [ { "Host": "accountapi", "Port": 80 } ], "UpstreamPathTemplate": "/MeHealth/Account/{url}", "UpstreamHttpMethod": [ "GET", "POST", "PUT", "DELETE" ], "Priority": 1 } ] }
2. 修正调用路径拼写错误
你测试时调用的网关路径https://localhost:5111/MeHalth/Account/1存在拼写错误,MeHalth应为路由中配置的MeHealth,修正路径即可避免404问题。
验证步骤
- 进入Ocelot容器内部,执行
curl http://accountapi:80/Account/1,确认可以正常拿到返回结果 - 配置修改后重启Ocelot服务,再通过网关调用验证功能是否正常
注意事项
如果下游使用HTTPS协议通信,需确保Ocelot容器信任AccountAPI的自签名证书,避免证书校验失败导致连接报错。
内容的提问来源于stack exchange,提问作者LydsE
相关产品推荐
相关产品推荐

