Apache代理后面的Traefik

时间:2018-06-01 18:19:47

标签: apache docker docker-swarm traefik

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

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

我的问题是我们的IT正在与使用公共IP直接连接到互联网的Traefik合作,但是我无法将Traefik配置为使用此Apache代理,我总是得到最小的错误消息:404页面没有找到。

VM运行CentOS。

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

1 个答案:

答案 0 :(得分:0)

显然,traefik前面的Apache没有正确地将Host标题转发给traefik。

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

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

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

如果x.y.z.w是traefik的IP地址,则Host标题将由apache重写为x.y.z.w

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

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

ProxyPreserveHost On

ProxyPass指令之后。