Docker Compose、Nginx、解析器不工作

Posted

技术标签:

【中文标题】Docker Compose、Nginx、解析器不工作【英文标题】:Dockercompose, Nginx, Resolver not working 【发布时间】:2019-06-09 07:17:36 【问题描述】:

我使用带有此配置的 nginx 容器:

set $ui http://ui:9000/backend;
resolver 127.0.0.11 valid=5m;
proxy_pass $ui;

这是必需的,因为“ui”容器在 nginx 启动时不一定会启动。这样可以避免“host not found in upstream...”错误。

但现在即使 ui-container 启动并运行(它们都在 docker-compose.yml 中定义的同一个网络中),我也会得到 404。当我在没有变量、没有解析器的情况下代理传递并首先启动 ui 容器时,一切正常。

现在我正在寻找 docker 无法解决它的原因。我可以手动添加一条到http://ui 的假路由,它会在 ui-container 启动时被替换吗?那会在哪里?或者我可以修复解析器吗?

【问题讨论】:

如果我的回答不起作用,我需要您使用整个 nginx 配置设置更新您的问题。 【参考方案1】:

答案是这样的:

https://***.com/a/52319161/3093499

唯一的改变是将解析器和设置变量放入服务器主体而不是位置。

【讨论】:

【参考方案2】:

首先,您需要确保在 ui 后端 Dockerfile 中拥有带有 EXPOSE 9000 的端口。然后你会想把它作为你的配置:

http 
  upstream ui 
    server ui:9000;
  

  server 
    # whatever port your nginx reverse proxy is listening on.
    listen 80;

    location / 
      proxy_pass http://ui/backend;
    
  

【讨论】:

如果我这样定义,他的代理会将请求传递给127.0.0.11:80,而不是ui:9000/backend 所以你想点击 127.0.0.11:80 并将代理传递给 ui:9000/backend

以上是关于Docker Compose、Nginx、解析器不工作的主要内容,如果未能解决你的问题,请参考以下文章

docker run 和 docker-compose 配置挂载 Volume 并运行 nginx

docker-compose 简单搭建nginx的ssl环境

docker-compose 简单搭建nginx的ssl环境

Docker+Docker-compose部署项目+Nginx配置域名、证书

Docker Compose 部署Nginx服务实现负载均衡

Docker-compose实现nginx反向代理