Nginx反向代理Docker内Fastify服务报111连接拒绝、502错误求助
问题排查步骤
- 优先排查Fastify监听地址配置
Fastify 默认仅监听127.0.0.1本地环路地址,容器内该地址无法被同网络的其他容器访问,需要修改启动代码明确指定监听0.0.0.0:// 错误写法(仅本地可访问) fastify.listen({ port: 3005 }) // 或者 fastify.listen(3005, '127.0.0.1') // 正确写法(允许所有地址访问) fastify.listen({ port: 3005, host: '0.0.0.0' }) // 旧版本写法 fastify.listen(3005, '0.0.0.0') - 验证Node服务本身运行状态
- 执行
docker ps查看md_license_server容器状态是否为Up,无异常重启 - 查看服务日志确认无启动报错:
docker logs md_license_server - 在宿主机直接访问3005端口测试:
curl http://localhost:3005/测试接口路径,如果宿主机都无法返回正确结果,优先修复Node服务问题
- 执行
- 验证Docker容器网络连通性
进入Nginx容器测试到Node服务的网络连通性:
如果该步骤无法正常返回结果,说明两个容器之间网络不通,可检查docker-compose是否未将两个服务加入同一网络(默认同compose下的服务会自动加入同一网桥,如有自定义网络配置需确认配置正确性)# 进入Nginx容器 docker exec -it nginx bash # 安装curl工具 apt update && apt install -y curl # 测试访问Node服务 curl http://md_license_server:3005/测试接口路径 - 校验Nginx配置正确性
执行以下命令校验Nginx配置是否合法、是否成功加载:
正常返回docker exec -it nginx nginx -ttest is successful说明配置语法无问题,执行重载配置命令生效:
如果确认配置没问题仍报错,可尝试重启Nginx容器,避免Node服务启动晚于Nginx导致的解析失败:docker exec -it nginx nginx -s reloaddocker restart nginx
内容的提问来源于stack exchange,提问作者user11420374
相关产品推荐
相关产品推荐

