使用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区块)
- 此时在查看已恢复中文