【问题标题】:Apache HTTP ProxyPass inside Docker container linked to other containers: Wrong remote IP interpreted by linked containerDocker容器内的Apache HTTP ProxyPass链接到其他容器:链接容器解释的远程IP错误
【发布时间】:2016-09-25 02:45:06
【问题描述】:

我正在将 Apache 配置从基于主机的普通 Ubuntu 迁移到基于容器的 CoreOS。 我只有一个 CoreOS 实例用于探索性目的和个人用途,所以我真的不需要云基础设施兼容的解决方案来完成这项任务。 假设所有容器都在同一台物理机器上运行。

那个 Apache 配置是一个带有 ProxyPreserveHost On 的虚拟主机 ProxyPass。在主机上安装了 Apache 而没有 Docker 的 Ubuntu 上,一切都很好。目标是在同一台机器上托管多个 Web 服务,每个 Web 服务位于其自己的子域中,端口为 443。

例如,我目前在我的 CoreOS 上安装:

  • example.com(网站)
  • gitlab.example.com (gitlab)
  • jenkins.example.com (jenkins)
  • sonar.example.com(声纳)
  • monitoring.app.example.com (python)
  • event.api.example.com (java)
  • legacy.api.example.com (php)

这些网络服务中的每一项都在单独的容器中运行,并且它们的端口发布(无法从 Internet 访问)。至于 Apache,它在自己的容器上运行,并且它的端口暴露的。

我正在使用容器链接来实现虚拟主机到 ProxyPass 的行为:--link gitlab:gitlab \ProxyPass / https://gitlab:443/

我现在面临一个问题:如果我查看 Apache 日志,我可以看到传入连接正在使用预期的客户端 IP 地址进行记录。但是,目标容器看到的记录传入连接是容器的 IP 地址,即172.17.0.1

由于目标容器 Web 服务(gitlab、python、java、php...)的多样性,我无法调整这些 Web 服务的实现,以便它们从另一个位置选择 IP,比如说@ 987654326@.

有什么方法可以让目标容器看到如果它们不在 Docker 中运行时它们会看到的所需 IP 地址?只要完成所需的用例(端口 443 暴露给 Internet:一个域 -> 一个 Web 服务,保留客户端 IP),我就愿意接受涉及丢弃 Apache HTTP 的解决方案。

请注意,我无法在 Apache 服务器上使用 --net=host,因为此选项与容器链接不兼容。

【问题讨论】:

  • --net=host 与--link 不兼容,你用的是什么版本的docker
  • @Shibashis “来自守护进程的错误响应:冲突选项:--net=host 不能与链接一起使用。这将导致未定义的行为”与“Docker 版本 1.9.1,内部版本 9894698”

标签: apache docker coreos


【解决方案1】:

链接是正在逐步淘汰的遗留技术,但您是对的,容器共享主机网络无法连接到任何其他网络类型。

# docker network connect bridge container
Error response from daemon: Container sharing network namespace with another container or host cannot be connected to any other network

使用pipework 将您的apache 连接到外部网络。将 apache 和所有其他容器放在桥接网络中以提供内部连接。

留意macvlan driver,一旦它从“实验性”构建出来,你应该使用它而不是管道。

【讨论】:

  • 只是想告诉你我已经确认你的回答,但我还没有尝试过。
  • 我已经尝试过了,但似乎没有帮助解决问题,但我仍然很感激,因为该答案的内容帮助我定位了我的研究并找到了更多文档。
  • 干杯!如果您提供一些详细信息,我们可能会找到问题所在。
猜你喜欢
  • 1970-01-01
  • 2018-01-11
  • 2015-02-23
  • 2020-02-19
  • 2016-03-10
  • 1970-01-01
  • 2018-02-11
  • 1970-01-01
  • 2015-03-17
相关资源
最近更新 更多