gpt4 book ai didi

docker Nginx : host not found in upstream

转载 作者:行者123 更新时间:2023-12-02 19:19:31 25 4
gpt4 key购买 nike

我的 docker 应用程序在 aws EC2 实例中运行,我目前正在尝试使用 Nginx 将该应用程序映射到外部 IP 地址。这是我运行的容器的快照:

enter image description here

我的测试应用程序是一个相当简单的应用程序,它显示一个静态 html 网站。我使用以下命令部署了它:

docker run -d --name=test-app 测试应用

nginx-proxy 具有以下 proxy.conf

server {
listen 80;
location / {
proxy_pass http://test-app;
}
}

这是 nginx 代理的 Dockerfile:

FROM nginx:alpine

RUN rm /etc/nginx/conf.d/*

COPY proxy.conf /etc/nginx/conf.d/

nginx-proxy 使用以下命令运行:docker run -d -p 80:80 --name=nginx-proxy nginx-proxy

但是,nginx 容器从未运行,这里是我得到的错误日志

2020/03/27 15:55:19 [emerg] 1#1: host not found in upstream "test-app" in /etc/nginx/conf.d/proxy.conf:5
nginx: [emerg] host not found in upstream "test-app" in /etc/nginx/conf.d/proxy.conf:5

最佳答案

当您的两个容器都在运行并且您已正确公开 NGINX 容器所需的端口时。您还没有为 test-app 容器公开任何端口。 NGINX 容器无法与其对话。使用 docker run 直接公开端口可能会破坏在您的情况下使用反向代理的意义。因此,在这种情况下您应该做的是创建一个 Network对于您的两个 Docker 容器,然后将它们添加到其中。然后他们将能够通过一座桥相互交流。例如:

docker network create example
docker run -d --network=example --name=test-app test-app
docker run -d -p 80:80 --network=example --name=nginx-proxy nginx-proxy

现在您的两个 pod 都在同一个网络上,Docker 将启用基于 DNS 的 service discovery通过容器名称在它们之间,您将能够相互解析它们。您可以像这样测试连接:docker exec -it nginx-proxy ping test-app。好吧,前提是 ping 安装在那个 Docker 容器中。

关于 docker Nginx : host not found in upstream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60890323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com