首页 文章

Traefik背后的Apache代理

提问于
浏览
0

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

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

我的问题是我们的IT正在与Traefik一起使用公共IP直接连接到互联网,但是我无法配置Traefik与这个Apache代理一起工作,我总是得到最小的错误消息:找不到404页面 .

VM运行CentOS .

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

1 回答

  • 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 Headers 将由apache重写为 x.y.z.w .

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

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

    ProxyPreserveHost On
    

    紧跟在 ProxyPass 指令之后 .

相关问题