You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署Nginx反向代理始终返回连接被拒绝问题排查

Docker Nginx反向代理容器无法访问页面(连接被拒绝/日志为空)

核心排查与解决步骤

1. 确认端口映射是否正确

Docker容器默认不会暴露端口到宿主机,必须显式映射。本地Nginx直接占用宿主机80端口,但容器中的Nginx如果不做端口映射,宿主机无法访问。

  • 停止现有容器,重新启动时添加端口映射:
    # 若本地Nginx已停止,直接映射80端口
    docker run -d -p 80:80 --name nginx-proxy <你的镜像名>
    
    # 若本地Nginx仍在运行,映射到其他端口(如8080)
    docker run -d -p 8080:80 --name nginx-proxy <你的镜像名>
    
  • 之后访问 http://localhost(或http://localhost:8080)、http://camera2.localhost(或http://camera2.localhost:8080)测试。

2. 检查容器与后端服务器的网络连通性

容器默认使用bridge网络,可能无法访问宿主机局域网内的后端IP(10.10.1.53/54):

  • 进入容器测试连通性:
    docker exec -it nginx-proxy bash
    # ping后端IP
    ping 10.10.1.54
    # 用curl测试后端服务是否可达
    curl http://10.10.1.54
    
  • 若无法连通,切换为host网络模式启动容器(直接复用宿主机网络,与本地Nginx环境一致):
    docker run -d --net=host --name nginx-proxy <你的镜像名>
    

3. 验证Nginx配置语法正确性

虽然本地配置可用,但容器内Nginx版本或文件编码可能导致语法错误:

  • 进入容器执行配置检查:
    docker exec -it nginx-proxy nginx -t
    
  • 若提示引号相关错误,检查default.conf中的&quot;,替换为实际双引号",重新复制配置并重启容器:
    docker cp default.conf nginx-proxy:/etc/nginx/conf.d/default.conf
    docker restart nginx-proxy
    

4. 查看容器启动日志

容器日志为空可能是Nginx未正常启动,查看启动日志定位问题:

docker logs nginx-proxy

日志会显示配置错误、端口占用等启动失败原因。

5. 测试Host头匹配是否生效

用curl模拟请求,验证Nginx是否根据Host头路由到对应后端:

# 测试localhost路由
curl -v http://localhost:8080
# 测试camera2.localhost路由
curl -v -H "Host: camera2.localhost" http://localhost:8080

内容的提问来源于stack exchange,提问作者bakeljouw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 10:07:30