必须启用sslproxyengine on,否则apache无法以https客户端连接后端导致502错误;还需配置sslproxyverify、sslproxycacertificatefile、proxypreservehost等实现全链路https透传。

Apache 本身不直接加密后端流量,但可以通过在代理层配置 SSL/TLS 终结或透传,实现客户端到 Apache、以及 Apache 到后端(如 Tomcat)之间的加密传输。关键在于区分两种模式:SSL 终结(HTTPS → HTTP)和端到端加密(HTTPS → HTTPS),后者才是真正的“负载均衡流量加密传输”。
启用 SSL 终结 + 后端明文通信
这是最常见做法,由 Apache 负责解密 HTTPS 请求,再以 HTTP 协议转发给后端 Java 服务(如 Tomcat)。优点是卸载加密计算、简化后端配置;缺点是 Apache 与后端之间为明文,需确保内网可信。
- 在 ssl.conf 中启用 SSLEngine on 和 SSLProxyEngine on
- 配置证书路径:SSLCertificateFile、SSLCertificateKeyFile、SSLCertificateChainFile
- 使用 ProxyPass 指向后端 HTTP 地址(如
http://192.168.1.10:8080),无需 HTTPS - 添加 ProxyPreserveHost On 保证原始 Host 头不丢失
实现端到端 HTTPS 加密(推荐用于跨网段或不可信内网)
要求后端服务(如 Tomcat)也启用 HTTPS,并由 Apache 以 HTTPS 方式代理请求。此时整个链路(Client ⇄ Apache ⇄ Tomcat)均为加密传输。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 后端 Tomcat 必须配置 HTTPS Connector(如端口 8443),并部署有效证书或自签名证书
- Apache 的 ssl.conf 中,ProxyPass 目标必须是
https://地址(如https://192.168.1.10:8443) - 若 Tomcat 使用自签名证书,需在 Apache 配置中添加:SSLProxyVerify none 和 SSLProxyCheckPeerCN off(仅测试环境,生产建议部署可信证书)
- 保持 SSLProxyEngine on,否则无法建立上游 HTTPS 连接
负载均衡集群中统一启用 HTTPS 上游
当使用 balancer:// 定义集群时,所有 BalancerMember 必须使用 https:// 协议,且 Apache 需信任其证书。
- 示例配置片段(写入 httpd.conf 或独立 conf 文件):
<proxy></proxy>BalancerMember https://192.168.1.10:8443 route=node1BalancerMember https://192.168.1.11:8443 route=node2ProxySet lbmethod=byrequests- 主虚拟主机中用 ProxyPass / balancer://cluster/ 即可完成加密负载分发
补充安全要点
仅开启 HTTPS 不代表绝对安全,还需配合基础防护措施:
- 禁用弱协议与密码套件:在 ssl.conf 中设置 SSLProtocol all -SSLv2 -SSLv3 和 SSLCipherSuite 白名单
- 开启会话保持(Sticky Session):通过 ProxySet stickysession=jsessionid 或自定义 Cookie(如 ROUTEID),避免 HTTPS 会话在节点间中断
- 限制代理开放范围:设 ProxyRequests Off 防止 Apache 被用作正向代理
- 校验后端证书有效性(生产环境):移除 SSLProxyVerify none,改用 SSLProxyCACertificateFile 指定 CA 证书










