首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头网络Nginx解析器

码头网络Nginx解析器
EN

Stack Overflow用户
提问于 2016-03-02 10:33:15
回答 8查看 88.2K关注 0票数 91

我试图摆脱在我的配置中的废弃码头链接。剩下的就是在我重新创建容器时消除那些Bad Gateway nginx反向代理错误。

注意:我使用的是桥接模式的码头网络。(docker network create nettest)

我在nginx中使用以下配置片段:

代码语言:javascript
复制
location / {
      resolver 127.0.0.1 valid=30s;
      set $backend "http://confluence:8090";
      proxy_pass $backend;
  1. 我在我的Docker网络上启动了一个具有主机名confluence的容器,名称为nettest
  2. 然后,我在网络nettest上启动了nginx容器。
  3. 我可以从nginx容器中选择confluence
  4. confluence列在nginx容器的/etc/hosts文件中。
  5. nginx说send() failed (111: Connection refused) while resolving, resolver: 127.0.0.1:53
  6. 我尝试过/etc/resol.conf中的docker网络默认dns解析器/etc/resol.conf
  7. nginx说confluence could not be resolved (3: Host not found)

有人知道如何用Docker网络配置nginx解析器,或者如何强制Nginx正确解析Docker网络主机名?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2016-06-06 11:54:22

首先,您应该在127.0.0.11上使用Docker服务器。

您的问题可能是由以下其中之一引起的:

  1. nginx正在尝试使用IPv6 (AAAA记录)进行DNS查询。 有关解决方案,请参见https://stackoverflow.com/a/35516395/1529493。 基本上是这样的: http {解析器127.0.0.11 ipv6=off;} 这可能不再是Docker 1.11的问题: 修正不将停靠域IPv6查询转发到外部服务器(#21396)
  2. 注意,不要意外地重写resolver配置指令。在我的例子中,我从serverresolver 8.8.8.8 8.8.4.4;Mozilla的SSL配置生成器,它在http块中覆盖resolver 127.0.0.11;。让我挠了很久的头.
票数 156
EN

Stack Overflow用户

发布于 2017-12-05 09:24:10

也许你应该检查你的容器的/etc/resolv.conf

它将显示容器的正确DNS配置,然后使用DNS服务器IP作为解析器。

127.0.0.11不适用于牧场

票数 10
EN

Stack Overflow用户

发布于 2021-04-09 21:10:33

我运行“节点:12.18-阿尔卑斯”的角度前端,并遇到了同样的问题与proxy_pass。

在当地,它正在与以下方面合作:

代码语言:javascript
复制
resolver 127.0.0.11;

就这么简单!只需执行:

代码语言:javascript
复制
$ cat /etc/resolv.conf | grep nameserver

在您的容器中获取这个ip地址。

然而,当部署到kubernetes (AWS EKS)时,我得到了相同的错误:

代码语言:javascript
复制
failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53

解决方案:

第一个解决方案是查找kube服务的IP,如下所示:

代码语言:javascript
复制
$ kubectl get service kube-dns -n kube-system
NAME       TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)         AGE
kube-dns   ClusterIP   172.20.0.10   <none>        53/UDP,53/TCP   178d

简单地用IP代替集群-IP就像一种魅力。

稍后,经过更多的文档挖掘之后,我发现我可以按名称引用服务(这稍微更优雅和更有弹性):

代码语言:javascript
复制
resolver kube-dns.kube-system valid=10s;
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35744650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档