访问Docker部署的Nginx容器时出现net::ERR_CONNECTION_REFUSED错误求助
问题排查步骤
1. 检查Nginx配置加载有效性
你的docker-compose.yml将本地./nginx目录挂载到Nginx容器的/etc/nginx/user_conf.d,但官方Nginx镜像默认配置不会自动加载该目录下的文件。需验证配置是否被加载:
- 进入Nginx容器:
docker exec -it nginx bash - 查看主配置文件:
cat /etc/nginx/nginx.conf - 确认是否存在
include /etc/nginx/user_conf.d/*.conf;语句,若没有,需添加该配置,或直接将自定义nginx.conf挂载到/etc/nginx/conf.d/目录(官方镜像默认加载此目录下的.conf文件)。
2. 修复证书文件挂载问题
你的Nginx配置引用了/etc/letsencrypt/路径下的证书,但docker-compose.yml中注释了该目录的挂载,导致容器内无证书文件,会直接导致SSL服务启动失败:
- 取消
docker-compose.yml中以下行的注释:# - /etc/letsencrypt/:/etc/letsencrypt - 重启Nginx容器:
docker-compose restart nginx - 查看Nginx日志排查证书错误:
docker logs nginx
3. 检查GCE防火墙规则
GCE默认防火墙未开放443端口,外部访问会被直接拦截:
- 登录GCP控制台,进入对应实例的防火墙设置页面
- 确认是否存在允许
tcp:443的入站规则,若无则添加一条允许指定IP或所有IP访问443端口的规则。
4. 验证容器间网络连通性
确认Nginx容器能否正常访问web容器:
- 进入Nginx容器:
docker exec -it nginx bash - 执行
curl http://web:8001,若无法访问,检查docker-compose网络配置(默认桥接网络应支持容器互通,自定义网络需确认配置正确性)。
5. 确认域名解析准确性
检查你的服务器URL是否正确指向GCE实例的公网IP:
- 在本地终端执行
nslookup <你的服务器URL>,确认返回IP与实例公网IP一致。
内容的提问来源于stack exchange,提问作者Michael Pesce
相关产品推荐
相关产品推荐

