apache优化https效率核心是协同提升tls握手速度、连接复用稳定性与协议先进性:必须全局配置sslsessioncache shmcb缓存及300秒超时,启用ocsp装订、tls 1.3与http/2,并在https虚拟主机中合理设置keepalive参数且与后端(如tomcat)对齐,最后通过openssl实测session-id复用验证效果。

Apache 中优化 HTTPS 流量传输效率,核心不是堆参数,而是让 TLS 握手快、连接复用稳、协议层更先进。单点配置(比如只开 KeepAlive 或只配缓存)效果有限,必须协同生效。
启用并调优 TLS 会话复用
避免每次请求都做完整 TLS 握手,是提升 HTTPS 效率最直接的手段:
- 在 Apache 主配置文件(如 httpd.conf 或 ssl.conf)顶层添加:
SSLSessionCache shmcb:/var/cache/apache2/ssl_scache(512000)
路径需提前创建并授权:mkdir -p /var/cache/apache2 && chown www-data:www-data /var/cache/apache2 - 必须配合老化时间:
SSLSessionCacheTimeout 300(单位秒,即 5 分钟)——不设则缓存条目永不释放,最终失效 - 开启 OCSP 装订降低吊销验证延迟:
SSLUseStapling on
SSLStaplingCache "shmcb:/var/cache/apache2/ssl_stapling(128000)"
升级协议栈:TLS 1.3 + HTTP/2
协议升级带来结构性性能收益,远超调参:
- 强制 TLS 1.3,禁用老旧协议:
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.3 - 启用 HTTP/2(要求 Apache 2.4.17+、OpenSSL 1.0.2+):
Protocols h2 http/1.1(放在块内) - HTTP/2 天然支持多路复用,与 KeepAlive 共存不冲突,但可减少对长连接的依赖
合理配置 KeepAlive 并与后端对齐
HTTPS 下 KeepAlive 的价值高度依赖 TLS 复用和后端协同,不能孤立开启:
- 在 HTTPS 虚拟主机中启用:
KeepAlive On
KeepAliveTimeout 5(建议 3–10 秒,略低于 HTTP 值)
MaxKeepAliveRequests 100 - 若反向代理到 Tomcat,必须同步调整其连接器:
设置 keepAliveTimeout="5000"(毫秒),略大于 Apache 的 KeepAliveTimeout
确认 maxKeepAliveRequests="100" 一致,防止一方提前断连 - 使用 AJP 协议时,同样需在
中配置 keepAlive 参数
验证是否真正生效
启动不报错 ≠ 配置起效,必须实测复用行为:
- 用 OpenSSL 检查会话复用:
openssl s_client -connect example.com:443 -reconnect -servername example.com 2>/dev/null | grep "Session-ID"
若第二行显示 Reused, TLSv1.3,说明成功 - 抓包观察 TCP 连接复用次数,或检查响应头中
Connection: keep-alive是否持续出现 - 启用 SSL 日志(SSLLogLevel info)后搜索 reusing session 关键词











