840 字
4 分钟
Nginx 做一个简单的云盘
2021-12-22

前言#

之前我通过 Zfile 和 Nginx 进行搭配1,成功地搭建了一个云盘,我之前也想用 filegator 搭建,但它只支持 apache。

本来 Zfile 用的还行,简洁的风格用起来很舒服,但时间一久就出现了一些问题,比如生成直链后如果删除文件,直链还依旧会存在,时间依旧就堆积起来。

其次是它毕竟是一个独立软件,如果没有进行配置,每次服务器重启就需要重新启动,并且虽然有用户系统,但上传文件还是需要通过 FTP 服务。

也碰巧,最经从 Wordpress 转到了 Hexo,静态网站,就成我的一个比较喜欢的点,同时也想起来了一些之前看到的非常精简的资源网站:

这种精简到极致的网站,简直完美戳中我的 XP,根据我浅薄的经验,基本就断定这是 Nginx 的默认界面了,调查了一下,发现非常简单就能实现,下面就是我用 Nginx 做一个简单云盘的配置。

开启 autoindex#

想要让 Nginx 开启目录索引需要进行文件配置,用来开启自带的 autoindex 模块:

Terminal window
vim /etc/nginx/sites-available/default

我这里使用的是我的子域名 pan.zodiaclab.top 作为演示,新增一段虚拟主机配置:

# File pan
server {
listen 80;
server_name pan.zodiaclab.top;
root /var/www/pan;
# 开启 autoindex
autoindex on;
# 将 kB、MB、GB 作为文件大小,否则就是 bit 二进制大小
autoindex_exact_size off;
# 启用服务器时间
autoindex_localtime on;
# 将网页以 html 的形式进行展示
autoindex_format html;
}

如果有其他需求,更详细的配置也可以参考官方文档2

中文乱码#

如果你按照我上面的进行配置,最后会得到如下画面:

显示结果中,中文是乱码的,这肯定不行,而这种问题,第一反映肯定是字符编码出了问题,换一下就行。

还是之前的 Nginx 配置文件,将配置修改为:

server {
# 设定字符集为 utf-8
charset utf-8;
...
}

配置完成并保存后,重启服务器:

Terminal window
service nginx restart

最终就能得到如下效果了:

fancyindex 主题#

这里介绍一个 Nginx 索引目录的主题 fancyindex,原本是一个网友做的插件,后来被官方采纳了3

I have compiled this module with NGINX 1.0.10 on a server running Debian Squeeze - however the README only talks about NGINX 0.8

但我大致看了一下官方文档4,虽然文档说明并没有进一步进行更新,只停留在了0.8,但有人成功在 1.0.10 以及 1.12.2 上成功编译了插件。

由于需要重新编译 Nginx 有一定风险,这里就单纯做个介绍,有兴趣的可以尝试。

有一说一,在重新设计之后,这东西是真能完成花来5

总结#

ok,简易云盘完成!

虽然从大众视角来看,可能这样的页面并不比 Nextcloud 或 Zfile 美观,但对我而言它却恰巧符合我的需求。

没有什么花里胡哨的东西,仅仅保留了一个网络云盘目录检索和基本下载的功能,完美!

Footnotes#

  1. Nginx 使用二级域名指向同一服务器下的不同端口

  2. Module ngx_http_autoindex_module

  3. nginx使用fancyindex目录索引

  4. Fancy Index

  5. nginx+fancyindex漂亮目录浏览带搜索功能

Nginx 做一个简单的云盘
https://fuwari.vercel.app/posts/建站/nginx/nginx-做一个简单的云盘/
作者
Asuwee
发布于
2021-12-22
许可协议
CC BY-NC-SA 4.0