问题:docker中的# nginx无法与本地主机对话

目标是:

1.为所有请求返回相同的index.html

  1. 除了路径名从“/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。

Logo

开发云社区提供前沿行业资讯和优质的学习知识,同时提供优质稳定、价格优惠的云主机、数据库、网络、云储存等云服务产品

更多推荐