Jak skonfigurować Nginx, aby włączyć tryb „przeglądarki plików”?

82

Kiedy już to widziałem, kiedy wpisuję adres URL http://test.com/test/, zamiast podawać mi stronę html, daje mi to interfejs podobny do przeglądarki plików, aby przeglądać wszystkie pliki w podanej lokalizacji.

Myślę, że to może moduł nginx, który można włączyć w kontekście lokalizacji.

nginx.confPliku:

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;
        }
    }
}

zaktualizuj error.log

2012/05/19 20:48:33 [błąd] 20357 # 0: * 72 open () „/ home / yozloy / html / test” nie powiodło się (2: Brak takiego pliku lub katalogu), klient: 125.43.236.33, serwer : 122.97.248.252, żądanie: „GET / test HTTP / 1.1”, host: „unicom2.markson.hk

Muszę źle zrozumieć znaczenie lokalizacji /test, myślałem, że oznacza to, kiedy wpiszę http://example.com/test , wtedy uzyska dostęp do słownika głównego, który jest/home/yozloy/html/

mko
źródło
czy katalog testów istnieje?
Dmitri Chubarov
Katalog testowy @DmitriChubarov nie istnieje, myślałem, że / test oznacza tylko w adresie URL, więc mogę przekierować do katalogu głównego i nie chcę tworzyć słownika testowego, muszę go źle zrozumieć, ale jak mogę to zrobić to prawda?
mko
czy mógłbyś po prostu utworzyć katalog / home / yozloy / html / test i jakoś go wypełnić, aby sprawdzić, czy działa autoindex?
Dmitri Chubarov
1
@DmitriChubarov dzięki, że działa, kiedy tworzę folder testowy.
mko

Odpowiedzi:

115

Powinieneś wypróbować HttpAutoindexModule.

Ustaw opcję autoindex na on. Domyślnie jest wyłączone.

Twoja przykładowa konfiguracja powinna być w porządku

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

Bez opcji autoindex powinieneś otrzymać błąd 403 dla żądań kończących się /na katalogach, które nie mają index.htmlpliku. Dzięki tej opcji powinieneś otrzymać prostą listę:

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

Edycja: zaktualizowano listę, aby usunąć wszelkie odniesienia do przetestowania

Dmitri Chubarov
źródło
Wydaje się obiecujące. Ale nie mogę sprawić, żeby to zadziałało, umieściłem tutaj odpowiednią dyrektywęlocation /{ root /home/yozloy/html/; index index.html; autoindex on;}
mko
Sprawdź, czy zrestartowałeś nginx i czy nginx nie został skompilowany z --without-http_autoindex_module
Dmitri
Pamiętam, że jedyną flagą, którą podałem, jest --with-mp4_module, czy to oznacza, że ​​http_autoindex_module jest instalowany domyślnie? lub Czy mam jakieś polecenie, aby sprawdzić, czy nie zainstalowałem go
mko
nginx -Vpowinien podać listę skonfigurowanych opcji. Zauważ, że autoindex jest domyślnie włączone. Więc jeśli nie ma --without-autoindex, to jest w porządku.
Dmitri Chubarov
1
Następnie sprawdź dziennik błędów i zaktualizuj pytanie. To zbyt długa dyskusja. Przeniosłabym to na czat.
Dmitri Chubarov
14

1. Wypisz zawartość wszystkich katalogów

Ustaw opcję autoindex na on. Domyślnie jest wyłączone.

Twój plik konfiguracyjny ( vi /etc/nginx/sites-available/default) powinien wyglądać tak

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

2. Wypisz zawartość tylko określonego katalogu

Ustaw opcję autoindex na on. Domyślnie jest wyłączone.

Twój plik konfiguracyjny ( vi /etc/nginx/sites-available/default)
powinien wyglądać tak.
zmień path_of_your_directoryna ścieżkę do katalogu

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

Mam nadzieję, że to pomoże..

Abhishek Goel
źródło
2
Jest location /<something>to adres URL umożliwiający dostęp do plików, które chcesz udostępnić (na przykład /data), a nie katalog, który chcesz udostępnić przez nginx (na przykład ~/videos/funny-cats/).
Tom
13

Wszystkie odpowiedzi zawierają część odpowiedzi. Spróbuję połączyć wszystko w jednym.

Tryb szybkiej konfiguracji „przeglądarki plików” na świeżo zainstalowanym serwerze nginx:

  1. Edytuj domyślną konfigurację dla nginx:

    sudo vim /etc/nginx/sites-available/default
    
  2. Dodaj następujące do sekcji config:

    location /myfolder {  # new url path
       alias /home/username/myfolder/; # directory to list
       autoindex on;
    }
    
  3. Utwórz tam folder i przykładowy plik:

    mkdir -p /home/username/myfolder/
    ls -la >/home/username/myfolder/mytestfile.txt
    
  4. Uruchom ponownie nginx

    sudo systemctl restart nginx
    
  5. Sprawdź wynik: http://<your-server-ip>/myfolderna przykład http://192.168.0.10/myfolder/

wprowadź opis obrazu tutaj

0x8BADF00D
źródło
4

Musisz utworzyć /home/yozloy/html/testfolder. Lub możesz użyć aliasjak poniżej pokaż:

location /test {
    alias /home/yozloy/html/;
    autoindex on;
}
Xiaorong Liao
źródło
3

Próbowałem wiele razy.

I w końcu po prostu umieścić autoindex on;w httpale poza server, i to jest OK.

chaosink
źródło
1

Po prostu dodaj tę sekcję do serwera, tuż przed location / {

location /your/folder/to/browse/ {
        autoindex on;
}
Ohad the Lad
źródło