百万级流量需分层卸载、精准分流与关键路径瘦身;virtualhost仅作域名终结,重定向和路由应下沉至cdn/nginx或redis,每个virtualhost绑定独立负载均衡集群,禁用非必要开销并透传真实客户端信息。

百万级流量不是靠单台 Apache 拼配置扛下来的,而是靠分层卸载 + 精准分流 + 关键路径瘦身。虚拟主机本身只是入口标识,真正决定承载力的是它背后怎么调度、怎么缓存、怎么避开 Apache 的重计算瓶颈。
把重定向和路由逻辑从 VirtualHost 里拿出去
Apache 的 <virtualhost></virtualhost> 适合做域名终结和基础转发,不适合做百万级规则匹配。比如你有 50 万条旧 URL 跳转,别写进 RewriteRule 里逐行扫描——CPU 会直接拉满。
- 改用
RewriteMap加载哈希映射文件,查找复杂度从 O(n) 降到 O(1) - 把跳转规则下沉到 CDN(如 Cloudflare 页面规则)或 Nginx 边缘层,Apache 只收最终干净请求
- 动态跳转(如活动页临时改链)走 Redis 查询服务,VirtualHost 内用
mod_proxy_fcgi或 Lua 调用,不写死规则
每个 VirtualHost 必须绑定独立的负载均衡集群
不要在全局定义 balancer,而是在 <virtualhost></virtualhost> 块内定义专属集群,避免跨域名干扰:
- 启用
mod_proxy_balancer、mod_lbmethod_bytraffic、mod_slotmem_shm - 每个后端节点配
failonstatus=503 hcmethod=GET hcuri="/health"实现自动摘除 - 权重按实际能力设(如高性能机器
loadfactor=5,普通机器loadfactor=2) -
ProxyPass "/api/" "balancer://api/"这类转发必须带尾部斜杠,且ProxyPassReverse严格对应
禁用一切非必要开销,只留最简响应链
PHP中文网提供Apache 2.4.62 官方 tar.gz 源码包下载,通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
- 对已知代理路径(如
/api/、/static/)关闭KeepAlive:<locationmatch>KeepAlive Off</locationmatch> - 禁用访问日志:
SetEnvIf Request_URI "^/api/.*" no-log+CustomLog ... env=!no-log - 关闭
ServerSignature和ServerTokens,减少响应头体积 - 静态资源强制缓存(CSS/JS/图片设
Cache-Control: public, max-age=31536000),让 CDN 或浏览器直取
反向代理时透传真实客户端信息不能省
后端服务依赖 IP 和协议做风控或灰度,Apache 默认会覆盖:
-
ProxyPreserveHost On保证 Host 头不变 -
RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}e" -
RequestHeader set X-Forwarded-Proto "https"(HTTPS 终结场景) - 关掉自动加头:
ProxyAddHeaders Off,避免重复或错误字段
不复杂但容易忽略










