必须重新编译Nginx并显式添加--add-module=/path/to/ngx-fancyindex;动态加载不支持,需确认nginx -V含该参数,再配置fancyindex on等指令启用美化功能。

要让 Nginx 支持 fancyindex(美化目录列表),不能通过动态模块方式直接加载(Nginx 1.9.11+ 虽支持动态模块,但 fancyindex 官方不提供预编译的 .so,需源码编译进主程序),必须重新编译 Nginx 并在 configure 阶段显式启用该第三方模块。
确认当前 Nginx 状态与依赖
先检查是否已安装、版本及编译参数:
nginx -v nginx -V # 注意是大写 V,会输出 configure arguments
若输出中不含 --add-module= 指向 fancyindex 路径,说明未集成;同时确认系统有基础编译环境:
- 安装编译工具:
sudo apt install build-essential zlib1g-dev libpcre3-dev libssl-dev(Ubuntu/Debian)或sudo yum groupinstall "Development Tools"; sudo yum install pcre-devel zlib-devel openssl-devel(CentOS/RHEL) - fancyindex 依赖 Nginx 1.3.13+,推荐使用稳定版如 1.24.x 或 1.26.x
下载并准备 fancyindex 模块源码
进入临时工作目录,拉取官方维护的 fancyindex 仓库(注意:原作者已归档,现由 openresty 社区维护):
cd /tmp git clone https://github.com/aperezdc/ngx-fancyindex.git # 或使用 release 版本(更稳妥): # wget https://github.com/aperezdc/ngx-fancyindex/archive/refs/tags/v0.5.3.tar.gz # tar xzf v0.5.3.tar.gz
确保解压后路径清晰,例如:/tmp/ngx-fancyindex。该目录下应有 config 和 ngx_http_fancyindex_module.c 等文件。
下载 Nginx 源码并配置编译选项
不要用系统包管理器安装的二进制,必须下载对应版本的源码包:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
wget https://nginx.org/download/nginx-1.24.0.tar.gz tar zxf nginx-1.24.0.tar.gz cd nginx-1.24.0
执行 configure,关键是要带上 --add-module 指向 fancyindex 路径,并保留原有模块(参考 nginx -V 输出中的 configure arguments):
./configure \ --prefix=/usr/local/nginx \ --sbin-path=/usr/local/nginx/sbin/nginx \ --conf-path=/usr/local/nginx/conf/nginx.conf \ --error-log-path=/usr/local/nginx/logs/error.log \ --http-log-path=/usr/local/nginx/logs/access.log \ --pid-path=/usr/local/nginx/run/nginx.pid \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --add-module=/tmp/ngx-fancyindex \ # 其他你原来有的模块也补上,比如 --with-http_gzip_static_module 等
运行 make 编译,再 sudo make install 安装(不会覆盖旧配置,但会替换二进制和默认 conf)。
启用 fancyindex 并验证配置
编辑 /usr/local/nginx/conf/nginx.conf,在某个 location 块中添加:
location /files/ {
fancyindex on; # 启用目录浏览
fancyindex_exact_size off; # 显示人类可读大小(如 1.2M)
fancyindex_localtime on; # 使用本地时间而非 GMT
fancyindex_header "/header.html"; # 可选:自定义页头 HTML 文件路径
fancyindex_footer "/footer.html"; # 可选:自定义页脚
}确保该路径下有真实目录且 Nginx 有读取权限。测试配置并重启:
sudo /usr/local/nginx/sbin/nginx -t sudo /usr/local/nginx/sbin/nginx -s reload
访问 http://your-server/files/(目录需开启 autoindex 且无 index 文件),即可看到带图标、排序、搜索框的 fancyindex 界面。










