如何配置Nginx启用“文件浏览器”模式?


81

在输入URL之前,我曾经看到过这种情况http://test.com/test/,而不是给我一个html页面,它为我提供了一个类似于“文件浏览器”的界面,可以浏览给定位置中的所有文件。

我认为这可能是可以在位置上下文中启用的Nginx模块。

nginx.conf文件中:

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  122.97.248.252;
                location /test {
                        root /home/yozloy/html/;
                        autoindex on;
                }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

更新 error.log

2012/05/19 20:48:33 [错误] 20357#0:* 72 open()“ / home / yozloy / html / test”失败(2:无此类文件或目录),客户端:125.43.236.33,服务器:122.97.248.252,请求:“ GET / test HTTP / 1.1”,主机:“ unicom2.markson.hk

我必须误会位置信息的/test意思,我以为意思是当我输入http://example.com/test时,它会访问根字典,即/home/yozloy/html/


测试目录是否存在?
德米特里(Dmitri Chubarov)

@DmitriChubarov测试目录不存在,我以为/ test仅表示url中的内容,因此我可以定向到根目录,并且我不想制作测试字典,我必须误会它,但是我该怎么做对的?
mko 2012年

您是否会创建/ home / yozloy / html / test目录并以某种方式填充它,以查看自动索引是否有效?
德米特里·丘巴罗夫

1
@DmitriChubarov感谢我创建测试文件夹时它的工作。
mko 2012年

Answers:


112

您应该尝试使用HttpAutoindexModule。

将自动索引选项设置为on。默认情况下它是关闭的。

您的示例配置应该可以

location /{ 
   root /home/yozloy/html/; 
   index index.html; 
   autoindex on;
}

如果没有自动索引选项/,对于没有index.html文件的目录结尾的请求,您应该会收到错误403 。使用此选项,您应该会得到一个简单的清单:

<html>
<head><title>Index of /</title></head>
<body bgcolor="white">
<h1>Index of /test/</h1><hr><pre><a href="../">../</a>
<a href="test.txt">test.txt</a>                 19-May-2012 10:43            0
</pre><hr></body>
</html>

编辑:更新列表以删除要测试的所有引用


看起来很有希望。但是我不能使它起作用,我把相关的指令放在这里location /{ root /home/yozloy/html/; index index.html; autoindex on;}
mko 2012年

请检查您是否重新启动了nginx,并且没有使用--without-http_autoindex_module编译nginx
Dmitri Chubarov 2012年

我记得我给的唯一标志是--with-mp4_module,这是否意味着默认情况下安装了http_autoindex_module?还是我有一些命令来检查是否已安装了该命令
mko,2012年

nginx -V应该给您已配置选项的列表。请注意,默认情况下会启用自动索引。因此,如果--without-autoindex不存在,那就可以了。
德米特里·丘巴罗夫

1
然后,请检查错误日志并更新问题。讨论时间太长了。我将其移动到聊天。
德米特里·丘巴罗夫

14

1.列出所有目录的内容

将自动索引选项设置为on。默认情况下它是关闭的。

您的配置文件(vi /etc/nginx/sites-available/default)应该像这样

location /{ 
   ... ( some other lines )
   autoindex on;
   ... ( some other lines )
}

2.仅列出某些特定目录的内容

将自动索引选项设置为on。默认情况下它是关闭的。

您的配置文件(vi /etc/nginx/sites-available/default
应该是这样的。
更改path_of_your_directory为您的目录路径

location /path_of_your_directory{ 
   ... ( some other lines )
   autoindex on;
   ... ( some other lines )
}

希望能帮助到你..


2
location /<something>是你想要的文件访问共享(例如URL /data),而不是你希望共享通过nginx的(例如目录~/videos/funny-cats/)。
汤姆(Tom),

12

所有答案都包含部分答案。让我尝试将所有内容合而为一。

在新安装的nginx服务器上快速设置“文件浏览器”模式:

  1. 编辑Nginx的默认配置:

    sudo vim /etc/nginx/sites-available/default
    
  2. 在配置部分添加以下内容:

    location /myfolder {  # new url path
       alias /home/username/myfolder/; # directory to list
       autoindex on;
    }
    
  3. 在此处创建文件夹和示例文件:

    mkdir -p /home/username/myfolder/
    ls -la >/home/username/myfolder/mytestfile.txt
    
  4. 重新启动nginx

    sudo systemctl restart nginx
    
  5. 检查结果:http://<your-server-ip>/myfolder例如http://192.168.0.10/myfolder/

在此处输入图片说明


4

您需要创建/home/yozloy/html/test文件夹。或者您可以使用alias如下所示的方式:

location /test {
    alias /home/yozloy/html/;
    autoindex on;
}

3

我已经尝试了很多次。

最后,我只放入autoindex on;http但不在server,没关系。


1

只需将此部分添加到服务器,就在 location / {

location /your/folder/to/browse/ {
        autoindex on;
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.