Apache SSL卸载是将HTTPS解密集中于前端,再以HTTP明文转发后端;需明确卸载位置、保障加密链路完整、主动加固TLS策略,包括启用必要模块、配置证书与代理、注入安全头、限制协议版本与套件,并按需选择后端是否重加密。
apache 作为负载均衡层时,ssl 卸载(ssl termination)不是单纯“分发证书”,而是把 https 解密工作集中到前端 apache,再将明文 http 请求转发给后端服务器。关键在于卸载位置明确、链路加密完整、策略主动加固。
一、启用必要模块并配置基础卸载
确保已加载 mod_proxy、mod_proxy_http、mod_ssl 和 mod_headers。在 SSL 虚拟主机中完成以下配置:
- 用 SSLEngine on 开启 HTTPS 监听,指定 SSLCertificateFile 和 SSLCertificateKeyFile(证书与私钥路径要准确)
- 通过 ProxyPass / http://backend1:8080/ 和 ProxyPassReverse / http://backend1:8080/ 将请求代理至后端(可配多个 BalancerMember 实现负载均衡)
- 添加 RequestHeader set X-Forwarded-Proto "https" 和 X-Forwarded-Port "443",让后端能识别原始协议和端口
二、多后端服务器的负载均衡调度
使用 mod_proxy_balancer 模块定义服务器组,支持轮询(byrequests)、按流量(bytraffic)或按繁忙度(bybusyness)等算法:
- 在
块中列出多个 BalancerMember,如 http://192.168.1.10:8080 和 http://192.168.1.11:8080 - 可为成员设置 loadfactor=2 或 status=+H(热备)等参数,实现权重分配或故障转移
- 搭配 ProxySet lbmethod=bybusyness 可避免长连接堆积,适合高延迟后端
三、安全头注入与 TLS 策略收紧
卸载后必须补全安全控制,防止降级或中间人风险:
- 在 SSL 虚拟主机中加入 Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
- 禁用老旧协议:用 SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1,仅保留 TLS 1.2+;启用前向保密套件,如 ECDHE-ECDSA-AES128-GCM-SHA256 等
- 添加 SSLHonorCipherOrder on 和 SSLCompression off 防止 CRIME 攻击
四、后端通信是否加密?视网络可信度而定
若后端在内网且可信,走 HTTP 即可;若跨公网或需端到端加密,应启用 SSL 重加密:
- 将 ProxyPass 目标改为 https://backend:8443/,并启用 SSLProxyEngine on
- 配合 SSLProxyVerify require 和 SSLProxyCACertificateFile 校验后端证书,防止伪造节点
- 注意:重加密会增加 CPU 开销,需权衡性能与安全边界


















