Як налаштувати nginx для ввімкнення режиму "файлового браузера"?


82

Одного разу, коли я це вже бачив, коли я набираю URL-адресу http://test.com/test/, замість того, щоб надати мені HTML-сторінку, це дає мені "браузер файлів", як інтерфейс для перегляду всіх файлів у вказаному місці.

Я думаю, що це може бути модуль nginx, який можна включити в контексті розташування.

nginx.confфайл:

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

оновити error.log

19.05.2012 20:48:33 [помилка] 20357 # 0: * 72 не вдалося відкрити () "/ home / yozloy / html / test" (2: Немає такого файлу або каталогу), клієнт: 125.43.236.33, сервер : 122.97.248.252, запит: "GET / test HTTP / 1.1", хост: "unicom2.markson.hk

Я повинен неправильно розуміти місцеположення /test, я думав, що це означає, коли я набираю http://example.com/test , тоді він отримає доступ до кореневого словника, який/home/yozloy/html/


чи існує тестовий каталог?
Дмитро Чубаров

Тестовий каталог @DmitriChubarov не існує, я думав / test означає лише в URL-адресі, тому я можу перейти до кореневого каталогу, і я не хочу робити тестовий словник, я повинен неправильно його зрозуміти, але як я можу зробити це правильно?
mko

просто створити / home / yozloy / html / test каталог і якось заповнити його, щоб просто перевірити, чи працює автоіндекс?
Дмитро Чубаров

1
@DmitriChubarov дякую, це працює, коли я створюю тестову папку.
mko

Відповіді:


115

Вам слід спробувати HttpAutoindexModule.

Встановіть параметр автоіндексу на on. Він вимкнений за замовчуванням.

Ваш приклад конфігурації повинен бути нормальним

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

Без опції автоіндексу ви повинні отримувати помилку 403 для запитів, які закінчуються /на каталоги, які не мають index.htmlфайлу. За допомогою цієї опції ви повинні отримати простий список:

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

Редагувати: оновлено список, щоб видалити будь-які посилання на тест


Це видається перспективним. Але я не можу змусити це працювати, я помістив відповідну директиву сюдиlocation /{ root /home/yozloy/html/; index index.html; autoindex on;}
mko

Будь ласка, переконайтесь, що ви перезапустили nginx і що nginx не був скомпільований за допомогою --without-http_autoindex_module
Дмитро Чубаров

Я пам’ятаю, єдиний прапор, який я дав, --with-mp4_module, чи означає це, що http_autoindex_module встановлено за замовчуванням? чи у мене є якась команда, щоб перевірити, чи не встановив я її не
mko

nginx -Vповинен надати вам список налаштованих параметрів. Зверніть увагу, що автоіндекс увімкнено за замовчуванням. Отже, якщо --without-autoindex немає, то це нормально.
Дмитро Чубаров

1
Будь ласка, перевірте журнал помилок і оновіть питання. Це надто довге обговорення. Я б переніс його в чат.
Дмитро Чубаров

14

1. Перелічіть зміст усіх каталогів

Встановіть параметр автоіндексу на on. Він вимкнений за замовчуванням.

Ваш конфігураційний файл ( vi /etc/nginx/sites-available/default) повинен бути таким

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

2. Перелічіть вміст лише певного каталогу

Встановіть параметр автоіндексу на on. Він вимкнений за замовчуванням.

Ваш конфігураційний файл ( vi /etc/nginx/sites-available/default)
повинен бути таким.
змінити path_of_your_directoryшлях до каталогу

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

Сподіваюся, це допоможе ..


2
Це location /<something>URL-адреса для доступу до файлів, якими ви хочете поділитися (наприклад /data), а не каталог, яким ви хочете поділитися через nginx (наприклад ~/videos/funny-cats/).
Том

13

Усі відповіді містять частину відповіді. Дозвольте мені спробувати поєднати все в одному.

Швидке налаштування режиму "браузера файлів" на щойно встановленому сервері nginx:

  1. Відредагуйте конфігурацію за замовчуванням для nginx:

    sudo vim /etc/nginx/sites-available/default
    
  2. Додайте до розділу налаштування наступне:

    location /myfolder {  # new url path
       alias /home/username/myfolder/; # directory to list
       autoindex on;
    }
    
  3. Створіть там папку та зразок файлу:

    mkdir -p /home/username/myfolder/
    ls -la >/home/username/myfolder/mytestfile.txt
    
  4. Перезапустіть nginx

    sudo systemctl restart nginx
    
  5. Результат перевірки: http://<your-server-ip>/myfolderнаприклад, http://192.168.0.10/myfolder/

введіть тут опис зображення


4

Вам потрібно створити /home/yozloy/html/testпапку. Або ви можете використовувати, aliasяк показано нижче:

location /test {
    alias /home/yozloy/html/;
    autoindex on;
}

3

Я пробував багато разів.

І нарешті , я просто покласти autoindex on;в httpале за межами server, і це нормально.


1

Просто додайте цей розділ на сервер, безпосередньо перед location / {

location /your/folder/to/browse/ {
        autoindex on;
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.