探秘Nginx的autoindex模块

发布时间:2023-05-20

一、autoindex概述

autoindex是Nginx的一个自带模块,它用于在浏览器中展示一个目录列表。 当用户访问一个Nginx web服务器下的一个目录而不是一个特定的文件时,autoindex模块会创建一个HTML页面,列出目录下的所有文件及其相关的信息,如文件大小、创建时间、文件类型等。 autoindex模块还允许用户对文件进行下载、删除和重命名等操作。

二、autoindex模块的开启和配置

开启autoindex只需要在Nginx配置文件中添加一行autoindex on语句即可:

server {
  listen 80;
  server_name localhost;
  root /var/www/html;
  autoindex on;
}

除了on之外,还可以设置autoindexoffexact,默认为exact。 当autoindexoff时,将禁用目录列表功能,页面会返回404错误。 当autoindexexact时,Nginx将只显示与请求的URI精确匹配的目录,而不是所有子目录。 同时,autoindex还允许我们进行更加详细的配置。我们可以设置autoindex_format来控制目录列表的格式、autoindex_localtime来控制是否用本地时间显示、autoindex_max_size来限制列表中文件的最大大小等。

三、autoindex的格式配置

autoindex_format可以设置各种目录列表的格式,比如简单的默认格式、带有气泡提示的完整格式等等。下面是默认的autoindex_format配置:

autoindex_format html;
autoindex_localtime on;
autoindex_exact_size off;
autoindex_min_file_size 0;
autoindex_name_len     255;
autoindex_description on;
autoindex_header_len   35;
autoindex_enable_charset on;
autoindex_charset utf-8;

我们可以根据自己的需求进行修改。例如,我们可以将autoindex_format设置为完整格式:

autoindex_format fancy;

这里的fancy表示我们将使用一个带有气泡提示的完整格式,这样页面中的每个文件都有一个气泡提示框,可以显示更多的文件信息。 我们还可以使用autoindex_format指定一个自定义的模板,例如:

autoindex_format "
  <title>{{TITLE}}</title>
  <h1>{{HEADER}}</h1>
  <table>
   <thead>
    <tr>
     <th>名字</th>
     <th>大小</th>
     <th>创建时间</th>
    </tr>
   </thead>
   <tbody>
      {{FILES}}
   </tbody>
  </table>
  <p>{{FOOTER}}</p>
"