织梦cdn配置需要注意什么

给织梦站点接入 CDN 是提升访问速度、降低源站带宽的常见手段。但织梦是静态生成 + 动态接口混合的站点,CDN 配置不当会出现“更新文章前台不刷新”“后台登录串号”“图片 404”等问题。本文梳理接入 CDN 时必须注意的关键点。

一、明确哪些内容走 CDN

织梦站点资源分两类:

建议只把静态资源接入 CDN,动态接口走源站,避免缓存登录态、表单提交等动态数据。

二、回源配置

1. 回源 Host

CDN 回源时必须带正确的 Host 头,否则 Nginx 会返回默认站点。在 CDN 控制台把“回源 Host”设为 www.yourdomain.com

2. 回源协议

源站是 HTTPS 时选“协议跟随”,是 HTTP 时选 HTTP。混用会出现混合内容告警。

3. 回源鉴权

建议在 Nginx 加一层回源鉴权,防止源站 IP 被直接访问:

location / {
    if ($http_x_origin_key !="your-secret-token") {
        return 403;
    }
    # 正常处理
}

CDN 控制台设置回源时携带 X-Origin-Key: your-secret-token 头。

三、缓存规则配置

# 图片/字体/视频:30 天
*.jpg *.png *.gif *.webp *.mp4 *.woff2  → 缓存 30 天,不回源

# CSS/JS:7 天
*.css *.js  → 缓存 7 天

# HTML:短缓存或回源验证
*.html  → 缓存 5 分钟,必须回源校验 ETag

# 动态接口:不缓存
/plus/* /dede/*  → 不缓存,直接回源
HTML 缓存时间不要超过 5 分钟,否则百度更新收录后用户长时间看不到新内容。配合 must-revalidate 让 CDN 每次都校验源站。

四、HTTPS 与证书

五、织梦模板路径替换

把模板里静态资源路径替换成 CDN 域名:

<link rel="stylesheet" href="{dede:global.cfg_cdnurl/}/templets/default/style.css">
<img src="{dede:global.cfg_cdnurl/}/uploads/allimg/2026/1.jpg">

在后台 系统 - 系统基本参数 添加自定义变量 cfg_cdnurl,值为 https://cdn.yourdomain.com,便于统一切换。

六、常见坑

1. 后台登录状态丢失

如果把 /dede/ 也走了 CDN,Cookie 会被缓存导致串号。务必把 /dede/ 加入 CDN 不缓存白名单。

2. 搜索结果被缓存

/plus/search.php?q=关键词 一旦被缓存,所有人搜到的都是同一个结果。该 URL 必须配置“不缓存”。

3. 图片 404

新上传的图片 CDN 没有缓存时回源拉取,如果回源 Host 错误或源站 403,CDN 会缓存 404 状态码。建议在 CDN 控制台设置“4xx 状态码不缓存”。

4. IP 显示为 CDN 节点 IP

开启 CDN 后 PHP 的 $_SERVER['REMOTE_ADDR'] 变成 CDN IP,导致 IP 限制、统计失效。在 Nginx 配置:

set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;
real_ip_recursive on;

七、刷新与预热

更新文章后,对应 URL 要在 CDN 控制台“刷新缓存”。批量更新时可提交目录刷新,URL 形如 https://cdn.yourdomain.com/a/2026/0729/。重要栏目首页建议预热,让节点提前拉取。

八、注意事项

接入 CDN 不是一劳永逸,建议把“缓存规则 + 回源鉴权 + 刷新流程”写成站点运维 SOP。上线后用 Lighthouse 多地测速,结合 CDN 命中率与源站带宽曲线持续调整,让 CDN 真正为织梦站点起到加速与减压的作用。