nginx: noms de fichiers longs dans la liste des répertoires


8

Utilisation de nginx / 1.4.1 avec OpenBSD 5.4, 64 bits:

entrez la description de l'image ici

Comment pourrions-nous définir nginx pour afficher le nom de fichier complet (ou au moins afficher plus du nom de fichier que celui par défaut) lors de l'utilisation de la liste de répertoires?

Googler autour m'a seulement donné ceci:

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

Question : n'y a-t-il pas d'autre moyen que de le refaire?


voici un manuel, comment modifier la source nginx: tecklyfe.com/nginx-display-full-filename-directory-listing
rubo77

Réponses:


5

Selon la documentation de ngx_http_autoindex_module , la configuration de la largeur des colonnes pour les pages auto-indexées n'est pas disponible. La compilation à partir de la source serait le seul moyen d'effectuer ce changement.

Une alternative pourrait être d'utiliser un langage de script (par exemple php, rubyou python) pour effectuer l'inscription à l' annuaire pour vous.

Les avantages comprennent:

  • entièrement personnalisable via CSS, JavaScript, etc.
  • contrôle précis de la liste des fichiers

Mises en garde:

  • nécessite un CGI par exemple php-fpmoupassenger
  • nécessite plus de configuration

1
la compilation a fait l'affaire
evachristine

il y a une réponse avec les paramètres qui devraient être modifiés pour la compilation - serverfault.com/questions/310532/…
Sysanin

5

Vous pouvez essayer le module fancyindex avec son paramètre fancyindex_name_length pour configurer la longueur du nom de fichier.


1
ce devrait être la réponse acceptée. notez que ce fancyindex_name_lengthn'est pas mentionné sur la page nginx mais sur la page github du module. notez que ce module est inclus dans le nginx-extraspackage.
w00t

1

Puisqu'il ne semble pas possible d'y parvenir que de compiler nginx à partir de la source, ce serait une solution de contournement :

Vous pouvez créer automatiquement un fichier index.html dans le dossier actuel, qui contient tout le chemin, avec ce 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

dans le dossier, appelez simplement:

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

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


Une autre solution consiste à créer une simple liste de répertoires à partir de zéro avec

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

Ce n'est même pas lié à distance à la question de l'utilisateur.
pgoetz

Bien sûr que ça l'est. C'est une solution de contournement que vous pouvez utiliser si vous ne voulez pas compiler nginx à partir de la source
rubo77

Désolé pour ça; à la première lecture, je n'ai pas réalisé que c'était une étape a priori à exécuter sur le serveur. Bien sûr, cela jettera votre structure de répertoires avec des fichiers index.html et doit être réexécuté à chaque fois que le système de fichiers sous-jacent change, mais vous avez néanmoins raison.
pgoetz

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.