【问题标题】:Dockercompose, Nginx, Resolver not workingDocker Compose、Nginx、解析器不工作
【发布时间】: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 配置设置更新您的问题。

标签: docker nginx docker-compose nginx-reverse-proxy


【解决方案1】:

答案是这样的:

https://stackoverflow.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
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 1970-01-01
    相关资源
    最近更新 更多