도커 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.
도커로 nginx 웹서버 구축하기
docker를 통해 ubuntu:20.04에 nginx 웹서버를 구축하는 연습을 하고자 한다.
ubuntu:20.04 & nginx 웹서버
[1단계]
docker run -dit -p 80:8080 --name myos ubuntu:20.04
docker exec -it myos /bin/bash
ubuntu:20.04 image로 docker container를 생성하고 실행시킨다.
그 이후에 docker exec 명령을 사용하여, 해당 docker container로 들어간다.
*결과 :
[2단계]
apt-get update
apt-get install nginx
" apt-get update " 명령으로 unbuntu 패키지를 업데이트 한 후, " apt-get install nginx " 명령으로 nginx(최신 버전)를 설치한다.
*결과 :
[3단계]
find -name nginx.conf
cd /etc/nginx/
vi nginx.conf
find 명령을 사용하여 nginx.conf의 이름을 가진 파일의 위치를 찾을 수 있으며, nginx.conf 파일은 nginx 웹 서버의 기본 설정 파일이다.
참고로, vi 명령으로 nginx.conf 파일을 열기 위해서는 " apt-get install vim " 명령으로 vim을 미리 설치해둬야 한다.
*결과 :
[4단계]
vi nginx.conf
해당 명령으로 nginx.conf 파일에 들어간다.
*결과 :
일반적으로 nginx.conf 파일의 http 항목에서 nginx 웹 서버의 기본 설정을 참조한다.
http 항목에서 include 설정은 다른 파일을 nginx.conf 파일로 가져와서 적용시키는 설정으로 nginx.conf 파일 이외에 존재하는 nginx의 기본 설정 파일들을 불러와서 적용시키는데 사용된다.
*참고내용
/etc/nginx/conf.d/ 디렉토리에 존재하는 *.conf 파일과 /etc/nginx/sites-enabled/ 디렉토리에 존재하는 모든 파일들을 확인하는 방법
*결과 :
해당 파일은 /etc/nginx/sites-enabled 디렉토리에 존재하는 default 파일이다.
이 파일도 nginx 웹 서버의 기본 설정이 저장된 파일이다. (include 설정으로 nginx.conf 파일에 적용되어 있음)
참고로, default 파일의 server 항목에 nginx 웹 서버를 사용하는데 필요한 설정들이 존재한다.
[5단계]
default 파일에서 nginx 웹 서버의 기본 설정을 조작하는 방법
# default 파일의 server 항목 설정
server 항목에서 80포트를 8080포트로 변경했다.
이는 8080포트를 통해 모든 웹 서버의 요청을 받도록 nginx 웹 서버의 기본 설정을 변경하는 것이다.
*참고내용
listen 8080 default_server; 는 IPv4 관련 설정
listen [::] 8080 default_server; 는 IPv6 관련 설정
default_server는 모든 웹 서버의 요청을 받겠다는 설정
server 항목의 server_name을 통해 요청 받을 도메인의 이름을 설정할 수 있다.
참고로, 요청받을 도메인의 이름이 없다면 기본 설정인 언더바(_) 상태로 두면 된다.
server 항목에서 root /var/www/html; 설정은 nginx 웹 서버가 html 파일을 찾는 경로이다.
즉, 특정 IP주소로 nginx 웹 서버에 html 파일 요청이 들어오면 nginx 웹 서버는 /var/www/html 경로에서 index, index.html, index.htm, index.nginx-debian.html 순서로 html 파일을 찾아서 해당 파일을 리턴해준다.
location 설정은 특정 IP주소로 요청이 들어올 때, 요청되는 파일을 찾는 디폴트 폴더를 root로 지정하는 설정이다.
즉, 특정 IP 주소의 경로와 매칭되는 폴더 및 파일이 있는지 찾아보고 없으면 404 HTTP 응답 코드를 리턴하라는 설정이다.
참고로, default 파일의 설정을 변경했으면 " service nginx restart " 명령으로 nginx를 재부팅해야만 변경된 설정들이 적용된다.
*추가내용(location 설정)
default 파일에 location 설정을 추가하는 경우 nginx 웹 서버가 내부적으로 요청된 파일을 찾는 매커니즘을 알아보고자 한다.
(ex)
location /blog {
root /var/www;
}
이처럼 location 설정을 추가하는 경우, nginx 웹 서버가 요청된 html 파일을 찾는 매커니즘은 다음과 같다.
- 요청된 IP주소 : 외부 IP주소/aaa.html
이 경우에는 디폴트 location 설정에 따라 root /var/www/html 경로에서 aaa.html 파일이 있는지 확인한다.
- 요청된 IP주소 : 외부 IP주소/blog/aaa.html
이 경우에는 새롭게 추가한 location 설정에 따라 root /var/www 경로에서 aaa.html 파일이 있는지 확인한다.
- 요청된 IP주소 : 외부 IP주소/bbb/aaa.html
이 경우에는 디폴트 location 설정에 따라 root /var/www/html/bbb 경로에서 aaa.html 파일이 있는지 확인한다.
[6단계]
5단계에서 server 항목의 설정 중 디폴트 포트 번호를 80에서 8080으로 변경했기 때문에, 외부에서 특정 IP주소(기본 값 80포트)로 접속하면 docker container 내부의 8080로 연결되어 그 결과 nginx 웹 서버의 8080로 접속할 수 있다.
단, EC2 서버의 보안그룹 인바운드 규칙에서 사전에 80포트를 열어놓아야만 접속할 수 있다.
*결과 :
해당 페이지는 nginx 웹 서버가 html 파일 요청에 따라 /var/www/html 경로에서 index.nginx-debian.html 파일을 찾아서 리턴해준 결과이다.
*참고내용
'Docker' 카테고리의 다른 글
Docker - reverse proxy와 nginx 웹서버의 주요 설정 (1) | 2021.12.25 |
---|---|
Docker - docker compose 기본 사용법 (2) | 2021.12.22 |
Docker - 컨테이너와 컨테이너를 연결하기 (0) | 2021.12.19 |
Docker - 도커로 주피터 노트북 서버 만들기 (0) | 2021.12.19 |
Docker - docker 기타 명령 (0) | 2021.12.18 |
댓글