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?


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

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.


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

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.