Docker中的Caddy代理给出空响应

时间:2018-06-06 12:37:15

标签: docker caddy caddyfile

我有一个运行Caddy的docker容器和另一个Web服务器。

Dockerfile我有

EXPOSE 80 10240   # 10240 is the port of the other webserver.

我像这样运行码头工具(不要问我为什么需要EXPOSE -p)。

docker run -p 80:80 -p 10240:1024 -it <hash>

这将启动两台服务器。在我的主机上(它是Mac btw)我可以连接到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         

这里开始变得怪异。如果我在 docker容器中curl -L localhost ,它可以正常工作 - 我从10240服务器获取网页。

如果我在docker容器中curl -L 127.0.0.1,则返回404 Site 127.0.0.1 is not served on this interface。好的。

如果我{<1}}来自容器 ,则返回curl -L 127.0.0.1。所以我的请求 以某种方式通过了,但是Caddy从容器外部删除了404 Site 127.0.0.1 is not served on this interface个请求,而且它没有来自它内部。我已启用日志记录但它没有打印任何内容。

谁能告诉我到底是怎么回事?所有这些码头端口转发的东西都很荒谬。

这是我的Caddy文件(我已尝试过大约10亿个localhostlocalhost等的其他组合:

127.0.0.1

1 个答案:

答案 0 :(得分:0)

我不确定,但我怀疑这是因为Docker for Mac的网络是kind of broken。我放弃了Caddy并尝试用Traefik做同样的想法,没有工作(虽然它给出了#34;网关错误&#34;而不是完全放弃连接)。

只要将所有内容移至Linux,它就能完美运行。