docker 搭建nginx提示 host not found in upstream,
nginx: [emerg] host not found in upstream "xxx" in /etc/nginx/nginx.conf:xx
docker里面里面有很多项目,都是通过bridge网络进行配置,由于启动顺序或者更新问题,会导致部分host不存在,然后提示该错误,然后无法启动。原因是nginx 启动时,会对其配置的 upstream 进行 DNS 解析测试,如果无法解析成功则会报错无法启动。但是,当我们将 upstream 修改为变量时,nginx 不会进行测试,以此绕过这个问题。
resolver 则为 Nginx 设置 DNS 服务器,Nginx会动态利用 resolver 设置的DNS服务器(本机设置的 DNS 服务器或 /etc/hosts 无效),将域名解析成 IP,proxy 模块会将请求转发到解析后的IP上。
此时可以讲host设置位变量
location /test {
resolver 127.0.0.11 10s; # docker 内部dns解析
set $ht docker-host;
proxy_pass http://$ht;
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有