nginx: nomes extensos de arquivos na listagem de diretórios

7

Usando o nginx / 1.4.1 com o OpenBSD 5.4, 64 bits:

Como poderíamos definir o nginx para mostrar o nome completo do arquivo (ou pelo menos mostrar mais do nome do arquivo e depois o padrão) ao usar a listagem de diretórios?

Pesquisando só me deu isso:

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

Pergunta : não há outra maneira de recompilá-lo?

    
por evachristine 20.07.2014 / 19:17

3 respostas

4

De acordo com a documentação do ngx_http_autoindex_module , a configuração da largura da coluna para páginas indexadas automaticamente não está disponível. Compilar a partir da fonte seria a única maneira de fazer essa mudança.

Uma alternativa seria usar uma linguagem de script (por exemplo, php , ruby ou python ) para executar a listagem de diretórios para você.

Os benefícios incluem:

  • totalmente personalizável via CSS, JavaScript, etc.
  • controle preciso sobre a listagem de arquivos

Advertências:

  • requer um CGI php-fpm ou passenger
  • requer mais configuração
por 11.08.2014 / 13:12
3

Você pode tentar o módulo fancyindex com seu parâmetro fancyindex_name_length para configurar o tamanho do nome do arquivo.

    
por 29.10.2017 / 20:23
1

Como parece não haver nenhuma maneira de conseguir isso do que compilar o nginx a partir da fonte, isso seria uma solução alternativa :

Você pode criar automaticamente um arquivo index.html na pasta atual, que contém todo o caminho, com 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=""></a>|' index.html

dentro da pasta, basta ligar:

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

fonte: link

Outra solução alternativa seria criar uma lista de diretórios simples a partir do zero com

for i in *; do echo '<a href="'$i'">'$i'</a><br>'>>index.html; done
    
por 13.11.2016 / 09:09

Tags