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


¿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


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


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í


4

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

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

3

Lo he intentado muchas veces.

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


1

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

location /your/folder/to/browse/ {
        autoindex on;
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.