【问题标题】:Tomcat behind Apache behind Firewall: AJP ignores X-Forwarded-ProtoTomcat 背后的 Apache 背后的防火墙:AJP 忽略 X-Forwarded-Proto
【发布时间】:2017-09-01 08:35:07
【问题描述】:

如果是 https 流量,我们有以下设置:

  • 防火墙:终止 https,添加“X-Forwarded-Proto: https”,通过 http 转发到 Apache
  • Apache:通过 AJP 转发到 Tomcat
  • Tomcat:通过 AJP 连接器接收请求

我们已将 RemoteIpValve 添加到 Tomcat 的 server.xml:

<Valve className="org.apache.catalina.valves.RemoteIpValve"
                   remoteIpHeader="x-forwarded-for"
                   protocolHeader="x-forwarded-proto"
            />

如果我们跳过 Apache 并使用常规 HTTP 连接器直接从防火墙转发到 Tomcat,它就可以工作。在这种情况下,Tomcat 使用 https 进行重定向和基本 url。

但是一旦我们通过 Apache 和 AJP,X-Forwarded-Proto 标头似乎就被忽略了。我们检查了,X-Forwarded-Proto 标头仍然存在于 Tomcat 的请求中。

我猜想通过 AJP 告诉 Tomcat 使用哪种前端协议(http 或 https)。也许这不会发生?我们是否需要以某种方式告诉 Apache 为 AJP 考虑 X-Forwarded-Proto?

Apache VirtualHost 配置:

<VirtualHost *:80>
    ServerName www.myserver.biz

    JkMount /* LoadBalancerHD
</VirtualHost>

workers.properties:

worker.list=LoadBalancerHD

worker.LoadBalancerHD.balance_workers=HDNode1,HDNode2
worker.LoadBalancerHD.type=lb
worker.LoadBalancerHD.sticky_session=True

worker.HDNode1.type=ajp13
worker.HDNode1.host=webserver01
worker.HDNode1.port=8010
worker.HDNode1.distance=0

worker.HDNode2.type=ajp13
worker.HDNode2.port=8010
worker.HDNode2.host=webserver02
worker.HDNode2.distance=1

【问题讨论】:

    标签: apache tomcat https mod-jk ajp


    【解决方案1】:

    在研究了 mod_jk 文档后,我发现 mod_jk 会评估 Apache 环境变量 HTTPS 以检测 https。如果 Apache 自己处理 https 流量,通常这个变量由 mod_ssl 设置。但事实并非如此,因为 HTTPS 在 Apache 之前就已经终止了。

    只需根据 http 标头设置环境变量即可:

    SetEnvIfNoCase X-Forwarded-Proto https HTTPS=on
    

    顺便说一句:mod_jk 评估的环境变量可以使用JkHTTPSIndicator 指令更改(请参阅mod_jk docs)。所以下面也是一样的:

    SetEnvIfNoCase X-Forwarded-Proto https EXTERNAL_TRAFFIC_IS_HTTPS=on
    JkHTTPSIndicator EXTERNAL_TRAFFIC_IS_HTTPS
    

    如果更改 HTTPS 会干扰其他模块,可能会很有用。

    【讨论】:

      猜你喜欢
      • 2020-04-28
      • 1970-01-01
      • 2020-10-24
      • 1970-01-01
      • 2012-04-19
      • 2015-11-18
      • 1970-01-01
      • 1970-01-01
      • 2017-05-07
      相关资源
      最近更新 更多