nginx: nombres de archivo largos en el listado del directorio

8

Usando nginx / 1.4.1 con OpenBSD 5.4, 64 bits:

ingrese la descripción de la imagen aquí

¿Cómo podríamos configurar nginx para que muestre el nombre de archivo completo (o al menos mostrar más del nombre de archivo que el predeterminado) al usar la lista de directorios?

Buscar en Google solo me dio esto:

http://forum.nginx.org/read.php?2,124400,167420#msg-167420
January 18, 2011 08:36PM
fagtron
I looked all over the net and wasn't able to find this answer anyway, so I looked into the nginx source files and it's very easy.

Simply modify the file located at [b]src/http/modules/ngx_http_autoindex_module.c[/b] and then compile.

Change these lines:

[b]#define NGX_HTTP_AUTOINDEX_PREALLOCATE 50

#define NGX_HTTP_AUTOINDEX_NAME_LEN 50[/b]

to whatever you want, such as:

[b]#define NGX_HTTP_AUTOINDEX_PREALLOCATE 100

#define NGX_HTTP_AUTOINDEX_NAME_LEN 100[/b]

And then compile and restart nginx. That's it !!!

Pregunta : ¿no hay otra manera de recompilarlo?

evachristina
fuente
aquí hay un manual sobre cómo modificar la fuente nginx: tecklyfe.com/nginx-display-full-filename-directory-listing
rubo77

Respuestas:

5

Según la documentación de ngx_http_autoindex_module , la configuración del ancho de columna para páginas autoindexadas no está disponible. Compilar desde la fuente sería la única forma de hacer este cambio.

Una alternativa podría ser el uso de un lenguaje de script (por ejemplo php, rubyo python) para realizar el listado de directorios para usted.

Beneficios incluidos:

  • totalmente personalizable a través de CSS, JavaScript, etc.
  • control fino sobre el listado de archivos

Advertencias:

  • requiere un CGI por ejemplo php-fpmopassenger
  • requiere más configuración
ssh2ksh
fuente
1
compilar hizo el truco
evachristine
hay una respuesta con los parámetros que deben cambiarse para la compilación - serverfault.com/questions/310532/…
Sysanin
5

Puede probar el módulo fancyindex con su parámetro fancyindex_name_length para configurar la longitud del nombre de archivo.

Jack Rowe
fuente
1
Esta debería ser la respuesta aceptada. tenga en cuenta que fancyindex_name_lengthno se menciona en la página nginx pero está en la página github del módulo. Tenga en cuenta que este módulo está incluido en el nginx-extraspaquete.
w00t
1

Dado que parece que no hay forma de lograr esto que compilar nginx desde la fuente, esta sería una solución alternativa :

Puede crear automáticamente un archivo index.html en la carpeta actual, que contiene la ruta completa, con este script:

#!/bin/bash
# scriptname: /usr/local/sbin/directory-long-index.sh
# 
# the directory_root without slash at the end:
WEB=/var/www/
#reacheable url from inside the server:
URL=http://localhost

P=$(pwd|sed "s|$WEB/||")
echo "download $URL/$P/ to index.html"
curl "$URL/$P/" -o index.html
sed -i 's|href="\(.*\)".*</a>|style="display:inline-block;min-width:500px" href="\1">\1</a>|' index.html

dentro de la carpeta solo llame:

source /usr/local/sbin/directory-long-index.sh

fuente: https://gist.github.com/rubo77/c7a9434eb104c00bf8772b2278284360


Otra solución sería crear una lista de directorio simple desde cero con

for i in *; do echo '<a href="'$i'">'$i'</a><br>'>>index.html; done
rubo77
fuente
Esto ni siquiera está relacionado remotamente con la pregunta del usuario.
pgoetz
Claro que lo es. Es una solución alternativa que puede usar si no desea compilar nginx desde la fuente
rubo77
Lo siento por eso; en la primera lectura no me di cuenta de que esto está destinado como un paso a priori para ejecutarse en el servidor. Por supuesto, esto ensuciará su estructura de directorios con archivos index.html y debe volver a ejecutarse cada vez que cambie el sistema de archivos subyacente, pero no obstante está en lo correcto.
pgoetz