当前位置: 首页 > 知识库问答 >
问题:

防火墙背后的Apache背后的Tomcat:AJP忽略X-Forwarded-Proto

慕阳
2023-03-14
  • 防火墙:终止https,添加“x-forwarded-proto:https”,通过http
  • 转发到Apache
  • Apache:通过ajp转发到Tomcat
  • Tomcat:通过ajp-connector接收请求

我们已经将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。

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

    JkMount /* LoadBalancerHD
</VirtualHost>

工作人员。属性:

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

共有1个答案

谭繁
2023-03-14

在研究了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文档)。以下也是如此:

SetEnvIfNoCase X-Forwarded-Proto https EXTERNAL_TRAFFIC_IS_HTTPS=on
JkHTTPSIndicator EXTERNAL_TRAFFIC_IS_HTTPS
 类似资料:
  • 问题内容: 我有一个在两个不同的Digital Ocean小滴上运行的Elasticsearch集群。它们都是为专用网络而设置的,我有一个运行良好的UFW规则就可以正常运行的Mongo DB复制集,它只接受来自Droplet的特定(专用)IP地址的相关端口上的连接。 但是,我无法使用相同的方法(只有黄色)获得绿色的Elasticsearch集群运行状况。这意味着节点无法相互连接。 在elasati

  • 我一直四处寻找,但无法为以下情况找到明确的解决方案: 我们有一个web应用程序(Grails+Spring Security),它在Apache后面的tomcat中运行。应用程序的一部分需要在https上运行,因此使用Spring Security Channel Security,只要您导航到应用程序的一部分是安全的,Spring就会将您重定向到https,状态代码为302。 现在问题出现在将a

  • 基本概念 netfilter Linux 内核包含一个强大的网络过滤子系统 netfilter。netfilter 子系统允许内核模块对遍历系统的每个网络数据包进行检查。这表示在任何传入、传出或转发的网络数据包到达用户空间中的组件之前,都可以通过编程方式检查、修改、丢弃或拒绝。netfilter 是 RHEL 7 计算机上构建防火墙的主要构建块。 尽管系统管理员理论上可以编写自己的内核模块以与 n

  • 我在Jaspersoft工作室工作。我正在尝试使用来自Jasper Studio的webservice。我在公司防火墙后面工作。我尝试使用的webservice是HTTPS。我收到SSL证书错误。有没有人可以建议我如何在Jaspersoft Studio中忽略SSL认证并使用https webservice。 JasperReports Server CP 5.1.0 JasperSoft stu

  • 我在谷歌上冲浪,没有找到任何具体的答案或例子,所以再次尝试我的运气在这里(经常是幸运的)。 问题所在 > 我在apache反向代理后面运行了一个spring boot RESTful服务。此RESTful服务只运行HTTP。假设它运行在本地IP172.S端口8080上。 我还配置了一个apache反向代理。假设它运行在本地IP172.a和公共IP55.a上。该代理响应两个端口80,但所有HTTP通