之前一直在用又拍云的CDN加速,除了感觉又拍云的价格比七牛云CDN贵一些外,其它的如CDN管理与控制功能都觉得非常不错,而且又拍云也在不断地将新技术,例如TLS 1.3、Https 2等加入到了CDN中,可以说是国内专业做CDN这一块算是不错的。
不过,非常可惜的是由于从Chrome 70 开始已经不信任 Symantec 证书了(当然其它的浏览器如Firefox等也会跟着做),又拍云给的二级加速域名使用的SSL证书当前已经无法在Chrome最新的开发版使用了,好友Zxilly也提醒了我,让我注意到了这个问题。
咨询了又拍云客服说会尽快更新二级域名SSL证书,但是考虑到用户体验,在又拍云CDN没有更换SSL证书之前还是将它替换为百度云CDN和百度云BOS。百度BOS云存储+百度云CDN使用起来与又拍云CDN已经差不多了,有一键自动镜像功能,同时也支持Https 2。
原来使用又拍云CDN的网站可以无缝切换到百度云CDN上,实际图片、JS、CSS等静态文件加速。从我个人的使用体验来看,又拍云相对于百度云CDN来说收费的价格更高,因为又拍云除了要收流量带宽费,还要收请求费,而且海外的请求费还更贵。
本篇文章就来分享一下百度云存储BOS+百度云CDN实现网站静态文件一键镜像和CDN加速的方法,更多的CDN加速方法请参考:
PS:2018年12月28日更新,需要更强大的CC和DDos防护可以使用CF,相关的教程:CloudFlare免费CDN加速-CloudFlare加速,DNS解析,SSL证书和防DDoS攻击。
网站:
进入到百度云管理平台,点击“新建Bucket”,然后选择存储区域,目前有苏州、广州、北京和香港四个存储区域可供选择。(点击放大)
如果你是用来存放私人数据的话,可以选择“私有”,用作网站静态文件外链的话可以选择“公共读”,相关的说明如下:
私有:只有用户本人可读写指定Bucket中的数据
公共读:任何用户均可读取Bucket中的数据,写操作需进行身份验证
公共读写:所有人均可读写Bucket内的Object,无需身份验证。该权限安全风险极高,为确保您的数据安全,请谨慎选择
注:可在Bucket设置-权限设置里进行更灵活的权限管理,如防盗链等
百度BOS管理面板可以直接上传、删除存储文件。
直接拖放文件到网页中即可,最大支持上传5GB的文件。
百度云BOS还提供了一个BOS桌面客户端,你可以下载该软件。
然后使用百度云的API登录到BOS桌面客户端。
这是百度BOS桌面客户端的界面,上传和管理文件都挺方便的,还可以同步文件。
这是百度BOS的管理操作界面,主要功能有权限设置、CORS设置、监控信息、镜像回源、日志设置、生命周期、跨区域同步、服务端加密、静态网站托管。(点击放大)
百度BOS还支持静态网站托管,如果你用的是静态博客的话,则可以将文件上传到百度BOS中直接被用户访问。
想要使用百度云存储BOS自动镜像存储,我们需要在“镜像回源”中绑定一个网站。
现在使用百度BOS的域名访问请求原网站的文件,如果BOS中没有这个文件,那么会自动将源站的文件下载到CDN节点上,第二次访问的话直接访问到CDN节点上的文件了。
我们也可以在BOS中看到自动镜像存储下来的文件。
刚才我们已经为百度云BOS设置了自动镜像存储,现在我们只需要将网站的图片、JS、CSS等静态文件的URL替换成CDN的URL就可以实现无缝切换到CDN了。
如果你正在使用Wordpress缓存类的插件,那么可以直接在缓存类插件中设置CDN加速,也可以使用一些单独的CDN加速插件来达到替换URL的目的,例如CDN Enabler、BunnyCDN – WordPress CDN Plugin等。
更换URL后,我们就可以看到图片、JS、CSS等静态文件已经全部切换到百度云CDN加速了。
百度云BOS中有新文件上传或者删除原有的文件如何做到自动更新CDN节点上的URL?其实百度云BOS中已经提供了类似的设置,进入到“缓存配置管理”中就可以开启自动清除CDN缓存了。
百度云BOS防盗链。进入到“Bucket权限设置”,然后选择自定义权限。
选择添加用户权限,这里我们就可以使用“Referer”来控制访问,添加你允许访问的域名,例如wzfou.com,google.com,baidu.com等等。
从测试结果来看,百度云CDN并没有提供海外加速的CDN节点,节点都是国内的,这一点不利于海外的朋友访问网站实现加速。
百度云CDN防盗链。进入到百度云CDN的域名管理面板,选择“访问控制”,这里就可以使用IP黑白名单或者Referer黑白名单来控制域名访问。
CORS是一个W3C标准,全称是”跨域资源共享”(Cross-origin resource sharing)。它允许浏览器向跨源(协议 + 域名 + 端口)服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。
挖站否wzfou.com在使用百度云CDN的过程中就遇到了 引用woff/ttf等字体的CORS问题,报错如下:
Access to Font at ‘https://wzfou.cdn.bcebos.com/wp-content/plugins/anspress-question-answer/templates/css/fonts/anspress.woff?8lwej9’ from origin ‘https://wzfou.com’ has been blocked by CORS policy: ……. Origin ‘https://wzfou.com’ is therefore not allowed access.
如下图:
解决的办法就是在百度云CDN中添加CORS跨域请求源,选择“高级设置”,然后“设置HTTP头”,主要是添加Access-Control-Allow-Origin和Access-Control-Allow-Methods,如下图:
其它的HTTP头你可以根据自己的需要来添加,参数详细解释如下:
Cache-Control:指定浏览器请求和响应遵循的缓存机制
Expires:指定浏览器响应对象的过期时间
Content-Type:指定浏览器响应对象的内容类型
Content-Disposition:激活自定义资源下载设置,以及下载时默认文件名
Content-Language:指定资源在客户端(如浏览器)响应的语言
Access-Control-Allow-Origin:指定跨域请求时,允许访问资源的请求来源
Access-Control-Allow-Methods:指定跨域请求时,允许的跨域请求方法
Access-Control-Max-Age:指定跨域请求时,对特定资源的预请求返回结果的缓存时间
Access-Control-Expose-Headers:指定允许访问的自定义头信息
注意:选择“节点到端response生效”设置HTTP响应头,选择“节点到源站request生效”设置HTTP请求头。由于 HTTP响应头配置是针对域名,因此一旦配置生效,用户对该域名下任意一个资源的响应消息中均会加入所配置头部。如下图:
百度云BOS设置CORS。如果你的网站是直接引用的百度云BOS的外链URL,那么还需要到百度云BOS中配置CORS跨域访问问题。如下图:
合理设置缓存过期时间有利于加快静态文件的访问速度,百度云CDN设置缓存过期时间有两种方式,一种是在“缓存配置”中可以对HTTP Header设置缓存控制头Cache-control,支持文件后缀名、目录、状态码和精确文件的配置。
另一个则是在“配置HTTP头”直接配置CDN的URL的Http头,在这里可以直接设置Cache-Control和Expires控制头。
用了一段时间后发现百度云存储BOS和百度云CDN相对于又拍云来说有价格优势,百度云存储的BOS存储费用非常低,如果存储量在1GB以下的话费用几乎可以忽略不计,一天差不多一毛钱不到。
另外,百度云CDN的流量带宽费用也比较便宜,现在100GB流量是18元,足够一个中型的网站来跑一个月了。
当然,就和我上次在百度云服务器VPS主机使用与性能简单评测中所吐槽的那样,百度这个公司的文化真的是“重技术轻服务”型的,百度云CDN和BOS产品做得不错,只可惜帮助文档真得不如“重运营”的阿里云的文档具备易操作性。
文章出自:挖站否 https://wzfou.com/baidu-bos-cdn/,版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。
文章更新于: %s = human-readable time difference 上午10:05
查看评论
最坑的还是https。。不开还不行 开了就费钱,谁在D几下就卖房子吧。。。
百度bos在今天被adblock的"EasyList China+EasyList"拦截了
规则地址是:https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt
现在用chrome打开wzfou是一片混乱...
bcebos.com,这下完了。
你好Qi,按着你的教程,我用了百度cdn,开始也是遇到跨域加载的问题,后来在CDN里加了Access-Control-Allow-Origin头,就好了,我就没再加Access-Control-Allow-Methods头;
可是,等我加了CDN的防盗链,.ttf .woff就又不能加载了,报“Failed to load resource: the server responded with a status of 403 (Forbidden)”错误。Qi站,知道怎么解决吗。[可怜]
有遇到过,应该是还是跨域设置的问题。如果还是不能解决问题,试着尝试将.ttf .woff后缀排除在CDN外,应该就可以了。
qi 百度 腾讯 阿里这三个自带云存储的外网访问的话要不要流量费啊?我想把国外服务器的文件挂上面进行加速
要的,流量还挺贵的。
要备案吗
@Qi 百度云的cdn 国外访问(也可能是某些地区)的话静态资源无法加载,我试了自己的和你的网站都有这种情况。
你的github评论不加载。
百度好像没有境外节点,都是走国内的。又拍倒是有,但是价格又太贵。
这个还要实名认证?……还要刷脸
是的,需要。
最近也在纠结于使用哪家的云存储,之前看到有评论说七牛被DD时容易赔个海景房的段子,后来仔细研究了一下阿里、七牛、腾讯的文档,最后选择了腾讯,阿里可以设置异常流量阙值,进入黑洞时间,但所产生的流量费用用户自行承担;七牛没找到具体说明;腾讯明确说明DD流量不收费,使用上也还好。
腾讯的CDN是不是没有镜像功能?
镜像?这个我没用过,不太懂。
Qi,你使用瓦工的CN2 Gia访问真的很快,但瓦工现在配置差不多的gia套餐都得100刀左右,太贵了,所以我现在想法是弄个配置好点+线路一般+便宜的美西vps,然后用瓦工Gia Nginx反代,这样是不是可行。
可行,反代的时候建议对页面进行缓存,这样效果较好。
这样可以,在速度上会有提升,但是网站动态数据太多的话,反代的效果会有折扣。
我的站没啥访问量,试了一下,赶脚速度还可以。
Qi,现在用的是瓦工Gia的哪个套餐,Beta吗?
是的,beta版本的。
upyun技术上还是比较先进的,tls1.3 webp和h265 还有边缘规则 都挺好用,还有letsencrypt特别适合懒人(连每年申请一次免费都不用)。
腾讯cos也可以,就是逻辑比较奇怪,用图片处理得去开通万象优图(不另外收费),用另一个域名来访问图片。
七牛现在回收测试域名,弃坑了。(虽然已经备案)
七牛是自暴自弃了?不过,又拍现在也不提供二级域名了,但是至少之前的不回收。腾讯COS可以自动镜像吗?
可以,在【回源设置】里。但是逻辑一样比较奇怪,当文件不存在的时候他会302到源站并后台下载而不是类似反代一样。
试用了一下,发现有问题,不存在的话直接302跳转。但是又没有看到下载的内容。
你好,请教一下。我按照你的步骤做的,但是使用之后网页架构混乱,浏览器报错。js 之类的无法加载 Failed to load resource: net::ERR_CERT_COMMON_NAME_INVALID
是不是没有设置好路径?还有读写权限?
读写权限是选择共有读私有写,设置路径是指源站还是?
谢谢你的回复。
读写权限应该没有错。设置是在CDN后台中设置。也可以加我QQ或者微信详聊。
谢谢站长的回复
我自己瞎弄弄就好了。谢谢你
已经备@案(qi为啥不做自动替换?)
其实是可以自动替换的。[嘻嘻]
小站,就不考虑收费的CDN了,已经bei按,CDN和云存储是选择又拍云还是腾讯云?他们都有一定的免费额度
腾讯云吧,又拍云免费额度要挂他们的链接。