Làm cách nào để định cấu hình nginx để bật chế độ kinda 'trình duyệt tệp'?


81

Tôi đã từng thấy điều này trước đây khi tôi nhập URL http://test.com/test/, thay vì cung cấp cho tôi một trang html, nó cung cấp cho tôi một giao diện giống như 'trình duyệt tệp' để duyệt tất cả các tệp ở vị trí nhất định.

Tôi nghĩ nó có thể là một mô-đun nginx có thể được kích hoạt trong ngữ cảnh vị trí.

Các nginx.conftập tin:

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

cập nhật error.log

2012/05/19 20:48:33 [error] 20357 # 0: * 72 open () "/ home / yozloy / html / test" không thành công (2: Không có tệp hoặc thư mục như vậy), máy khách: 125.43.236.33, máy chủ : 122.97.248.252, yêu cầu: "GET / test HTTP / 1.1", máy chủ: "unicom2.markson.hk

Tôi phải hiểu sai /testý nghĩa của vị trí , tôi nghĩ nó có nghĩa là khi tôi nhập http://example.com/test , sau đó nó sẽ truy cập vào từ điển gốc./home/yozloy/html/


thư mục thử nghiệm có tồn tại không?
Dmitri Chubarov

Thư mục kiểm tra @DmitriChubarov không tồn tại, tôi nghĩ / test chỉ có nghĩa trong url, vì vậy tôi có thể chuyển hướng đến thư mục gốc và tôi không muốn tạo từ điển kiểm tra, tôi phải hiểu nhầm nó, nhưng làm thế nào tôi có thể tạo đúng?
mko

bạn chỉ cần tạo thư mục / home / yozloy / html / test và điền nó bằng cách nào đó chỉ để xem autoindex có hoạt động không?
Dmitri Chubarov

1
@DmitriChubarov cảm ơn nó hoạt động khi tôi tạo thư mục thử nghiệm.
mko

Câu trả lời:


112

Bạn nên thử HttpAutoindexModule.

Đặt tùy chọn autoindex thành on. Nó bị tắt theo mặc định.

Cấu hình ví dụ của bạn sẽ ổn

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

Nếu không có tùy chọn autoindex, bạn sẽ nhận được Lỗi 403 cho các yêu cầu kết thúc bằng /trên các thư mục không có index.htmltệp. Với tùy chọn này, bạn sẽ nhận được một danh sách đơn giản:

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

Chỉnh sửa: Đã cập nhật danh sách để xóa mọi tham chiếu để kiểm tra


Nó có vẻ đầy hứa hẹn. Nhưng tôi không thể làm cho nó hoạt động. Tôi đã đặt chỉ thị liên quan ở đâylocation /{ root /home/yozloy/html/; index index.html; autoindex on;}
mko

Vui lòng kiểm tra xem bạn đã khởi động lại nginx chưa và nginx không được biên dịch bằng --without-http_autoindex_module
Dmitri Chubarov

Tôi nhớ cờ duy nhất tôi đưa ra là --with-mp4_module, điều này có nghĩa là http_autoindex_module được cài đặt theo mặc định? hoặc Tôi có một số lệnh để kiểm tra xem tôi đã cài đặt nó không
MKO

nginx -Vsẽ cung cấp cho bạn danh sách các tùy chọn đã định cấu hình. Lưu ý rằng autoindex được bật theo mặc định. Vì vậy, nếu --without-autoindex không có ở đó thì vẫn ổn.
Dmitri Chubarov

1
Vui lòng kiểm tra nhật ký lỗi sau đó và cập nhật câu hỏi. Đây là một cuộc thảo luận quá dài. Tôi muốn chuyển nó sang trò chuyện.
Dmitri Chubarov

14

1. Liệt kê nội dung của tất cả các thư mục

Đặt tùy chọn autoindex thành on. Nó bị tắt theo mặc định.

Tệp cấu hình ( vi /etc/nginx/sites-available/default) của bạn sẽ như thế này

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

2. Chỉ liệt kê nội dung của một số thư mục cụ thể

Đặt tùy chọn autoindex thành on. Nó bị tắt theo mặc định.

Tệp cấu hình ( vi /etc/nginx/sites-available/default) của
bạn sẽ như thế này.
thay đổi path_of_your_directoryđường dẫn thư mục của bạn

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

Hy vọng nó giúp..


2
Đây location /<something>là url để truy cập các tệp bạn muốn chia sẻ (ví dụ /data), không phải thư mục bạn muốn chia sẻ qua nginx (ví dụ ~/videos/funny-cats/).
Tom

12

Tất cả các câu trả lời đều chứa một phần của câu trả lời. Hãy để tôi cố gắng kết hợp tất cả trong một.

Thiết lập nhanh chế độ "trình duyệt tệp" trên máy chủ nginx mới được cài đặt:

  1. Chỉnh sửa cấu hình mặc định cho nginx:

    sudo vim /etc/nginx/sites-available/default
    
  2. Thêm phần sau vào phần cấu hình:

    location /myfolder {  # new url path
       alias /home/username/myfolder/; # directory to list
       autoindex on;
    }
    
  3. Tạo thư mục và tệp mẫu ở đó:

    mkdir -p /home/username/myfolder/
    ls -la >/home/username/myfolder/mytestfile.txt
    
  4. Khởi động lại nginx

    sudo systemctl restart nginx
    
  5. Kiểm tra kết quả: http://<your-server-ip>/myfolderví dụ http://192.168.0.10/myfolder/

nhập mô tả hình ảnh ở đây


4

Bạn cần tạo /home/yozloy/html/testthư mục. Hoặc bạn có thể sử dụng aliasnhư dưới đây hiển thị:

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

3

Tôi đã thử nhiều lần.

Và cuối cùng tôi chỉ đưa autoindex on;vào httpnhưng bên ngoài server, và nó ổn.


1

Chỉ cần thêm phần này vào máy chủ, ngay trước location / {

location /your/folder/to/browse/ {
        autoindex on;
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.