WordPress 接入 CDN 非常简单。由于静态资源集中在 wp-content
和 wp-includes
下,给这两个目录新增一个域名来配置 CDN 加速,然后直接用 Nginx 的 sub_filter
模块将相关请求替换为 CDN 域名即可。
新增静态资源域名
新增静态资源域名,比如 att.annhe.net
,作为 CDN 加速的域名,让 wp-includes
和 wp-content
下的资源能从此域名访问到:
location /wp-includes {
root /wordpress/;
expires 30d;
}
location /wp-content {
root /wordpress/;
expires 30d;
location ~* \.(eot|ttf|woff|woff2)$ {
add_header Access-Control-Allow-Origin *;
add_header accpet */*;
}
}
静态资源替换为CDN域名
使用 sub_filter
模块配置 CDN 域名替换
# cdn
sub_filter 'https://www .annhe.net/wp-content/' 'https://attcdn.annhe.net/wp-content/';
sub_filter 'https://www .annhe.net/wp-includes/' 'https://attcdn.annhe.net/wp-includes/';
sub_filter_types *;
sub_filter_once off;
这种方式有个副作用,所有 域名/wp-content/
都会被替换成 CDN 域名,因此以上代码中 www
后有个空格,实际配置时请删除空格。
字体跨域问题
location ~* \.(eot|ttf|woff|woff2)$ {
add_header Access-Control-Allow-Origin *;
add_header accpet */*;
}
阿里云CDN相关配置
- 回源 Host 设置为源站域名
- 回源协议根据源站协议设置
- 回源 SNI 设置为源站域名
- HTTPS 证书可以开启阿里云提供的免费证书
- 访问控制配置 Referer 防盗链,建议加上常见搜索引擎的域名,例如
*.annhe.net *.baidu.com *.google.com *.google.com.hk *.so.com *.bing.com
- 带宽封顶建议设置一下,防止带宽使用过大
参考资料
1. https://nodeedge.com/wordpress-nginx-cdn-static.html
发表回复