小编典典

Docker网络Nginx解析器

docker

我正在尝试摆脱配置中已弃用的Docker链接。Bad Gateway当我重新创建容器时,剩下的就是摆脱那些nginx反向代理错误。

注意:我正在桥接模式下使用Docker网络。(docker network create nettest

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

location / {
      resolver 127.0.0.1 valid=30s;
      set $backend "http://confluence:8090";
      proxy_pass $backend;
  1. confluence在Docker网络上以name 为主机名启动了一个容器nettest
  2. 然后,我在网络上启动了Nginx容器nettest
  3. 我可以confluence从Nginx容器内ping
  4. confluence在nginx容器的/etc/hosts文件中列出
  5. Nginx日志说 send() failed (111: Connection refused) while resolving, resolver: 127.0.0.1:53
  6. 我试过泊坞窗网默认DNS解析器127.0.0.11/etc/resol.conf
  7. Nginx日志说 confluence could not be resolved (3: Host not found)

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


阅读 864

收藏
2020-06-17

共1个答案

小编典典

首先,您应该在使用Docker嵌入式DNS服务器127.0.0.11

您的问题可能是由以下原因之一引起的:

  1. nginx尝试将IPv6(AAAA记录)用于DNS查询。

基本上像这样:

    http {
    resolver 127.0.0.11 ipv6=off;
}

Docker 1.11可能不再是问题:

修复了不将Docker域IPv6查询转发到外部服务器的问题(#21396

  1. 注意不要意外覆盖resolver配置指令。在我来说,我曾在serverresolver 8.8.8.8 8.8.4.4;来自Mozilla的SSL配置生成,这是重写resolver 127.0.0.11;http块。那让我挠了很久。
2020-06-17