写在前面
- 如果你觉得这篇文章对你有所帮助,并且想要使用又拍云,可以通过我这个 -> 链接 <- 注册,你我都能得到
不要白不要的
奖励。(注意,又拍云绑定的域名需要是备案过的) - 如果你已经有 CDN ,可以跳过 又拍云 部分,直接看插件配置部分。
- 本篇文章对所有 CDN 都适用,这里以 又拍云 为例子作说明
又拍云更香?
上周在 V 站 发了个帖,安利了我写的一个 Alfred 插件,该插件可以方便地将图片上传到七牛云,顺便向大家安利了七牛。马上有 V 友跳出来说又拍云更香,免费流量比七牛云多 5 G,HTTPs CDN 流量也是算在免费套餐里边的。
趁着周末有点时间,去白嫖下又拍云。
又拍云联盟
没错。小标题 是 又拍云对开发者的白嫖活动的名字。我们加入这个联盟就能获得:
- 10 GB 免费存储
- 每个月 15 GB 免费 CDN 流量(HTTP[s] 都可以)
流程很简单。注册账号、在你的网站页脚添加又拍云的链接;填申请表。我是周六申请的,1个小时左右就收到了审核通过的通知。
Update(2022/12/02): 大家要留意一年的到期时间,快到期的时候去 联盟页面 申请续期。否则欠费就不好了,我就迟了几天,欠费 2 分钱 🙂
审核通过后,会发放一年份的代金券给你,到期再次申请即可。
CDN 配置
系统设计
不想看我啰嗦的同学,可以跳过系统设计这部分。配置部分以 又拍云 为例子叙述
从上图的设计可以看出,我把文件分为三类:
- 动态接口/文件:例如 WordPress 中的 php 接口。这类请求是动态的,不适合放到 CDN 缓存中(一直回源,没有意义)。域名使用 foamzou.com ,该域名解析到我的服务器里,执行 WordPress 程序
- 适合短期缓存的文件:指的是短时间不会发生变化,但仍然有可能变化的文件。例如 WordPress 的系统库文件
- 域名使用:cdn.foamzou.com,该域名做个 cname 解析到 CDN 服务
- 当 CDN 未命中资源,则回源到 cdn.foamzou.com ( IP: 回源设置的 IP )
- 适合长期缓存的文件:指的是几乎不会发生变化的资源文件。例如图片、第三方 css、js资源
- 域名配置同 2
- 给 CDN 配置一个对象存储桶
- 配置指定的路径从桶里取资源,没取到再回源到服务器
- 从服务器取到数据,存储到桶里
- 好处有 2 点
- 减少回源次数(毕竟对于同一个文件只会回源 1 次),节省服务器带宽
- 回源速度快(我在又拍云创建了个对象存储桶,CDN 和 存储 在同一个区域,速度当然比跨个公网访问我服务器快)
创建 CDN 服务
到 创建页面 :
- 加速域名:填一个新的域名,后面需要将该域名解析到 CDN 服务
- 源站设置
- 回源协议:我选了 HTTPS,如果你的源站点没有配置 SSL,就选 HTTP 吧。
- 源站地址:填你 WordPress 服务所在的域名。这里要注意,
加速域名
和源站地址
不能填同一个,否则就重定向循环了。- 这里也可以填域名,为了方便,我填了 foamzou.com。这样 CDN 回源时会先将 foamzou.com 解析为 IP 再用来请求 cdn.foamzou.com。
- 这里又拍云产品设计得不好,容易让人误以为会回源到 foamzou.com,其实不是的。到时候会这样回源请求:
curl -H"Host: 加速域名" http[s]://源站地址IP[或者 源站地址域名的IP]/xxx
- 也就是说,我还需要在我的 nginx 配置里的 server_name 多添加一个
cdn.foamzou.com
添加 CDN 域名解析
到 又拍云域名管理 页面,找到 cname 域名。然后到你的域名解析后台,添加一条 cname 记录。
添加 SSL 证书
到 HTTPS tab,给你的域名添加一个 SSL 证书。你可以添加自有证书,也可以在又拍云申请一个免费证书。具体步骤这里就不赘述了,配合去域名解析添加个 TXT 记录就行。
创建云存储
到这个 页面 创建服务。即,上边 方案设计 里的 Object Storage Bucket。我们期望将一般不会变化的资源放到这里。
配置回源到 bucket
到 回源管理 页面,开启 源站资源迁移
。
资源路径,我填写了 /wp-content/*
, /wp-includes/*
。我希望这两个路径的资源缓存到 bucket 里去。
CDN 其他配置项
又拍云还有很多配置项,例如支持 webp 响应等,大伙自行摸索吧。
至此,CDN 部分配置完毕。但此时面临一个问题,我们配置的 CDN 域名是 cdn.foamzou.com 。而此时 资源的域名是 foamzou.com。例如这张图片:https://foamzou.com/wp-content/uploads/2021/11/emoji-bg.jpeg。
WordPress 是否有插件,能够将指定路径的域名替换调呢?这样,我们可以通过 https://cdn.foamzou.com/wp-content/uploads/2021/11/emoji-bg.jpeg 访问资源。有的,WP Super Cache!
配置 WP Super Cache 插件
安装
到 官方下载页 下载插件,放到服务器 WordPress 目录下的 wp-content/plugins 目录里。解压它!
确保 wp-content 目录的用户组是 www:www
(以你实际 php-fpm 用户组为准),目录权限设置为 755 。确保 fpm 有权限写该目录。
编辑 wp-config.php ,在最后一行的 require 上一行,加上
define('WP_CACHE', true);
define('WPCACHEHOME', '/your-site/wp-content/plugins/wp-super-cache/');
拷贝文件
cp wp-content/plugins/wp-super-cache/wp-cache-config-sample.php wp-content/wp-cache-config.php
到 WP 管理后台 – 插件管理,启用该插件。
配置
WP 管理后台 – 设置页面,找到 WP Super Cache 设置
页面。
启用缓存功能。注意每个 tab 都要点底下的 保存/更新 按钮
开启 CDN 支持。该插件会将 包含目录
里 URL 的 Site URL
替换为 Off-site URL
。
最后
至此。 wp-content 和 wp-includes 底下的文件将走 CDN 加速。
无论是 CDN 配置 还是 WP Super Cache 插件配置,都还有很多有趣的配置,本篇文章就不再多写了,毕竟我也今天刚配置。大伙自行摸索吧。
欢迎留言交流。
1. 看起来,又拍云该功能的特性,不支持只根据扩展名使用。不过,如果你能确定目录层级,可能可以这样 /*/*/*.jpg ,我没试过,如果满足你的诉求,可以试试
2. 多吉云我没用过,你可以翻翻 CDN 看看
多吉云要标准储存桶才可以回源
我最近也打算换到多吉云储存桶,想找个仅仅有cdn域名这个选项的插件😂😂