代码之家  ›  专栏  ›  技术社区  ›  Timmmm

Docker中的Caddy代理给出空响应

  •  0
  • Timmmm  · 技术社区  · 7 年前

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

    在我的 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 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         
    

    这就是它开始变得奇怪的地方。如果我 curl -L localhost 在内部 Docker容器,它工作正常-我从10240服务器获取网页。

    如果我 curl -L 127.0.0.1 从Docker容器中返回 404 Site 127.0.0.1 is not served on this interface . 好的。

    如果我 卷曲-L 127.0.0.1 外部 集装箱它 收益率 404站点127.0.0.1未在此接口上提供服务 . 所以我的要求 通过,但是球童掉下来了 localhost 请求来自容器外部,而不是容器内部。我已经启用了日志记录,但它什么也不打印。

    有人能告诉我到底发生了什么事吗?所有这些码头港口转运的东西都是荒谬的。

    这是我的CADDYFILE(我已经尝试了大约10亿种 本地服务器 , 127.0.0.1 等):

    localhost:80
    bind 0.0.0.0
    proxy / 127.0.0.1:10240
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Timmmm    7 年前

    我不确定,但我怀疑这是因为Docker for Mac的网络 kind of broken . 我放弃了球童,试着对崔菲克做同样的思考,崔菲克 不起作用(尽管它给出了一个“网关错误”而不是完全断开连接)。

    一旦把所有东西都转移到linux上,它就完美地工作了。

    推荐文章