nginx: Lange Dateinamen in der Verzeichnisliste

8

Verwenden von nginx / 1.4.1 mit OpenBSD 5.4, 64bit:

Geben Sie hier die Bildbeschreibung ein

Wie können wir nginx so einstellen, dass der vollständige Dateiname angezeigt wird (oder zumindest mehr vom Dateinamen als vom Standard), wenn die Verzeichnisliste verwendet wird?

Googeln gab mir nur folgendes:

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

Frage : Gibt es keinen anderen Weg, um es wieder herzustellen?

Evachristin
quelle
Hier ist ein Handbuch, wie man die Nginx-
rubo77

Antworten:

5

Gemäß der Dokumentation zu ngx_http_autoindex_module ist die Konfiguration der Spaltenbreite für automatisch indizierte Seiten nicht verfügbar. Das Kompilieren aus der Quelle wäre der einzige Weg, um diese Änderung vorzunehmen.

Eine Alternative könnte sein , eine Skriptsprache zu verwenden (zB php, rubyoder python) , um das Verzeichnis für Sie die Auflistung auszuführen.

Zu den Vorteilen gehören:

  • vollständig anpassbar über CSS, JavaScript usw.
  • Feinsteuerung der Dateiliste

Vorsichtsmaßnahmen:

  • erfordert ein CGI zB php-fpmoderpassenger
  • erfordert mehr Konfiguration
ssh2ksh
quelle
1
Kompilieren hat den Trick gemacht
evachristine
Es gibt eine Antwort mit den Parametern, die zum Kompilieren geändert werden sollten - serverfault.com/questions/310532/…
Sysanin
5

Sie können das Fancyindex-Modul mit dem Parameter Fancyindex_name_length ausprobieren, um die Dateinamenlänge zu konfigurieren.

Jack Rowe
quelle
1
Dies sollte die akzeptierte Antwort sein. Beachten Sie, dass dies fancyindex_name_lengthnicht auf der Nginx-Seite erwähnt wird, sondern auf der Github-Seite des Moduls. Beachten Sie, dass dieses Modul im nginx-extrasPaket enthalten ist.
w00t
1

Da es keine Möglichkeit gibt, dies zu erreichen, als Nginx aus der Quelle zu kompilieren, wäre dies eine Problemumgehung :

Mit diesem Skript können Sie automatisch eine index.html-Datei im aktuellen Ordner erstellen, die den gesamten Pfad enthält:

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

Rufen Sie im Ordner einfach Folgendes auf:

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

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


Eine andere Problemumgehung wäre, eine einfache Verzeichnisliste von Grund auf mit zu erstellen

for i in *; do echo '<a href="'$i'">'$i'</a><br>'>>index.html; done
rubo77
quelle
Dies hängt nicht einmal entfernt mit der Frage des Benutzers zusammen.
Pgoetz
Sicher ist es das. Es ist eine Problemumgehung, die Sie verwenden können, wenn Sie
Nginx
Das tut mir leid; Beim ersten Lesen wurde mir nicht klar, dass dies ein a priori-Schritt ist, der auf dem Server ausgeführt werden soll. Natürlich wird dies Ihre Verzeichnisstruktur mit index.html-Dateien verunreinigen und muss jedes Mal neu ausgeführt werden, wenn sich das zugrunde liegende Dateisystem ändert, aber Sie sind trotzdem korrekt.
Pgoetz
0

Versuche dies,

autoindex on;
autoindex_format json; # <- configure like this, your will get full name, FORMAT IN JSON

Dokument aus Modul ngx_http_autoindex_module

alswl
quelle