Wie konfiguriere ich nginx, um den Dateibrowser-Modus zu aktivieren?

81

Sobald ich dies schon einmal gesehen habe, wenn ich eine URL eingebe http://test.com/test/, anstatt mir eine HTML-Seite zu geben, gibt es mir eine "Dateibrowser" -ähnliche Oberfläche, um alle Dateien am angegebenen Speicherort zu durchsuchen.

Ich denke, es ist vielleicht ein Nginx-Modul, das im Standortkontext aktiviert werden könnte.

Die nginx.confDatei:

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  122.97.248.252;
                location /test {
                        root /home/yozloy/html/;
                        autoindex on;
                }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

Aktualisieren Sie die error.log

2012/05/19 20:48:33 [Fehler] 20357 # 0: * 72 open () "/ home / yozloy / html / test" fehlgeschlagen (2: Keine solche Datei oder kein solches Verzeichnis), Client: 125.43.236.33, Server : 122.97.248.252, Anfrage: "GET / test HTTP / 1.1", Host: "unicom2.markson.hk

Ich muss den Standort /testbedeuten, ich dachte, es bedeutet, wenn ich http://example.com/test eingebe , dann würde es auf das Stammwörterbuch zugreifen, das ist/home/yozloy/html/

mko
quelle
Existiert das Testverzeichnis?
Dmitri Chubarov
@DmitriChubarov Testverzeichnis existiert nicht, ich dachte / test bedeutet nur in der URL, damit ich direkt zum Stammverzeichnis gelangen kann, und ich möchte kein Testwörterbuch erstellen, ich muss es falsch verstehen, aber wie ich es erstellen kann es richtig?
Mko
Würden Sie einfach das Verzeichnis / home / yozloy / html / test erstellen und es irgendwie füllen, um zu sehen, ob der Autoindex funktioniert?
Dmitri Chubarov
1
@DmitriChubarov danke, dass es funktioniert, wenn ich den Testordner erstelle.
Mko

Antworten:

113

Sie sollten HttpAutoindexModule versuchen.

Setzen Sie die Autoindex-Option auf on. Es ist standardmäßig deaktiviert.

Ihre Beispielkonfiguration sollte in Ordnung sein

location /{ 
   root /home/yozloy/html/; 
   index index.html; 
   autoindex on;
}

Ohne Autoindex-Option sollte Fehler 403 für Anforderungen angezeigt werden, die mit /Verzeichnissen enden , die keine index.htmlDatei haben. Mit dieser Option sollten Sie eine einfache Auflistung erhalten:

<html>
<head><title>Index of /</title></head>
<body bgcolor="white">
<h1>Index of /test/</h1><hr><pre><a href="../">../</a>
<a href="test.txt">test.txt</a>                 19-May-2012 10:43            0
</pre><hr></body>
</html>

Bearbeiten: Die Liste wurde aktualisiert, um alle zu testenden Referenzen zu löschen

Dmitri Chubarov
quelle
Es scheint vielversprechend. Aber ich kann es nicht zum location /{ root /home/yozloy/html/; index index.html; autoindex on;}
Laufen bringen.
Bitte überprüfen Sie, ob Sie nginx neu gestartet haben und ob nginx nicht mit --without-http_autoindex_module
Dmitri Chubarov
Ich erinnere mich, dass das einzige Flag, das ich gegeben habe, --with-mp4_module ist. Bedeutet dies, dass http_autoindex_module standardmäßig installiert ist? oder Habe ich einen Befehl, um zu überprüfen, ob ich ihn von not installiert habe
mko
nginx -Vsollte Ihnen die Liste der konfigurierten Optionen geben. Beachten Sie, dass der automatische Index standardmäßig aktiviert ist. Wenn also --without-autoindex nicht vorhanden ist, ist es in Ordnung.
Dmitri Chubarov
1
Bitte überprüfen Sie dann das Fehlerprotokoll und aktualisieren Sie die Frage. Dies wird eine zu lange Diskussion. Ich würde es verschieben, um zu chatten.
Dmitri
14

1. Listen Sie den Inhalt aller Verzeichnisse auf

Setzen Sie die Autoindex-Option auf on. Es ist standardmäßig deaktiviert.

Ihre Konfigurationsdatei ( vi /etc/nginx/sites-available/default) sollte so aussehen

location /{ 
   ... ( some other lines )
   autoindex on;
   ... ( some other lines )
}

2. Listen Sie den Inhalt nur eines bestimmten Verzeichnisses auf

Setzen Sie die Autoindex-Option auf on. Es ist standardmäßig deaktiviert.

Ihre Konfigurationsdatei ( vi /etc/nginx/sites-available/default)
sollte so aussehen.
Wechseln Sie path_of_your_directoryin Ihren Verzeichnispfad

location /path_of_your_directory{ 
   ... ( some other lines )
   autoindex on;
   ... ( some other lines )
}

Ich hoffe es hilft..

Abhishek Goel
quelle
2
Das location /<something>ist die URL auf die Dateien zugreifen , die Sie teilen möchten (zum Beispiel /data), nicht das Verzeichnis , das Sie wollen über nginx teilen (zum Beispiel ~/videos/funny-cats/).
Tom
12

Alle Antworten enthalten einen Teil der Antwort. Lassen Sie mich versuchen, alles in einem zu kombinieren.

Schnelle Einrichtung des "Dateibrowser" -Modus auf einem frisch installierten Nginx-Server:

  1. Standardkonfiguration für nginx bearbeiten:

    sudo vim /etc/nginx/sites-available/default
    
  2. Fügen Sie dem Konfigurationsabschnitt Folgendes hinzu:

    location /myfolder {  # new url path
       alias /home/username/myfolder/; # directory to list
       autoindex on;
    }
    
  3. Erstellen Sie dort einen Ordner und eine Beispieldatei:

    mkdir -p /home/username/myfolder/
    ls -la >/home/username/myfolder/mytestfile.txt
    
  4. Starten Sie nginx neu

    sudo systemctl restart nginx
    
  5. Ergebnis überprüfen : http://<your-server-ip>/myfolderzum Beispiel http://192.168.0.10/myfolder/

Geben Sie hier die Bildbeschreibung ein

0x8BADF00D
quelle
4

Sie müssen einen /home/yozloy/html/testOrdner erstellen . Oder Sie können aliaswie folgt zeigen:

location /test {
    alias /home/yozloy/html/;
    autoindex on;
}
Xiaorong Liao
quelle
3

Ich habe es oft versucht.

Und ich endlich nur setzen autoindex on;in , httpsondern außerhalb server, und es ist OK.

Chaosink
quelle
1

Fügen Sie diesen Abschnitt einfach kurz vor dem Server zum Server hinzu location / {

location /your/folder/to/browse/ {
        autoindex on;
}
Ohad der Junge
quelle