활용하기

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

Nginx 파일 리스트 출력하기


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

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

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

 

 

적용 방법


위와 같이 디렉토리 파일 리스트를 보여주고 싶을 때는 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/

 

JooTC

안녕하세요. 테크놀로지에 관심이 많은 블로거입니다.

Recent Posts

[iOS] Xcode ‘You do not have required contracts to perform an operation’ 해결

Xcode에서 iOS 애플리케이션을 빌드(Archive)하고 App Store Connect에 앱을 업로드하는 도중, 아래와 같은 에러가 발생하면서 더…

1개월 ago

[안드로이드] INSTALL_FAILED_INSUFFICIENT_STORAGE 해결

INSTALL_FAILED_INSUFFICIENT_STORAGE 문제 안드로이드 스튜디오에서 에뮬레이터를 실행하고 개발중인 애플리케이션을 실행하려 하면 로그 창에 아래와 같이 표시되면서…

7개월 ago

Zalgo 텍스트와 이를 방지하는 방법

인터넷 커뮤니티 사이트에서 게시글이나 댓글에 간혹 장난을 목적으로 작성된 특이한 글자를 볼 수 있습니다. 위…

9개월 ago

리눅스 kill, killall 명령어 – 특정 프로세스 종료하기

리눅스 명령어 - kill, killall 리눅스 kill 명령어는 특정 프로세스를 종료해주는 명령어입니다. 백그라운드에서 실행되고 있는…

9개월 ago

JavaScript typeof null이 ‘object’인 이유

JavaScript는 역사가 긴 스크립트 프로그래밍 언어입니다. 세월이 흐르면서 많은 자바스크립트 표준이 만들어졌고, 현재는 많은 문법적…

9개월 ago

Mocha Error: Resolution method is overspecified. 해결 방법

NodeJS 테스트 프레임워크인 Mocha는 비동기 테스트를 지원합니다. 간혹 특정 테스트 스크립트를 작성하고 실행하면 아래와 같이…

9개월 ago