利用 Apache 配置实现 CDN 加速
可以通过两条路线实现:一是自建边缘缓存/反向代理(Apache 作为 CDN 节点),二是接入第三方 CDN 并用 Apache 正确“对接”与观测。前者适合内网分发、边缘节点等场景,后者适合面向全球用户的公网加速。
方案一 自建 Apache 边缘缓存或反向代理 CDN
启用必要模块
启用缓存、代理及压缩等模块(Debian/Ubuntu 使用 a2enmod):
sudo a2enmod cache cache_disk proxy proxy_http deflate headers expires
修改后重启:sudo systemctl restart apache2。
配置磁盘缓存(mod_cache_disk)
在全局或虚拟主机中开启磁盘缓存,示例仅对静态资源目录生效:
说明:将 /static/ 替换为你的静态资源路径;必要时可改为 CacheEnable disk / 全站缓存(谨慎设置动态内容)。
设置浏览器与 CDN 可见的缓存头(mod_expires、mod_headers)
为静态资源设置长期缓存,同时避免对带会话的资源误缓存:
提示:对需要登录/个性化页面设置不缓存或短缓存策略(如通过 env 条件或 SetEnv/RequestHeader 控制)。
启用压缩(mod_deflate)
减少传输体积、提升首屏速度:
反向代理与负载均衡(可选)
将 Apache 置于源站前作为反向代理,或做多源站负载均衡:
<VirtualHost *:80> ServerName example.com ProxyPass / http://backend-server/ ProxyPassReverse / http://backend-server/
<VirtualHost *:80>
ServerName example.com
ProxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/
<Proxy balancer://mycluster>
BalancerMember http://backend-1/ route=server1
BalancerMember http://backend-2/ route=server2
ProxySet lbmethod=byrequests
说明:Proxy 模块同样可与 CacheEnable 组合,实现“边缘缓存 + 回源”。
方案二 接入第三方 CDN 并用 Apache 正确对接
接入步骤
在 CDN 控制台添加源站(你的 Apache 站点域名/IP 与端口),将域名的 DNS CNAME 指向 CDN 提供的加速域名;等待解析生效后,用户请求将先到达 CDN 边缘节点。
源站 Apache 的安全与观测配置
验证与运维要点
验证缓存是否生效
使用 curl -I 查看响应头:
curl -I https://your-domain.com/static/app.js
关注 Cache-Control、Expires、以及 Age(Age>0 表示命中 CDN/代理缓存)。
日志与监控
通过 /var/log/apache2/access.log 与 error.log 观察命中率、回源情况与异常;必要时结合 mod_status 页面做运行时观测。
常见问题与优化