You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache2 Httpd反向代理Tomcat:如何告知Tomcat连接为HTTPS?

解决方案

当然有对应的Apache Httpd配置指令可以实现这个需求,核心思路是通过自定义请求头向Tomcat传递「原始连接为HTTPS」的标识,让Tomcat的request.isSecure()方法返回true。

修改Apache Httpd配置

在现有代理配置的基础上,添加两个RequestHeader指令:

# 向Tomcat传递原始请求的协议为HTTPS
RequestHeader set X-Forwarded-Proto "https"
# 明确标记连接为SSL加密状态
RequestHeader set X-Forwarded-Ssl on

ProxyPreserveHost On
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/

配合Tomcat配置(必须步骤)

仅在Apache侧添加请求头还不够,Tomcat默认不会识别这些自定义头,需要在Tomcat的server.xml中配置RemoteIpValve,让它读取Apache传递的标识:
在<Engine>标签内添加如下配置:

<Valve className="org.apache.catalina.valves.RemoteIpValve"
       protocolHeader="X-Forwarded-Proto"
       protocolHeaderHttpsValue="https"/>

这个阀的作用是让Tomcat根据X-Forwarded-Proto头的值,自动将request.isSecure()的返回值设置为true(当值为https时)。

效果验证

配置完成后重启Apache和Tomcat,Tomcat中的Web应用调用request.isSecure()时就会返回true,满足安全连接的要求。

内容的提问来源于stack exchange,提问作者eastwater

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 12:05:38