Apache 代理背后的 Traefik
Traefik behind Apache proxy
我想寻求一些帮助,我已经使用 Traefik 工作了 2-3 个月,我们使用 Docker Swarm 创建了一个基础设施,在我们的集群中使用了 4 个专用服务器并使用 Traefik 作为反向代理具有域的容器。
几天前,我们的 IT 崩溃了,不得不重新创建它,我们有一台虚拟机,它位于专用服务器上,也处理大量虚拟机,问题就来了。此 VM 没有任何 public IP 地址,它位于 apache 代理后面,该代理处理 80 上的所有传入请求并转发到运行 Traefik 的 VM。
我的问题是我们的 IT 正在使用 Traefik,它使用 public IP 直接连接到互联网,但我无法将 Traefik 配置为在这个 Apache 代理后面工作,我总是得到最小的错误消息:找不到 404 页面。
虚拟机运行 CentOS。
如果有人遇到同样的问题并管理解决方案请回复,我希望 Traefik 可以在 Apache 代理后面工作。也许我们只是缺少此 VM 上的一些 domain/hostname 配置,但我仍然不知道该怎么做。
显然 traefik 前面的 Apache 没有将 Host
header 正确转发给 traefik。
为了将您的请求代理到正确的后端,traefik 使用标准 HTTP header Host
,它基本上是最终用户请求的主机名(他在浏览器中输入的内容)。
如果你把 apache 放在前面并添加如下代理规则:
ProxyPass / x.y.z.w
ProxyPassReverse / x.y.z.w
其中x.y.z.w
是traefik的IP地址,Host
header会被apache改写为x.y.z.w
.
这意味着用户请求的原始Host
会丢失,traefik将无法正确代理。
为了使Apache在将调用转发给代理时保留来自客户端的Host
header,您需要添加以下配置:
ProxyPreserveHost On
在 ProxyPass
指令之后。
我想寻求一些帮助,我已经使用 Traefik 工作了 2-3 个月,我们使用 Docker Swarm 创建了一个基础设施,在我们的集群中使用了 4 个专用服务器并使用 Traefik 作为反向代理具有域的容器。
几天前,我们的 IT 崩溃了,不得不重新创建它,我们有一台虚拟机,它位于专用服务器上,也处理大量虚拟机,问题就来了。此 VM 没有任何 public IP 地址,它位于 apache 代理后面,该代理处理 80 上的所有传入请求并转发到运行 Traefik 的 VM。
我的问题是我们的 IT 正在使用 Traefik,它使用 public IP 直接连接到互联网,但我无法将 Traefik 配置为在这个 Apache 代理后面工作,我总是得到最小的错误消息:找不到 404 页面。
虚拟机运行 CentOS。
如果有人遇到同样的问题并管理解决方案请回复,我希望 Traefik 可以在 Apache 代理后面工作。也许我们只是缺少此 VM 上的一些 domain/hostname 配置,但我仍然不知道该怎么做。
显然 traefik 前面的 Apache 没有将 Host
header 正确转发给 traefik。
为了将您的请求代理到正确的后端,traefik 使用标准 HTTP header Host
,它基本上是最终用户请求的主机名(他在浏览器中输入的内容)。
如果你把 apache 放在前面并添加如下代理规则:
ProxyPass / x.y.z.w
ProxyPassReverse / x.y.z.w
其中x.y.z.w
是traefik的IP地址,Host
header会被apache改写为x.y.z.w
.
这意味着用户请求的原始Host
会丢失,traefik将无法正确代理。
为了使Apache在将调用转发给代理时保留来自客户端的Host
header,您需要添加以下配置:
ProxyPreserveHost On
在 ProxyPass
指令之后。