공부중에 작성한 것이라 정확하지 않을 수 있습니다😀
일단 우리는 ubuntu 이미지를 기반으로 만든 컨테이너에 nginx 이미지를 설치하는 식으로 합시다.
👉 컨테이너 안으로 들어가서 명령어를 입력할 수 있는 상태가 된다.
apt-get install vim
설치도중 지역명을 선택하라고 하는데, 아시아니까 6번을 선택해준다.시간대도 서울(69) 선택.
cd etc/nginx
위의 명령어를 통해 컨테이너 내의 nginx 디렉토리로 이동을 하면
다음과 같은 목록이 나오는데, 우리가 여기서 주목할 디렉토리 및 파일은
nginx.conf
sites-avialable
sites-enabled
이렇게 총 세개이다. 이 파일에서 nginx에 관한 기본적인 설정을 해 줄 수 있다.
그 중, nginx.conf는 웹서버 기본 설정을 해 주는 파일이다.(웹서버의 설정은 우리가 생각하는 것처럼 GUI로 되어있지 않고, 이렇게 파일들로 되어있다.)
vi nginx.conf
를 입력하여 파일을 읽어보면,
user, worker_processes, pid, events, http의 항목으로 이루어져 있음을 볼 수 있다.
http 블록에서 밑으로 내려보면 다음과 같은 코드가 나오는데,
conf.d파일 내의 .conf확장자의 파일과 sites-enabled 디렉토리 내의 모든 파일을 읽어들이고 있다.
따라서, /etc/nginx/conf.d/mywebsite.com.conf 와 같이 conf.d 디레고리의 내에 파일을 두면, 웹서비스별 설정을 할 수 있다. (하나의 nginx 프로그램이 하나의 웹사이트만 설정하는 것이 아니라, 여러 개의 웹사이트를 다룰 수 있는 것이다.)
sites-enabled를 보기 전에, sites-aviable 디렉토리를 먼저 살펴보자.
vi sites-available/default
를 통해 설정 내용을 읽어보자.
listen : HTTP 요청을 받을 포트 설정
저기서 설정해 주는 포트는 docker run을 해 주었을 때의 서버 포트와 일치해야 한다. (docker run -p 80:8080 에서 8080/즉, 사용자가 쓸 포트 말고, 서버에서 연결해줄 포트.)
server_name : 요청을 받을 도메인의 이름 설정
localhost나 별도 도메인 이름이 없다면, 기본설정(_)으로 두어도 된다.
server name fun-coding.org www.fun-coding.org;
와 같은 식으로 설정을 한다.
location 설정
웹 주소 따라 어떤 HTML파일을 사용자에게 보여줄 것인지를 location 설정을 통해 설정할 수 있다.
만약, location으로 경로를 설정해 주지 않는다면, 기본 루트인 var/www/index.html 혹은 location 밖의 index항목에 있는 html 페이지가 사용자에게 리턴될 것이다.
location설정을 마친 후,
다음과 같이 경로명과 동일한(위의 코드의 경우,flask) 의 폴더를 /var/www 아래에 만들고, 그 내에 html 파일을 넣으면 된다.
즉, 경로마다 디렉토리를 하나씩 만들어 주어야 한다.
앞서 nginx.conf 에 관한 설명을 했을 때, sites-enalbed를 include 하고 있었는데, sites-enalbed는 sited-avaialbe/default의 symbolic link 파일이다.
따라서 sites-available/default의 설정을 바꾸어 준다면, sites-enabled/default의 내용도 자동으로 바뀌게 되고, 그 파일을 nginx.conf파일에서 include 함으로서 우리가 설정해준 location 경로가 웹서버로 전달이 되게 된다.(왜 이렇게 만들었을까...?)