Dockercompose,Nginx,解析程序不工作

Dockercompose,Nginx,解析程序不工作,docker,nginx,docker-compose,nginx-reverse-proxy,Docker,Nginx,Docker Compose,Nginx Reverse Proxy,我将nginx容器用于以下配置: set $ui http://ui:9000/backend; resolver 127.0.0.11 valid=5m; proxy_pass $ui; 这是必需的,因为当nginx启动时,“ui”容器不必启动。这避免了“在上游找不到主机…”错误 但现在我得到了404,即使ui容器已经启动并运行(它们都在docker compose.yml中定义的同一个网络中)。当我在没有变量、没有解析器的情况下进行代理传递并首先启动ui容器时,一切正常 现在我在寻找doc

我将nginx容器用于以下配置:

set $ui http://ui:9000/backend;
resolver 127.0.0.11 valid=5m;
proxy_pass $ui;
这是必需的,因为当nginx启动时,“ui”容器不必启动。这避免了“在上游找不到主机…”错误

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


现在我在寻找docker未能解决问题的原因。我是否可以手动添加一个假路由,当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;
    }
  }


答案如下:


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

如果我的答案不起作用,我需要你用整个nginx配置设置更新你的问题。如果我这样定义,代理将请求传递给,而不是传递给,所以您想点击127.0.0.11:80并将代理传递给ui:9000/后端吗