42 Seoul: ft_server: autoindex

Chaewon Kang·2020년 9월 30일
0

42 seoul

목록 보기
4/17
post-custom-banner

autoindex

NginX는 Apache나 lighthttpd와 마찬가지로, 가상 호스트 설정 항목인 server{...} 블럭 내에서 root로 설정한 디렉토리 내의 파일을 목록화해서 파일을 다운로드 할 수 있는 디렉토리 리스팅 기능을 제공한다. 이를 autoindex 라고 한다. 디렉토리 리스팅 기능은 CentOS 리눅스 배포판 아카이브 페이지 같은 단순히 파일을 제공하는 용도일 때, 별도의 HTML 파일을 구성하지 않고 간편히 이용할 수 있다.

디렉토리 리스팅을 설정하는 방법은, server 블럭 내에 files 디렉토리의 로케이션을 별도로 설정하고, 루트 디렉토리를 설정한 후, autoindex on구문을 넣어 주면 된다.

vi /etc/nginx/sites-available/default 를 입력해서, NginX Config 파일을 열어 준다. 그리고 server 블럭을 아래와 같이 수정한다.

	#index index.php index.html index.htm index.nginx-debian.html;

	location / {
		autoindex on;
		try_files $uri $uri/ =404;
	}

여기까지 했을 때, localhost 혹은 localhost:80으로 접속하면 아래와 같은 경고가 뜨면서 접속이 안 되는 문제가 발생한다.

다른 사람들의 사례에서는 Advanced (고급) 버튼을 누르고 사이트로 이동할 수 있다고 알고 있었는데, 나는 해당되지 않는 듯 했다. cluster hotline에 물어본 결과 해결 법은 몇 가지가 있다. 첫째, 사파리 등의 다른 브라우저를 이용할 것. 둘째, 해당 화면에 포커스를 두고 thisisunsafe를 입력. 신기하게도 두번째 방법으로 해결했다.

입력하고 나면 아래와 같이 auto indexing (directory listin) 기능이 활성화 되어 있고, 링크를 눌러서 다운로드 하거나 해당 디렉토리로 접근할 수 있다. 여기에 phpMyAdmin 압축 파일이 왜 끼어 있는지 모르겠는데, 이는 Dockerfile 작성할 때 해결을 해 보자.

여기까지 하면 프로젝트에서 요구하는 사항들을 다 만족했다. 다시 처음으로 돌아가 프로젝트의 요구 사항이 무엇이었는지 확인해 보자.

Mandatory Part

  • 하나의 도커 컨테이너 내부에 Nginx를 이용한 웹 서버를 세팅한다. 컨테이너 운영체제는 debian buster이다.
  • 웹 서버는 동시에 여러 서비스를 실행할 수 있어야 한다: 워드프레스 웹사이트, phpMyAdmin 과 MySQL. 데이터베이스가 워드프레스와 phpMyAdmin과 함께 실행될 수 있도록 한다.
  • 서버는 SSL 프로토콜을 사용할 수 있어야 한다.
  • url에 의존하여 서버가 옳은 웹사이트로 리디렉트 될 수 있어야 한다.
  • 서버는 오토인덱스와 함께 구동되어야 한다. 오토인덱스는 비활성화 상태에 놓일 수 있어야 한다.

이제 여기에 있는 문장들이 무슨 의미인지 다 이해할 수 있다.

profile
문학적 상상력과 기술적 가능성
post-custom-banner

0개의 댓글