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:
唯一的变化是将解析器和设置变量放入服务器主体而不是位置。
我在这个配置中使用了一个 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:
唯一的变化是将解析器和设置变量放入服务器主体而不是位置。