跳转至

fancyindex: NGINX Fancy Index 模块

安装

您可以在任何基于 RHEL 的发行版中安装此模块,包括但不限于:

  • RedHat Enterprise Linux 7、8、9 和 10
  • CentOS 7、8、9
  • AlmaLinux 8、9
  • Rocky Linux 8、9
  • Amazon Linux 2 和 Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-fancyindex
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-fancyindex

通过在 /etc/nginx/nginx.conf 的顶部添加以下内容来启用该模块:

load_module modules/ngx_http_fancyindex_module.so;

本文档描述了 nginx-module-fancyindex v0.6.0,于 2026 年 2 月 23 日发布。


Fancy Index 模块使得生成文件列表成为可能,类似于内置的 autoindex 模块,但增加了一些样式。这是可能的,因为该模块允许对生成内容进行一定程度的自定义:

  • 自定义头部,可以是本地的或远程存储的。
  • 自定义底部,可以是本地的或远程存储的。
  • 添加您自己的 CSS 样式规则。
  • 允许选择按名称(默认)、修改时间或大小排序;可以是升序(默认)或降序。

该模块旨在与 Nginx 一起使用,这是一个由 Igor Sysoev 编写的高性能开源 Web 服务器。

示例

您可以通过在您的 Nginx 配置文件中的 server 部分添加以下行来测试默认内置样式:

location / {
  fancyindex on;              # 启用花式索引。
  fancyindex_exact_size off;  # 输出人类可读的文件大小。
}

主题

以下主题展示了使用该模块可以实现的自定义级别:

  • Theme@TheInsomniac 提供。使用自定义头部和底部。
  • Theme@Naereen 提供。使用自定义头部和底部。头部包含一个搜索字段,可以使用 JavaScript 按文件名过滤。
  • Theme@fraoustin 提供。使用 Material Design 元素的响应式主题。
  • Theme@alehaa 提供。基于 Bootstrap 4 和 FontAwesome 的简单扁平主题。

指令

fancyindex

语法 fancyindex [on | off]

默认 fancyindex off

上下文 http, server, location

描述 启用或禁用花式目录索引。

fancyindex_default_sort

语法 fancyindex_default_sort [name | size | date | name_desc | size_desc | date_desc]

默认 fancyindex_default_sort name

上下文 http, server, location

描述 定义默认的排序标准。

fancyindex_case_sensitive

语法 fancyindex_case_sensitive [on | off]

默认 fancyindex_case_sensitive on

上下文 http, server, location

描述 如果启用(默认设置),按名称排序将区分大小写。如果禁用,排序时将忽略大小写。

fancyindex_directories_first

语法 fancyindex_directories_first [on | off]

默认 fancyindex_directories_first on

上下文 http, server, location

描述 如果启用(默认设置),将目录分组在一起并在所有常规文件之前排序。如果禁用,目录与文件一起排序。

fancyindex_css_href

语法 fancyindex_css_href uri

默认 fancyindex_css_href ""

上下文 http, server, location

描述 允许在生成的列表中插入 CSS 样式表的链接。提供的 uri 参数将原样插入到 <link> HTML 标签中。链接在内置 CSS 规则之后插入,因此您可以覆盖默认样式。

fancyindex_exact_size

语法 fancyindex_exact_size [on | off]

默认 fancyindex_exact_size on

上下文 http, server, location

描述 定义在目录列表中如何表示文件大小:可以是准确的,或者四舍五入到千字节、兆字节和千兆字节。

语法 fancyindex_footer path [subrequest | local]

默认 fancyindex_footer ""

上下文 http, server, location

描述 指定应在目录列表底部插入哪个文件。如果设置为空字符串,将发送模块提供的默认底部。可选参数指示 path 是否应被视为使用 subrequest 加载的 URI(默认),或者是否指的是 local 文件。

[!NOTE] 使用此指令需要 Nginx 内置的 ngx_http_addition_module

[!WARNING] 当插入自定义头部/底部时,将发出一个子请求,因此可以使用任何 URL 作为其来源。虽然它可以与外部 URL 一起使用,但仅支持使用内部 URL。外部 URL 完全未经测试,使用它们将导致 Nginx 在等待子请求完成时阻塞。如果您觉得外部头部/底部对您来说是必需的,请 告诉我

fancyindex_header

语法 fancyindex_header path [subrequest | local]

默认 fancyindex_header ""

上下文 http, server, location

描述 指定应在目录列表顶部插入哪个文件。如果设置为空字符串,将发送模块提供的默认头部。可选参数指示 path 是否应被视为使用 subrequest 加载的 URI(默认),或者是否指的是 local 文件。

[!NOTE] 使用此指令需要 Nginx 内置的 ngx_http_addition_module

fancyindex_show_path

语法 fancyindex_show_path [on | off]

默认 fancyindex_show_path on

上下文 http, server, location

描述 是否在头部后输出路径和结束 \</h1> 标签。这在您希望使用 PHP 脚本处理路径显示时非常有用。

[!WARNING] 只有在提供自定义头部的情况下,才能关闭此指令。

fancyindex_show_dotfiles \~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~~ :语法: fancyindex_show_dotfiles [on | off] :默认: fancyindex_show_dotfiles off :上下文: http, server, location :描述: 是否列出以点开头的文件。正常惯例是隐藏这些文件。

fancyindex_ignore

语法 fancyindex_ignore string1 [string2 [... stringN]]

默认 无默认值。

上下文 http, server, location

描述 指定在生成的列表中不显示的文件名列表。如果 Nginx 是使用 PCRE 支持构建的,则字符串将被解释为正则表达式。

语法 fancyindex_hide_symlinks [on | off]

默认 fancyindex_hide_symlinks off

上下文 http, server, location

描述 启用时,生成的列表将不包含符号链接。

fancyindex_hide_parent_dir \~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~~ :语法: fancyindex_hide_parent_dir [on | off] :默认: fancyindex_hide_parent_dir off :上下文: http, server, location :描述: 启用时,将不显示父目录。

fancyindex_localtime

语法 fancyindex_localtime [on | off]

默认 fancyindex_localtime off

上下文 http, server, location

描述 启用以本地时间显示文件时间。默认值为“off”(GMT 时间)。

fancyindex_time_format

语法 fancyindex_time_format string

默认 fancyindex_time_format "%Y-%b-%d %H:%M"

上下文 http, server, location

描述 用于时间戳的格式字符串。格式说明符是 strftime 函数支持的子集,行为与区域无关(例如,星期几和月份名称始终为英语)。支持的格式有:

  • %a: 星期几的缩写名称。
  • %A: 星期几的全名。
  • %b: 月份的缩写名称。
  • %B: 月份的全名。
  • %d: 作为十进制数的月份中的天数(范围 01 到 31)。
  • %e: 类似于 %d,作为十进制数的月份中的天数,但前导零被空格替代。
  • %F: 等同于 %Y-%m-%d(ISO 8601 日期格式)。
  • %H: 作为十进制数的小时(使用 24 小时制,范围 00 到 23)。
  • %I: 作为十进制数的小时(使用 12 小时制,范围 01 到 12)。
  • %k: 作为十进制数的小时(24 小时制,范围 0 到 23);单个数字前面有空格。
  • %l: 作为十进制数的小时(12 小时制,范围 1 到 12);单个数字前面有空格。
  • %m: 作为十进制数的月份(范围 01 到 12)。
  • %M: 作为十进制数的分钟(范围 00 到 59)。
  • %p: 根据给定的时间值为 "AM" 或 "PM"。
  • %P: 类似于 %p,但为小写: "am" 或 "pm"。
  • %r: 以上午或下午的表示法显示时间。等同于 %I:%M:%S %p
  • %R: 以 24 小时制表示的时间(%H:%M)。
  • %S: 作为十进制数的秒(范围 00 到 60)。
  • %T: 以 24 小时制表示的时间(%H:%M:%S)。
  • %u: 作为十进制数的星期几,范围 1 到 7,星期一为 1。
  • %w: 作为十进制数的星期几,范围 0 到 6,星期一为 0。
  • %y: 作为没有世纪的十进制数的年份(范围 00 到 99)。
  • %Y: 作为包括世纪的十进制数的年份。

GitHub

您可以在 nginx-module-fancyindex 的 GitHub 仓库中找到有关此模块的其他配置提示和文档。