我们知道apache httpd默认情况下会显示访问目录的文件列表,但是nginx访问时如果目录下面没有默认首页,那么会返回403 Forbidden的错误,表示没有权限访问,比如根目录就是nginx安装目录下的html,下面有一个目录test2,那么默认情况就和如下配置完全等效:
location /test2 {
root html;
deny all;
return ;
}
这个配置就表示请求/test2时返回403,而nginx默认没有做任何重写或者其他拦截的时候,访问指定url会定位到相应的目录
那么另外应该如何来显示目录列表呢,配置很简单只需要在location中加一行 autoindex on; 即可显示,这样默认显示的文件大小以字节为单位,并且时间和服务器时间相差8小时,所以一般应用中设置根据文件大小进行合适的显示,并且时间显示服务器时间,实际配置如下:
location /test2 {
root html;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
以上配置实际显示效果如下:
现在目录列表显示就配置好了,并且这个目录下的所有目录都是有访问权限的,如果不想给权限,那么需要单独配置刚才的403拦截
另外之前用rewrite映射到本地目录时默认不访问具体文件时也是返回403,这个也可以显示目录列表,比如目录/test3,配置如下:
location /test3 {
root /;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
rewrite ^/test3/(.*)$ /test3/$ break;
}
这样本地目录映射也可以显示文件列表了
此文章参考自:http://blog.****.net/llnara/article/details/9613089