Apache负载均衡通过ProxyPassMatch精准分流静态请求至专用节点,禁用动态模块并配置强缓存与CDN协同,构建三级缓存体系;同时启用KeepAlive、mod_deflate及精简模块以提升性能。

Apache 负载均衡本身不直接处理静态资源加速,而是通过架构分工与精准分发,把静态请求从应用集群中“摘出来”,交由更合适的节点高效响应。核心不是让 Apache 更快地跑 PHP,而是让它更聪明地决定“谁来处理这张图、那个 JS”。
用 ProxyPassMatch 实现请求级分流
在负载均衡层(如前置 Apache + mod_proxy_balancer)配置正则匹配规则,让静态资源请求在进入主应用集群前就被拦截并转发:
- 匹配常见后缀:用
ProxyPassMatch ^/(.*\.(jpg|jpeg|png|gif|css|js|woff2|svg|ico))$ http://static-servers/$1直接路由到专用静态服务器 - 按路径隔离更稳妥:如
ProxyPass /static/ http://static-servers/static/和ProxyPass /uploads/ http://static-servers/uploads/,避免后缀伪造绕过 - 务必设置
ProxyPreserveHost Off,防止 Host 头透传干扰静态服务的虚拟主机判断
静态节点必须轻量且缓存就绪
被代理的目标静态服务器不能和应用服务器共用一套配置,要专机专用:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 禁用所有动态模块(
mod_php、mod_rewrite等),只保留mod_headers、mod_expires、mod_deflate - 统一启用强缓存:
ExpiresByType image/png "access plus 1 year"、ExpiresByType text/css "access plus 1 month" - 对带哈希名的资源(如
app.8f3e1d.js)加immutable标志:Headerset Cache-Control "public, max-age=31536000, immutable"
结合 CDN 形成三级缓存体系
Apache 负载均衡器只是第一道调度门,真正扛住海量并发的是 CDN 层:
- 静态资源域名建议独立(如
static.example.com),前端 HTML 中直接引用 CDN 地址,让浏览器跳过 Apache 直连边缘节点 - 若需 Apache 代理 CDN 回源,可在
ProxyPass指向 CDN 域名,并配CacheIgnoreHeaders Set-Cookie避免干扰 - 上传类资源(如用户头像)走
/uploads/路径时,可配置为短缓存(max-age=86400)+ ETag 协商,兼顾一致性与性能
补充关键调优点
这些细节不显眼,但压测时容易暴露瓶颈:
- 开启
KeepAlive On,设MaxKeepAliveRequests 200、KeepAliveTimeout 5,减少 TCP 握手开销 - 启用
mod_deflate压缩文本类资源(CSS/JS/SVG),但跳过已压缩格式(JPG/PNG/GIF) - 禁用
mod_autoindex、mod_status等非必要模块,降低内存与 CPU 占用

















