100

一旦我以前在输入 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/

4

6 回答 6

138

您应该尝试ngx_http_autoindex_module

autoindex选项设置为onoff默认情况下。

您的示例配置应该没问题

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

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

<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>

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

于 2012-05-19T07:32:39.830 回答
26

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

在新安装的 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/

在此处输入图像描述

于 2018-11-02T02:33:09.630 回答
15

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 )
}

希望能帮助到你..

于 2014-06-23T06:04:35.527 回答
4

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

location /test {
    alias /home/yozloy/html/;
    autoindex on;
}
于 2016-10-27T08:03:15.933 回答
3

我已经试过很多次了。

最后我只是把它autoindex on;放在http外面server,就可以了。

于 2017-05-05T08:33:48.877 回答
2

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

location /your/folder/to/browse/ {
        autoindex on;
}
于 2016-09-02T07:03:15.580 回答