¿Cómo configurar nginx para habilitar el modo de 'navegador de archivos'?

81

Una vez que he visto esto antes, cuando escribo una URL http://test.com/test/, en lugar de darme una página html, me brinda una interfaz similar a un 'navegador de archivos' para buscar todos los archivos en la ubicación dada.

Creo que tal vez sea un módulo nginx que podría habilitarse en el contexto de ubicación.

El nginx.confarchivo:

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

actualizar el error.log

2012/05/19 20:48:33 [error] 20357 # 0: * 72 open () "/ home / yozloy / html / test" falló (2: No existe tal archivo o directorio), cliente: 125.43.236.33, servidor : 122.97.248.252, solicitud: "GET / test HTTP / 1.1", host: "unicom2.markson.hk

Debo /testentender mal el significado de la ubicación , pensé que significaba cuando escribo http://example.com/test , entonces accedería al diccionario raíz que es/home/yozloy/html/

mko
fuente
¿Existe el directorio de prueba?
Dmitri Chubarov
El directorio de prueba @DmitriChubarov no existe, pensé que / prueba solo significa en la URL, por lo que puedo dirigirme al directorio raíz, y no quiero hacer un diccionario de prueba, debo entenderlo mal, pero ¿cómo puedo hacer ¿bien?
mko
¿Simplemente crearía el directorio / home / yozloy / html / test y lo llenaría de alguna manera solo para ver si el autoindex funciona?
Dmitri Chubarov
1
@DmitriChubarov gracias, funciona cuando creo la carpeta de prueba.
mko

Respuestas:

112

Debería probar HttpAutoindexModule.

Establezca la opción de autoindex en on. Está apagado por defecto.

Su configuración de ejemplo debería estar bien

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

Sin la opción de autoindex, debería recibir el Error 403 para las solicitudes que terminan /en directorios que no tienen un index.htmlarchivo. Con esta opción, debería obtener una lista simple:

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

Editar: se actualizó la lista para eliminar cualquier referencia para probar

Dmitri Chubarov
fuente
Parece prometedor. Pero no puedo hacer que funcione. Puse la directiva relacionada aquílocation /{ root /home/yozloy/html/; index index.html; autoindex on;}
mko
Compruebe que reinició nginx y que nginx no se compiló con --without-http_autoindex_module
Dmitri Chubarov
Recuerdo que la única marca que di es --with-mp4_module, ¿esto significa que http_autoindex_module está instalado de forma predeterminada? o ¿Tengo algún comando para verificar si lo instalé o no?
mko
nginx -Vdebería darle la lista de opciones configuradas. Tenga en cuenta que el autoindex está habilitado de forma predeterminada. Entonces, si --without-autoindex no está allí, entonces está bien.
Dmitri Chubarov
1
Verifique el registro de errores y actualice la pregunta. Esta es una discusión demasiado larga. Lo movería para charlar.
Dmitri Chubarov
14

1. Enumere el contenido de todos los directorios

Establezca la opción de autoindex en on. Está apagado por defecto.

Su archivo de configuración ( vi /etc/nginx/sites-available/default) debería ser así

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

2. Enumere el contenido de solo algunos directorios específicos

Establezca la opción de autoindex en on. Está apagado por defecto.

Su archivo de configuración ( vi /etc/nginx/sites-available/default)
debería ser así.
cambiar path_of_your_directorya la ruta de su directorio

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

Espero eso ayude..

Abhishek Goel
fuente
2
El location /<something>es el URL para acceder a los archivos que desea compartir (por ejemplo /data), no el directorio que desea compartir a través de Nginx (por ejemplo ~/videos/funny-cats/).
Tom
12

Todas las respuestas contienen parte de la respuesta. Déjame intentar combinar todo en uno.

Configuración rápida del modo "explorador de archivos" en el servidor nginx recién instalado:

  1. Edite la configuración predeterminada para nginx:

    sudo vim /etc/nginx/sites-available/default
    
  2. Agregue lo siguiente a la sección de configuración:

    location /myfolder {  # new url path
       alias /home/username/myfolder/; # directory to list
       autoindex on;
    }
    
  3. Cree una carpeta y un archivo de muestra allí:

    mkdir -p /home/username/myfolder/
    ls -la >/home/username/myfolder/mytestfile.txt
    
  4. Reiniciar nginx

    sudo systemctl restart nginx
    
  5. Compruebe el resultado: http://<your-server-ip>/myfolderpor ejemplo, http://192.168.0.10/myfolder/

ingrese la descripción de la imagen aquí

0x8BADF00D
fuente
4

Necesita crear /home/yozloy/html/testcarpeta. O puede usar aliascomo se muestra a continuación:

location /test {
    alias /home/yozloy/html/;
    autoindex on;
}
Xiaorong Liao
fuente
3

Lo he intentado muchas veces.

Y por fin lo puse autoindex on;adentro httppero afuera server, y está bien.

caos
fuente
1

Simplemente agregue esta sección al servidor, justo antes del location / {

location /your/folder/to/browse/ {
        autoindex on;
}
Ohad el muchacho
fuente