Docker Compose、Nginx、Resolver 不工作

Dockercompose, Nginx, Resolver not working

我在这个配置中使用了一个 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-[=22= 中定义的同一网络中,我也会收到 404 ]).当我在没有变量、没有解析器的情况下代理传递并首先启动 ui 容器时,一切正常。

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

首先,您需要确保 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;
    }
  }

答案就像这样post:

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