前言
建站大半年一直没有太过注重网站的速度.主要是因为新站访问量过低,没有部署的必要,其次就是本人实在是不太了解CDN相关的知识.现在访问量逐渐增加,为了保证网站的访问体验,在网上查找了相关教程,同时也咨询了热心网友后,正式把本站部署到了腾讯云CDN.
为方便后期复用的需求,本文将记录此次部署的全部流程,同时也可以供大家参考.
本文为 Stille 原创文章.经实践,测试,整理发布.如需转载请联系作者获得授权,并注明转载地址.
前期环境
由于CDN的设置比较特殊,请不要参照多篇教程对比设置,以至于会出现无法登录后台,无法实时显示评论等问题.本教程是以Typecho博客程序并使用handsome主题为例.
本站服务器相关环境
- LNMP环境
- 部署SSL证书并强制跳转HTTPS
- 顶级域名
ioiox.com
配置301跳转到二级域名www.ioiox.com
为主用域名
添加域名
腾讯云 - 控制台 - 内容分发网络
域名管理 - 添加域名
- 域名配置 - 添加顶级域名和www二级域名
- 源站类型 - 自有源站
- 源站设置 - 你的服务器IP
也可以只添加一个主用域名,必须确定已经配置好301跳转访问你的主用域名
- 业务类型 - 静态加速
- 提交 - 缓存过滤可以等会再详细配置
管理域名
添加成功后点击域名右侧的管理
基本配置
- 确认域名,业务类型,源站信息,回源配置无误,保持默认即可.
访问控制
- 过滤参数配置 - 开启
- 防盗链配置 - 根据实际情况配置
- IP黑白名单配置 - 根据实际情况配置
- IP访问限制配置 - 开启 10-30QPS即可
- 视频拖拽 - 默认关闭
缓存配置
- 缓存过期配置 - 高级缓存过期设置:默认关闭
- 新增缓存配置 - 参考下图
如不懂请保持与图中顺序和参数一致,以避免一些问题.
以下给出文本以方便复制
/usr/themes/handsome/usr/img
/usr/uploads
.php;.jsp;.asp;.aspx
.jpg;.jpeg;.png;.bmp;.gif;.psd;.ico;.tga;.imb;.tiff;.svg;.woff;.ttf;.woff2
.css;.js;.txt;.doc;.wri;.docs;.dot;.xml;.log;.bat;.csv
注意图中首页缓存时间为1天,也可以根据更新文章的频率高低,来适当降低刷新时间.建议1-6小时之间皆可.
- 状态码缓存 - 默认
- HTTP头部缓存配置 - 开启
如果HTTP头部缓存配置开启,需关闭源站的HSTS,避免头部冲突.
一般情况下Nginx和Apache默认是没有配置过HSTS的.你也可以自行搜索相关教程来再次确认是否开启.
一般情况下Nginx和Apache默认是没有配置过HSTS的.你也可以自行搜索相关教程来再次确认是否开启.
回源配置
- Range回源配置 - 开启
- 回源跟随301/302配置 - 默认关闭
回源跟随301/302配置请一定不要开启,否则会出现无法登录的情况.
安全配置
- 鉴权配置 - 默认关闭
高级配置
- 带宽封顶配置 - 开启并根据实际情况配置
- HTTPS配置 - 前往配置
- 配置证书 - 可上传自有证书,也可以在腾讯云免费申请.
- 选择回源方式 - 协议跟随
- HTTPS配置 - 开启强制跳转HTTPS
- 跳转方式设置 - 301跳转
- HTTP2.0配置 - 开启
- SEO优化配置 - 开启
- HTTP Header配置 - 添加HTTP Header
添加HTTP Header 可使你的站点使用CDN时SSL证书等级达到A+级
选择自定义参数
Strict-Transport-Security
max-age=31536000; includeSubdomains; preload;
- 智能压缩 - 启用
请自行检查你的源站是否开启Gzip智能压缩,如已经开启,此处可关闭.
配置完成
此时需将域名进行CNAME解析到CDN为你生成的CNAME地址上,完成CDN部署.如你和我一样配置了两个域名,可以保持两个域名配置相同,如设置过301跳转到主域名,也可仅配置主域名.
进阶配置
手动刷新CDN缓存
如因网站信息更变过多,可以在腾讯云CDN后台手动刷新全站缓存.具体位置在控制台-内容分发网络-左侧的刷新预热,可以根据批量URL或者文件目录的形式刷新资源.
解决首页访问延迟过高
如果是严格按照本教程使用腾讯云CDN,可以修改php.ini解决首页延迟过高的问题,否则不建议使用.
修改你服务器中的php.ini文件,查找session.cache_limiter
参数,修改为session.cache_limiter = none
并重启php.下图为修改前后的差别.
本站为军哥LNMP.org的1.6版环境,php.ini在/usr/local/php/etc目录下,php重启命令为/etc/init.d/php-fpm restart 仅供参考.
配置CDN后获取访客真实IP
网站在部署CDN后,一般无法获取访客真实IP,只能获取各CDN节点IP,解决此问题可修改站点根目录下的config.inc.php
添加以下代码:
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
$_SERVER['REMOTE_ADDR'] = $list[0];
}
结语
感谢网友寒夜方舟
的耐心解答,帮我完成了这次CDN部署.来源链接请参考:
文中提到的301跳转和强制HTTPS,可以参考以下链接:
本文为 Stille 原创文章.经实践,测试,整理发布.如需转载请联系作者获得授权,并注明转载地址.
22 条评论
你好博主,我使用百度的CDN服务后,进入博客发现提示“正版付费用户在授权平台添加域名”,我进入HandSome的官方域名授权网站授权域名后,仍然无法进入,但我关闭CDN服务后可以正常进入,知道是什么原因吗
如果我想保留首页的登录功能我应该怎么设置呢,现在是情况是我用后台地址可以登录,但是首页右上角的登录显示密码错误,我已经设置首页为不缓存了
这个我没试过.
有一定局限性
如果开放了前台注册和登录功能的话,建议不要缓存首页,会导致前台登录密码错误 >﹏<
是的,没办法,只能取舍,我是没开放注册,首页开启缓存,这样能保证首页速度.
更新了文字就手动刷新下 cdn
测试了在 config.inc.php 里配置了上面获取真实ip的代码,但nginx访问日志还是CDN的ip,也重启过了服务,不知道什么原因