nginx: nomi di file lunghi nell'elenco delle directory


8

Utilizzando nginx / 1.4.1 con OpenBSD 5.4, 64 bit:

inserisci qui la descrizione dell'immagine

Come possiamo impostare nginx per mostrare il nome file completo (o almeno mostrarne di più dal nome file quindi quello predefinito) quando si usa l'elenco delle directory?

Googling around mi ha dato solo questo:

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

Domanda : non c'è altro modo di ricompilarlo?


ecco un manuale, come modificare la fonte nginx: tecklyfe.com/nginx-display-full-filename-directory-listing
rubo77

Risposte:


5

Secondo la documentazione ngx_http_autoindex_module , la configurazione della larghezza della colonna per le pagine autoindex non è disponibile. La compilazione dalla fonte sarebbe l'unico modo per apportare questa modifica.

Un'alternativa potrebbe essere quella di utilizzare un linguaggio di scripting (ad esempio php, rubyo python) per eseguire l'elenco di directory per voi.

I vantaggi includono:

  • completamente personalizzabile tramite CSS, JavaScript, ecc
  • ottimo controllo sull'elenco dei file

Avvertenze:

  • richiede un CGI, ad esempio php-fpmopassenger
  • richiede più configurazione

1
la compilazione ha fatto il trucco
evacristina il

c'è una risposta con i parametri che dovrebbero essere cambiati per la compilazione - serverfault.com/questions/310532/…
Sysanin

5

Puoi provare il modulo fancyindex con il suo parametro fancyindex_name_length per configurare la lunghezza del nome file.


1
questa dovrebbe essere la risposta accettata. nota che fancyindex_name_lengthnon è menzionato nella pagina nginx ma si trova nella pagina github del modulo. si noti che questo modulo è incluso nel nginx-extraspacchetto.
wt

1

Dal momento che non sembra esserci modo di ottenerlo se non la compilazione di nginx dal sorgente, questa sarebbe una soluzione alternativa :

Puoi creare automaticamente un file index.html nella cartella corrente, che contiene l'intero percorso, con questo 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

all'interno della cartella basta chiamare:

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

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


Un'altra soluzione alternativa sarebbe quella di creare da zero un semplice elenco di directory

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

Questo non è nemmeno lontanamente correlato alla domanda dell'utente.
pgoetz,

Certo che lo e. È una soluzione alternativa che puoi usare se non vuoi compilare nginx dal sorgente
rubo77

Mi dispiace per quello; in prima lettura non sono riuscito a rendermi conto che questo è inteso come un passaggio a priori da eseguire sul server. Ovviamente questo sporcherà la tua struttura di directory con file index.html e dovrà essere rieseguito ogni volta che il filesystem sottostante cambia, ma sei comunque corretto.
pgoetz,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.