[英]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
其中xyzw
是xyzw
的 IP 地址, Host
头将被 apache 重写为xyzw
。
这意味着用户请求的原始Host
将丢失,并且 traefik 将能够正确代理。
为了让 Apache 在将调用转发到代理时保留来自客户端的Host
标头,您需要添加以下配置:
ProxyPreserveHost On
在ProxyPass
指令之后。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.