일종의 '파일 브라우저'모드를 사용하도록 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

2012/05/19 20:48:33 [오류] 20357 # 0 : * 72 open () "/ 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/


테스트 디렉토리가 있습니까?
— Dmitri Chubarov

@DmitriChubarov 테스트 디렉토리가 존재하지 않습니다. / test가 URL에서만 의미한다고 생각 했으므로 루트 디렉토리로 이동할 수 있으며 테스트 사전을 만들고 싶지 않습니다. 오해를해야하지만 어떻게 만들 수 있는지 맞죠?
— mko

/ home / yozloy / html / test 디렉토리를 만들고 자동 색인이 작동하는지 확인하기 위해 어떻게 든 채우시겠습니까?
— Dmitri Chubarov

1
@DmitriChubarov는 테스트 폴더를 만들 때 작동합니다.
— mko

답변:


115

HttpAutoindexModule을 시도해야합니다.

자동 색인 옵션을로 설정합니다 on. 기본적으로 꺼져 있습니다.

예제 구성이 정상이어야합니다.

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

autoindex 옵션이 없으면 파일 /이없는 디렉토리에서로 끝나는 요청에 대해 오류 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하지 않고 컴파일
— 드미트리 Chubarov

내가 준 유일한 플래그가 --with-mp4_module이라는 것을 기억합니다. 이것은 http_autoindex_module이 기본적으로 설치된다는 것을 의미합니까? 또는 내가 설치하지 않았는지 확인하는 명령이
— 있습니까

nginx -V구성된 옵션 목록을 제공해야합니다. 자동 색인은 기본적으로 활성화되어 있습니다. 따라서 --without-autoindex가 없으면 괜찮습니다.
— Dmitri Chubarov

1
그런 다음 오류 로그를 확인하고 질문을 업데이트하십시오. 토론이 너무 길어지고 있습니다. 나는 그것을 채팅으로 옮길 것이다.
— Dmitri Chubarov

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;습니다 . 괜찮습니다.httpserver


1

이 섹션을 서버에 추가하십시오. location / {

location /your/folder/to/browse/ {
        autoindex on;
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.