之前我在树莓派上使用 Nginx 配合 autoindex 作为文件服务器,但它的界面太过简陋,于是找到一个 fancyindex 模块让它变得能看些。
在用的这个 Nginx 是用包管理安装的,为了防止包管理的混乱,还是用动态模块比较好,避免重新编译或者覆盖安装等。fancyindex 目前已经支持用作 Nginx 的动态模块。

首先当然是获取 fancyindex 的源码,GitHub

1. 获取当前 Nginx 的信息

新编译动态模块的配置参数需要和原 Nginx 一致,否则二者不能兼容。nginx -V 得到它的版本,还有构建时的配置参数,把参数复制下来。

2. 构建动态模块

动态模块虽名为“动态”,但构建时仍需 Nginx 本体的源码。根据上面得到的版本,去 Nginx 官网下载对应源码并解压。
进入源码目录,运行 configure 脚本时,带上刚刚复制的配置参数,再加上 --add-dynamic-module=[fancyindex 模块源码的目录]
最后 make modules 只编译模块。如果 make 则将编译所有内容,显然没有必要。编译完成,模块在当前的 objs 目录下。

3. 载入模块

把 objs 中的模块文件拷贝出来,sudo cp objs/ngx_http_fancyindex_module.so /usr/local/lib
再在 nginx.conf 全局设置中加入 load_module [模块文件路径];
运行 sudo nginx -t 进行测试,无误的话,reload nginx 即可载入模块。


现在可以用 fancyindex 替换简陋的 autoindexfancyindex 还支持自定义 CSS 等,还有个现成的主题。
查看 fancyindex 的详细文档,有更多选项可以定制。