docker 中的 Caddy 代理给出空响应
Caddy proxy in docker gives empty response
我有一个 docker 容器 运行ning Caddy 和另一个网络服务器。
在我的 Dockerfile
我有
EXPOSE 80 10240 # 10240 is the port of the other webserver.
而我运行docker喜欢这样(不要问我为什么你需要EXPOSE
和-p
) .
docker run -p 80:80 -p 10240:1024 -it <hash>
这将启动两个服务器。在我的主机上(顺便说一句,它是 Mac),我可以正常连接到 localhost:10240
。但是,如果我连接到 localhost:80
,我会得到一个空响应(断开连接)。
docker 容器中的 Netstat 显示:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:10240 0.0.0.0:* LISTEN 19/node
tcp6 0 0 :::80 :::* LISTEN 9/caddy
这里开始变得奇怪了。如果我 curl -L localhost
在 容器中,它工作正常 - 我从 10240 服务器获取网页。
如果我 curl -L 127.0.0.1
从 docker 容器中 returns 404 Site 127.0.0.1 is not served on this interface
。好的。
如果我curl -L 127.0.0.1
来自外部容器它也returns404 Site 127.0.0.1 is not served on this interface
。所以不知何故我的请求 是 得到通过,但 Caddy 从容器外部丢弃 localhost
请求,而不是从容器内部。我启用了日志记录,但没有打印任何内容。
谁能告诉我这到底是怎么回事?所有这些 docker 端口转发的东西都是荒谬的。
这是我的 Caddyfile(我已经尝试了大约 10 亿种 localhost
、127.0.0.1
等的其他组合):
localhost:80
bind 0.0.0.0
proxy / 127.0.0.1:10240
我不确定,但我怀疑这是因为 Mac 的网络 Docker 是 kind of broken。我放弃了 Caddy,并尝试对 Traefik 进行同样的思考,也 没有用(尽管它给出了 "Gateway error" 而不是完全断开连接)。
一旦将所有内容移动到 Linux,它就完美地工作了。
我有一个 docker 容器 运行ning Caddy 和另一个网络服务器。
在我的 Dockerfile
我有
EXPOSE 80 10240 # 10240 is the port of the other webserver.
而我运行docker喜欢这样(不要问我为什么你需要EXPOSE
和-p
) .
docker run -p 80:80 -p 10240:1024 -it <hash>
这将启动两个服务器。在我的主机上(顺便说一句,它是 Mac),我可以正常连接到 localhost:10240
。但是,如果我连接到 localhost:80
,我会得到一个空响应(断开连接)。
docker 容器中的 Netstat 显示:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:10240 0.0.0.0:* LISTEN 19/node
tcp6 0 0 :::80 :::* LISTEN 9/caddy
这里开始变得奇怪了。如果我 curl -L localhost
在 容器中,它工作正常 - 我从 10240 服务器获取网页。
如果我 curl -L 127.0.0.1
从 docker 容器中 returns 404 Site 127.0.0.1 is not served on this interface
。好的。
如果我curl -L 127.0.0.1
来自外部容器它也returns404 Site 127.0.0.1 is not served on this interface
。所以不知何故我的请求 是 得到通过,但 Caddy 从容器外部丢弃 localhost
请求,而不是从容器内部。我启用了日志记录,但没有打印任何内容。
谁能告诉我这到底是怎么回事?所有这些 docker 端口转发的东西都是荒谬的。
这是我的 Caddyfile(我已经尝试了大约 10 亿种 localhost
、127.0.0.1
等的其他组合):
localhost:80
bind 0.0.0.0
proxy / 127.0.0.1:10240
我不确定,但我怀疑这是因为 Mac 的网络 Docker 是 kind of broken。我放弃了 Caddy,并尝试对 Traefik 进行同样的思考,也 没有用(尽管它给出了 "Gateway error" 而不是完全断开连接)。
一旦将所有内容移动到 Linux,它就完美地工作了。