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

Docker部署Nginx反向代理遇域名解析失败问题求助

解决Docker Nginx反向代理域名解析失败问题

针对你遇到的send() failed (111: Connection refused)和example.com could not be resolved错误,可按以下步骤排查修复:

1. 替换Resolver地址

Docker内置的127.0.0.11 DNS解析器偶尔会出现连通性异常,直接替换为公共DNS服务器即可规避这类问题,比如Google的8.8.8.8或Cloudflare的1.1.1.1:

http {
    server {
        listen 80 default_server;
        listen [::]:80 default_server;

        location / {
            proxy_http_version 1.1;
            proxy_set_header "Connection" "";

            resolver 8.8.8.8 1.1.1.1 valid=300s;
            proxy_pass http://example.com;
        }
    }
}

添加valid=300s参数可缓存解析结果,减少重复DNS请求的开销。

2. 启用动态域名解析(按需使用)

如果后端服务的IP地址会频繁变动,需要Nginx实时刷新域名解析结果,需将proxy_pass改为变量形式,触发resolver的动态解析逻辑:

http {
    server {
        listen 80 default_server;
        listen [::]:80 default_server;

        location / {
            proxy_http_version 1.1;
            proxy_set_header "Connection" "";

            resolver 8.8.8.8 valid=300s;
            set $upstream example.com;
            proxy_pass http://$upstream;
        }
    }
}

3. 排查容器网络连通性

进入Nginx容器手动测试,确认问题根源:

# 替换为你的Nginx容器名/ID
docker exec -it nginx-container bash

# 测试域名解析
nslookup example.com

# 测试网络连通性
curl http://example.com

如果nslookup失败,说明容器DNS配置异常,启动容器时可手动指定DNS:

docker run -d --name nginx-container --dns 8.8.8.8 -p 80:80 -v /本地配置路径/nginx.conf:/etc/nginx/nginx.conf nginx

4. 验证配置并重启容器

每次修改配置后,先检查语法正确性,再重启容器生效:

docker exec nginx-container nginx -t
docker restart nginx-container

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 12:45:36