WordPress免插件接入CDN

WordPress 接入 CDN 非常简单。由于静态资源集中在 wp-contentwp-includes 下,给这两个目录新增一个域名来配置 CDN 加速,然后直接用 Nginx 的 sub_filter 模块将相关请求替换为 CDN 域名即可。

新增静态资源域名

新增静态资源域名,比如 att.annhe.net ,作为 CDN 加速的域名,让 wp-includeswp-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

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注