使用ngx_http_autoindex_module模块生成目录列表。
通常,当ngx_http_index_module模块找不到索引文件时,会将请求传递给模块。
比如我以下的例子,并没有创建index.html文件,如果没有开启autoindex功能,会返回403错误。
该模块可以用于建立本地YUM仓库。
- 首先创建一个站点文件:mirrors.yyang.com.conf
server {
listen 80;
server_name mirrors.yyang.com;
location / {
root /repo;
index index.html;
}
}
- 根据配置文件创建站点目录
mkdir -p /repo/{centos,ubuntu,redhat}
- 重新加载配置文件
nginx -t
systemctl reload nginx
(记得要做本地dns解析噢)
-
在浏览器访问测试

(出现403是正常的,因为我们没有创建index.html文件) -
接下来在配置文件中加入atuoindex模块,形成列表
server {
listen 80;
server_name mirrors.yyang.com;
location / {
root /repo;
index index.html;
autoindex on;
}
}
-
在进行配置文件重新加载后在次用浏览器访问

(形成一个列表式的页面) -
此时我们可以在目录下上传一些内容后再次查看
[root@centos7 centos]# ls
apache-tomcat-9.0.64-fulldocs.tar.gz

(此时我们上传的内容大小是用字节表示的)
- 通过修改把上传文件大小用易于查看的方式表示:添加autoindex_exact_size;默认开启,开启为字节表示
server {
listen 80;
server_name mirrors.yyang.com;
location / {
root /repo;
index index.html;
autoindex on;
autoindex_exact_size off;
}
}
-
此时再进行重新加载配置文件后在浏览器查看

(此时的单位已变成M) -
但是 ,此时我发现创建文件时间与我本地时间不符合,所以把时间修改为我本地时间
(我此时时间为22:32)相差8个小时

server {
listen 80;
server_name mirrors.yyang.com;
location / {
root /repo;
index index.html;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
}
-
重新加载后查看

(此时时间已与我本地时间相同) -
我上传一个带有中文的文件却显示乱码

-
添加字符集解决文字乱码问题
server {
listen 80;
server_name mirrors.yyang.com;
charset utf8,gbk;
location / {
root /repo;
index index.html;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
}
(注意字符集作用于整个server区块)
- 此时在查看已恢复中文

本文介绍了如何利用nginx的ngx_http_autoindex_module模块生成目录列表,当没有index.html时提供友好界面。通过配置autoindex选项,可以显示文件列表,并调整文件大小单位和时间显示为本地时间。遇到中文乱码问题时,设置charset参数可以解决。
1511

被折叠的 条评论
为什么被折叠?



