繁体   English   中英

Apache 代理背后的 Traefik

[英]Traefik behind Apache proxy

我想寻求一些帮助,我已经与 Traefik 合作了 2-3 个月,我们使用 Docker Swarm 创建了一个基础设施,在我们的集群中使用了 4 个专用服务器,并使用 Traefik 作为具有域的容器的反向代理。

几天前,我们的 IT 崩溃了,不得不重新创建它,我们有一个虚拟机,它位于专用服务器上,也处理大量 VM,问题来了。 这个虚拟机没有任何公共 IP 地址,它位于一个 apache 代理后面,该代理处理 80 上的所有传入请求并转发到运行 Traefik 的虚拟机。

我的问题是我们的 IT 正在使用 Traefik,它使用公共 IP 直接连接到互联网,但我无法配置 Traefik 以在此 Apache 代理后面使用,我总是收到最小的错误消息:找不到 404 页面。

VM 运行 CentOS。

如果有人遇到同样的问题并解决了解决方案,请回复,我希望 Traefik 可以在 Apache 代理后面工作。 也许我们只是在这个 VM 上缺少一些域/主机名配置,但我仍然不知道该怎么做。

显然,traefik 前面的 Apache 没有将Host标头正确转发到 traefik。

为了将您的请求代理到正确的后端,traefik 使用标准的 HTTP 标头Host ,它基本上是最终用户请求的主机名(他在浏览器中输入的)。

如果您将 apache 放在前面并添加如下代理规则:

ProxyPass / x.y.z.w
ProxyPassReverse / x.y.z.w

其中xyzwxyzw的 IP 地址, Host头将被 apache 重写为xyzw

这意味着用户请求的原始Host将丢失,并且 traefik 将能够正确代理。

为了让 Apache 在将调用转发到代理时保留来自客户端的Host标头,您需要添加以下配置:

ProxyPreserveHost On

ProxyPass指令之后。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM