docker中的# nginx无法与本地主机对话
问题:docker中的# nginx无法与本地主机对话
目标是:
1.为所有请求返回相同的index.html
- 除了路径名从“/api”开始的情况(例如 localhost/api/asd) - 在这种情况下,将此请求转发到在 localhost:8080 上运行的应用程序
我已经成功地处理了这个任务,只是在我的 ubuntu 上运行了 nginx。但是当我在 docker 容器中尝试相同的操作时,每个“/api”请求都会得到 502:
2019/11/03 14:35:39 [error] 6#6: *22 connect() failed (111: Connection refused) while connection to upstream, client: 172.17.0.1, server: 127.0.0.1, request: "GET /api/library/source/find?pageu003d0&sizeu003d40&qu003dJTdCJTIycXVlcnklMjIlM0ElMjIlMjIlMkMlMjJwZXJpb2QlMjIlM0ElMjJBTlRJUVVJVFklMjIlMkMlMjJjbGFzc2lmaWNhdGlvbnMlMjIlM0ElNUIlNUQlMkMlMjJ0eXBlcyUyMiUzQSU1QiU1RCU3RAu003du003d HTTP/1.1", upstream: "http://127.0.0.1:8080/api/library/source/find?page u003d0&sizeu003d40&qu003dJTdCJTIycXVlcnklMjIlM0ElMjIlMjIlMkMlMjJwZXJpb2QlMjIlM0ElMjJBTlRJUVVJVFklMjIlMkMlMjJjbGFzc2lmaWNhdGlvbnMlMjIlM0ElNUIlNUQlMkMlMjJ0eXBlcyUyMiUzQSU1QiU1RCU3RAu003du003d", host: "localhost", referrer: "http://localhost/library/period/antiquity" 172.17.0.1 - - [03/Nov/2019:14 :35:39 +0000] "GET /api/library/source/find?pageu003d0&sizeu003d40&qu003dJTdCJTIycXVlcnklMjIlM0ElMjIlMjIlMkMlMjJwZXJpb2QlMjIlM0ElMjJBTlRJUVVJVFklMjIlMkMlMjJjbGFzc2lmaWNhdGlvbnMlMjIlM0ElNUIlNUQlMkMlMjJ0eXBlcyUyMiUzQSU1QiU 1RCU3RAu003du003d HTTP/1.1" 502 559 "http://localhost/library/period/antiquity" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36" "-"
“172.17.0.1”看起来很奇怪。我使用“nginx”图像,它的 /etc/hosts 文件中有以下内容:
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 1a0b306a3a80
注意“172.17.0.2”,而不是“172.17.0.1”。
我正在运行的 Dockerfile 和 nginx 配置可以在这里找到:https://github.com/ahlinist/tempvs-ui
映像构建并运行为: sudo docker build 。 -t tempvs-ui sudo docker run -p 80:80 tempvs-ui
我究竟做错了什么?如何让 docker 镜像向 localhost:8080 发送请求?
解答
快速回答:使用附加参数运行 docker network:
docker run -p 80:80 --network=host tempvs-ui
问题是您的 docker(主机)服务器和 docker 容器中的localhost
不一样。
随着您当前的实现重定向发生在内部 docker 容器中。而您的目标应用程序在主机中运行。这就是为什么会出现 Connection denied 错误。
文档:docker network,docker run network param。
更多推荐
所有评论(0)