apache负载均衡器ssl优化核心是卸载、复用与加速:启用tls 1.2/1.3、ecdhe前向保密套件、ocsp stapling、会话缓存及event mpm,后端走http,结合硬件加速降低cpu开销。

Apache 负载均衡器在处理 HTTPS 流量时,SSL/TLS 握手与加解密会显著增加 CPU 开销,尤其在高并发场景下容易成为性能瓶颈。优化关键不在于“关闭加密”,而是在保证安全的前提下,把计算密集型任务合理卸载、复用和加速。
SSL 卸载(Termination)配置
将 TLS 解密/加密操作集中在 Apache 层完成,后端服务器仅处理明文 HTTP 请求,大幅降低后端计算压力,也便于统一证书管理和策略控制。
- 启用
mod_ssl并在虚拟主机中配置证书与私钥,确保使用现代协议(TLS 1.2/1.3)和高效密码套件,例如:SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256 - 后端代理指令中使用
http://地址(而非https://),避免双重加密链路;
示例:ProxyPass / balancer://backend/,其中balancer://backend成员均为http://serverX:8080 - 开启 OCSP Stapling 减少客户端证书状态验证延迟:
SSLUseStapling on,并配置缓存有效期
连接复用与会话缓存优化
频繁重建 TLS 连接是主要开销来源。通过复用连接和缓存握手状态,可跳过完整握手流程,显著减少 CPU 和 RTT 消耗。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 启用 HTTP Keep-Alive 并延长超时时间:
KeepAlive OnKeepAliveTimeout 5MaxKeepAliveRequests 100 - 配置 TLS 会话缓存,支持 session ID 或 session ticket:
SSLSessionCache "shmcb:/var/run/apache2/ssl_scache(512000)"SSLSessionCacheTimeout 300 - 对支持 TLS 1.3 的客户端,启用 0-RTT(需评估重放风险)并确保
SSLStrictSNIVHostCheck off不干扰 SNI 处理
CPU 与模块协同调优
SSL 处理效率高度依赖工作模式与线程/进程模型匹配。错误的组合会导致锁争用或上下文切换放大开销。
- 优先选用
eventMPM(Apache 2.4+),它基于事件驱动,能高效处理大量 TLS 连接,比prefork内存更省、比worker更稳定;确认已加载:LoadModule mpm_event_module modules/mod_mpm_event.so - 调整并发参数适配 SSL 压力:
ThreadsPerChild 25(避免单线程负载过重)MaxRequestWorkers 400(根据内存与 CPU 核心数动态测算) - 禁用非必要模块(如
mod_php若后端用 PHP-FPM),减少每个 worker 的内存占用,间接提升 TLS 处理容量
硬件加速与内核协同
在支持的服务器上启用 OpenSSL 硬件引擎,可将 RSA/ECC 运算卸载至 CPU 指令集(如 Intel AES-NI、AVX)或专用加密卡。
- 确认 OpenSSL 支持硬件加速:
openssl version -a | grep -i "aesni\|engine" - 在 Apache 启动前设置环境变量启用 AES-NI(多数现代 Linux 发行版默认开启):
export OPENSSL_ia32cap="~0x200000200000000"(谨慎修改,建议保持默认) - 若使用内核 TLS(kTLS),需 Linux 4.13+ 且启用
CONFIG_TLS,Apache 可通过mod_ssl自动利用,无需额外配置,但需验证:ss -i | grep -i "tls"查看连接是否标记为tls










