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配置域名、证书