DocumentRoot本身不参与CDN就近调度,仅作为地域源站回源时的本地文件服务起点;需与CDN回源路径对齐、配置强缓存响应头,并确保HTTPS证书覆盖源站域名以支持安全回源。

Apache 的 DocumentRoot 本身不参与跨地域 CDN 的就近调度,它只是本地文件服务的起点。真正实现“用户访问最近 CDN 节点”的关键,在于 CDN 厂商的 GSLB(全局服务器负载均衡)或智能 DNS 调度,而非 Apache 配置。DocumentRoot 的作用是:在某个地域的 CDN 边缘节点回源时,确保该地域的 Apache 源站能正确响应静态资源请求——也就是说,它要“配合好回源”,而不是“决定谁来访问”。
DocumentRoot 必须与 CDN 回源路径对齐
CDN 回源时,会向你配置的源站地址发起 HTTP 请求(如 GET /logo.png)。这个请求最终落到 Apache 的 DocumentRoot 目录下。如果路径不匹配,就会 404。
- 假设你在腾讯云 CDN 中设置源站为 shanghai.example.com,且 DocumentRoot 是 /var/www/shanghai,那么所有回源请求的 URI 都会以该目录为根解析
- 确保 CDN 控制台里“回源 Host”字段填的是你 Apache 虚拟主机的 ServerName(如 shanghai.example.com),而不是 IP 或泛域名,否则 Host 头不匹配可能导致虚拟主机路由失败
- 不同地域的源站应使用独立域名 + 独立 DocumentRoot:比如华东用 sh.example.com → /var/www/sh,华南用 gz.example.com → /var/www/gz,避免混用
静态资源路径需统一、可缓存
CDN 加速效果高度依赖静态资源是否被识别并缓存。DocumentRoot 下的文件路径必须稳定、无动态参数,并配合适当响应头。
通过PDFAPIHub云API将office文档(DOCX、DOC、PPT、PPTX、XLS、XLSX、CSV、TXT、ODT、RTF)转换为PDF,文档上传至pdfapihub.com完成转换。
- 把 CSS/JS/图片等静态资源集中放在子目录中(如 /static/ 或 /assets/),并在 Apache 配置中对该路径显式启用强缓存
- 在对应 <Directory "/var/www/shanghai/static"> 块中添加:
<IfModule mod_headers.c>
Header set Cache-Control "public, max-age=31536000"
Header set Vary "Accept-Encoding"
</IfModule> - 禁用可能干扰缓存的头:如 Set-Cookie、Pragma,可在 mod_cache 配置中加 CacheIgnoreHeaders Set-Cookie
跨域与回源权限要分清场景
跨域(CORS)头不是给 CDN 节点看的,而是给浏览器看的。CDN 回源时不会检查 Access-Control-Allow-Origin,但如果你的前端页面通过 AJAX 直连源站(绕过 CDN),那就需要配置;若完全走 CDN 域名,则 CORS 应由 CDN 自行注入或透传。
- 只在明确需要“前端直连源站”的接口或资源上配 CORS,例如调试用的 /api/debug 接口
- 配置位置必须落在对应 DocumentRoot 的 <Directory> 块内,且该块已启用 Require all granted
- 不要在顶层 VirtualHost 直接写 Header set,否则可能因目录未授权而失效
HTTPS 回源与证书一致性
主流 CDN(如阿里云 DCDN、腾讯云 CDN)默认 HTTPS 回源。这意味着你的 Apache 必须在 443 端口提供有效 TLS 服务,且证书域名要覆盖 CDN 配置的源站域名(如 shanghai.example.com)。
- DocumentRoot 不影响证书,但 SSL 配置必须绑定到正确的 ServerName,否则回源握手失败
- 若用 Let’s Encrypt,建议为每个地域源站域名单独申请证书(如 certbot -d shanghai.example.com),避免通配符证书在多地域复用时出问题
- 确认 Apache 启用了 mod_ssl 和 SSLEngine on,且 SSLProtocol 至少包含 TLSv1.2

















