JooTC
nginx-card-white

[Nginx] 인덱스 페이지에 디렉토리와 파일 리스트 출력

Nginx 파일 리스트 출력하기


Nginx 웹 서버를 사용할 때 특정 디렉토리의 인덱스 파일을 현재 디렉토리 및 하위 디렉토리의 파일 리스트로 출력하고 싶을 때가 있습니다.

일반적으로 Httpd 웹 서버를 사용할 때 인덱스 페이지를 디렉토리 목록으로 나타내는 방법과 같은 결과를 보입니다.

아래 사진은 파일 리스트를 출력한 결과의 예시입니다.

nginx-index-of-page

 

 

적용 방법


위와 같이 디렉토리 파일 리스트를 보여주고 싶을 때는 Nginx 설정 파일을 수정해주어야 합니다.

먼저 root 권한으로 터미널 텍스트 에디터를 사용하여 Nginx 설정 파일/etc/nginx/nginx.conf 파일(서버 환경에 따라 경로가 다를 수 있음)을 수정해보겠습니다.

[root@localhost ~]# vim /etc/nginx/nginx.conf

설정된 파일을 보시면 http 블록 내에 server 블록이 있을 것입니다. 여기에 location 블록을 만들어야 합니다.

location 블록에서 설정할 경로는 모든 디렉토리를 뜻하는 / 를 입력합니다. 결과적으로 다음과 같습니다.

...
    server {
        ...
        location / {
            
        }
        ...
    }
...

 

디렉토리 파일 리스트 옵션은 다음과 같이 설정해주어야 합니다.

autoindex on;

결과적으로 다음과 같이 보여질 것입니다.

...
    server {
        ...
        location / {
            autoindex on;
        }
        ...
    }
...

 

이번에는 특정 디렉토리에서만 리스트를 보여주고 싶은 경우가 있습니다. 예를 들면 document-list 디렉토리에서만 파일 리스트를 보여주게 하고 싶다면 다음과 같이 location 블록에 패턴을 넣어주시면 됩니다. (대략적인 예시는 다음과 같습니다.)

...
    server {
        ...
        location ~ ^/document-list/ {
            autoindex on;
        }
        ...
    }
...

이는 ^/document-list/ 패턴에 해당하는 경로에 대해 autoindex를 활성화한다는 의미입니다.

 

여기에 autoindex 옵션과 같이 사용할 수 있는 추가 옵션들이 있습니다.

  • autoindex_exact_size : 인덱스되는 파일에 파일 사이즈를 보여지게 할 것인지에 대한 여부입니다. 특별하게 보여줄 이유가 없다면 off 를 입력하여 사이즈를 숨길 수 있습니다. 옵션값은 onoff 가 있습니다.
  • autoindex_format : 인덱스 파일을 어떤 형식으로 나타낼 것인지에 대한 옵션입니다. 기본값은 html이며 이외에도 xml, json, jsonp 형식으로도 나타낼 수 있습니다.
  • autoindex_localtime : 인덱스 파일의 시간을 로컬 시간대로 표시할 것인지에 대한 여부입니다. 옵션값은 onoff 가 있으며 off로 지정하면 UTC 시간을 사용합니다.

 

추가 옵션을 사용한 예시는 다음과 같습니다.

...
    server {
        ...
        location ~ ^/document-list/ {
            autoindex on;
            autoindex_exact_size off;
            autoindex_format html;
            autoindex_localtime on;
            include fastcgi.conf;
        }
        ...
    }
...

 

이제 모든 설정이 완료되었다면 저장하고 터미널로 돌아옵니다. 설정 파일을 적용하려면 Nginx 서비스 설정을 다시 로드(reload)하거나 서버를 재시작(restart)해주어야 합니다.

[root@localhost ~]# service nginx reload

 

이제 해당 페이지의 디렉토리까지만 입력하여 적용이 완료되었는지 확인해봅니다.

  • 예시 : example.com/document-list/

 

구독
알림
guest

0 Comments
Inline Feedbacks
모든 댓글 보기
0
이 포스트에 대한 의견을 남겨주세요!x