读懂这篇文章,你需要:
- 有过一定的Nginx或类似产品的维护经验。
- 使用过nextcloud或类似的私有网盘系统。如果没有,可以通过阅读下方的文档了解。
- 了解并使用过至少一个云服务供应商的CDN服务。
相关文档:
部署后的站点展示:
背景
原先的下载站真的硬核到难以直视。由于我原先直接通过在Hexo上面添加链接以提供下载。这样不仅看起来丑陋,而且维护很不方便。
前一段时间接触到了h5ai这个好东西,之前也一直在维护自己的nextcloud,于是乎,想要改造下载站的欲望一发不可收拾。
需求分析
- 可以使用已有的CDN服务对所提供的下载内容进行加速;
- 下载内容的维护应当很方便,并且可以在不同的终端进行;
- 下载页面应当保持美观。
关键思路
把nextcloud的数据存储路径设置为h5ai的根目录。
具体操作
初次尝试
我一开始尝试使用CDN对nextcloud直接加速,但是之后发现,这是一件极其愚蠢的事。因为nextcloud使用的是动态页面,对这样的页面进行加速可谓是难上加难。即使我只对公开分享的页面进行加速也不行。实测:使用CDN,哪怕全站都设置成立即回源,也会出现无法上传文件的情况。
搭建nextcloud
这一点我不再赘述,因为资料很多,或者直接点击我上面的链接看官方文档。
配置h5ai
h5ai这一web index展示系统的部署相当简单,只要将下载的_h5ai目录放在所需要展示的目录下即可,这个目录可以是你的nextcloud个人文件存储根目录(一般为<path to nextcloud>/data/<your user name>/files
),也可以是其一个子目录:
配置Nginx
按照以下的套路来即可,注意index后面要加上/_h5ai/public/index.php
1 | server { |
配置CDN
这里以阿里云为例
业务类型暂时先选“图片小文件”,因为自己分享的图片比较多。
缓存过期时间:默认所有直接回源(emmm我实在没想知道哪些跟动态页面有关),权值为1;然后
jpg, png, bmp, zip, rar, 7z, exe, msi, doc, docx, ppt, pptx, xls, xlsx, pdf, apk, rmvb, rm, avi, mov, mp3, mp4, flac, wav, tar, gz, iso, bin, js, css, txt, svg, ico, psd, md
这些,是我整理的一部分常用文件扩展名,设置成30天缓存,权值为10。开启https并强制跳转
开启HTTP2
配置一下cname
ok
后记
现在看着舒服多了。
然后还发现了,其实,这样的话,我可以在我对nextcloud上开一个公共账户,这样就可以让我的小伙伴们,使用我这套系统,假装有一个CDN啦!毕竟备案还是一件麻烦的事情呢。