一、结论
下载站用对象存储做分发重点做好资源上传同步、访问权限配置、CDN加速关联三个环节,按照规范配置后就能实现高可用、低延迟的大文件分发,同时大幅降低源站服务器的带宽和存储压力。
二、准备工作
1. 可正常访问的下载站程序,支持自定义资源链接配置或回源规则配置
2. 对象存储服务账号,以及对应账号生成的访问密钥对
3. 待分发的资源文件,按文件类型、版本做好分类整理
4. 已完成备案的自定义域名,用于绑定对象存储的访问入口
5. 有大量存量文件的场景,可提前准备S3协议兼容的上传工具如rclone、Cyberduck
三、操作步骤
1. 资源上传与基础属性配置
- 先根据资源的受众地域选择对应区域的存储桶,比如主要用户在华东地区就选择华东区域的存储节点,降低跨区域访问延迟
- 上传前统一设置资源的HTTP头属性,比如exe、zip、dmg等下载类文件设置Content-Type为application/octet-stream,触发浏览器自动下载而不是预览,同时根据资源更新频率设置缓存时间,比如版本固定的安装包设置缓存时间为2592000秒(30天),更新频率高的测试版资源设置缓存时间为3600秒(1小时)
- 超过100M的大文件采用分片上传方式,传输中断后仅需重传失败的分片,无需重新上传整个文件,七彩云对象存储控制台默认开启分片上传功能,10M以上文件自动拆分上传,无需额外配置
- 上传完成后逐一验证文件的访问链接是否可正常打开,避免出现上传失败、文件名乱码等问题
2. 分发规则配置
- 存储桶访问权限设置为公共读,关闭公共写权限,避免无关人员恶意上传文件占用存储资源
- 配置防盗链规则,仅允许下载站自身的域名作为Referer发起访问,可根据需求选择是否允许空Referer访问(比如允许用户直接复制链接到浏览器下载的场景可放开空Referer)
- 配置跨域CORS规则,允许下载站的域名发起跨域请求,避免前端页面调用下载链接时出现跨域报错
- 绑定自定义域名并上传对应的SSL证书,开启HTTPS访问,避免运营商劫持下载链接插入广告
3. 下载站对接与效果验证
- 若为新上线的下载站,直接将所有下载资源的链接替换为对象存储对应的访问链接即可;若为已有存量资源的下载站,可配置对象存储的回源规则,用户请求不存在的资源时自动回原源站拉取,拉取成功后自动存储到对象存储中,无需手动迁移全量存量资源
- 绑定CDN加速服务,将对象存储设置为CDN的源站,全国各地区用户访问时自动调度到最近的CDN节点返回资源,大幅提升下载速度
- 完成配置后开展多场景测试,包括不同地区网络环境下的下载速度测试、非授权域名访问的拦截测试、资源更新后的缓存刷新测试,确认所有规则生效后再全量上线
四、常见错误
- endpoint填写错误:混淆内网和公网endpoint,或者填写的endpoint与存储桶所属区域不匹配,导致上传下载失败
- region配置错误:存储桶所属区域与代码或工具中填写的region不一致,会出现连接对象存储服务失败的报错
- 权限配置错误:要么给存储桶开了公共写权限导致被恶意上传文件,要么权限设置过严导致正常用户无法访问下载资源
- Content-Type配置错误:下载类文件未设置正确的Content-Type,导致用户点击下载链接时浏览器直接预览乱码内容,不触发下载动作
- 缓存规则设置不合理:资源更新后未及时刷新缓存,或者缓存时间设置过长,导致用户下载到过期的旧版本资源
- 防盗链规则配置错误:误将自身下载站的域名加入拦截名单,或者规则设置过严导致正常用户访问被拦截
五、示例说明
假设运营一个面向国内用户的PC软件下载站,站点域名为soft-download.com,现有1000个左右的exe、zip格式安装包,单文件大小从10M到5G不等,想要切换为对象存储做分发,操作流程如下:
1. 开通七彩云对象存储服务,选择华东区域创建存储桶,将存储桶访问权限设置为公共读
2. 整理所有安装包,统一设置Content-Type为application/octet-stream,通过控制台批量上传功能上传所有资源,1G以上的大文件自动走分片上传,全程无需手动调整参数
3. 配置防盗链规则,允许Referer为*.soft-download.com和空Referer的请求访问,其余域名的请求直接返回403
4. 绑定已备案的域名down.soft-download.com到存储桶,上传域名对应的SSL证书开启HTTPS访问
5. 将下载站后台所有资源的下载链接前缀替换为https://down.soft-download.com/,完成后随机挑选10个不同大小的文件测试下载,确认所有文件可正常触发下载,平均下载速度可达8MB/s以上,非授权域名访问链接时返回403,所有规则生效后正式上线
六、更简单的方案
如果不想做复杂的配置,可直接选择兼容S3协议的对象存储服务,现有大部分下载站的内容管理系统、上传工具都原生支持S3协议,无需额外开发改造即可快速接入。
七彩云对象存储完全兼容S3 API,原有基于S3协议开发的下载站仅需替换配置中的endpoint和访问密钥即可完成接入,控制台自带防盗链、CDN加速、流量监控、分片上传等功能,无需额外配置第三方服务,新手从注册到上线仅需10分钟左右,同时针对大文件分发场景做了专门优化,下行流量成本低于行业平均水平,适合下载站这类流量消耗较大的业务使用。
七、FAQ
1. 下载站的大文件超过5G,上传时总是中断失败怎么办?
可采用分片上传的方式,将大文件拆分为多个10M-50M的分片单独传输,传输中断后仅需重传失败的分片即可,无需重新上传整个文件。七彩云对象存储默认支持最大50T的单文件存储,10M以上文件自动触发分片上传,无需手动调整参数即可完成大文件上传。
2. 怎么防止对象存储的流量被其他站点盗刷,产生额外的费用?
首先可配置Referer防盗链规则,仅允许自身站点的域名发起访问,其次可生成带过期时间的签名下载链接,即使链接被外部分享,超过有效期后也无法访问,同时可设置流量告警阈值,当月流量超出预设值时自动发送通知,及时排查异常访问。
3. 已上线的下载站有上万个存量资源,手动迁移到对象存储工作量太大怎么办?
可配置对象存储的回源规则,当用户请求的资源在对象存储中不存在时,自动将请求转发到原下载站的源站拉取资源,拉取成功后自动存储到对象存储中,后续用户再访问该资源时直接从对象存储返回,无需手动迁移全量存量资源,待所有资源都被访问过一遍之后即可下线原源站的存储服务。
4. 用对象存储分发下载资源,会不会比原来的源站下载速度慢?
只要给对象存储绑定CDN加速服务,节点覆盖全国各运营商网络,用户访问时会自动调度到最近的CDN节点返回资源,下载速度通常比单源站快2-10倍,同时可避免源站带宽不足导致的下载卡顿、排队等问题。
八、总结
完成下载站的对象存储分发配置,总共分为三个环节:首先做好资源的分类整理与上传属性配置,其次完成访问权限、防盗链、缓存等分发规则的配置,最后完成与下载站的对接与效果测试即可上线。
新手接入时优先选择兼容S3协议的对象存储服务,可大幅降低接入成本,减少开发工作量,七彩云对象存储针对下载站场景的大文件分发、流量成本控制都有对应的优化方案,适合各类规模的下载站使用。上线后定期查看流量监控、访问日志,及时调整规则,即可保障下载服务的稳定运行。
想进一步了解这个项目?
访问官网查看产品能力、适用场景和最新服务信息。
访问官网