inception - 4. NGINX Container
우당탕탕 inception nginx 설정
🌟 TLS (SSL)
✨ HTTPS와 SSL
HTTP는 Hypertext Transfer Protocol
HTPPS의 S는 Over Secure Socker Layer, 즉 SSL 프로토콜 위에서 돌아가는 HTTP이고 보안이 강화된 HTTP라는 뜻
✨ SSL과 TLS
같은 말.
발명은 SSL이라는 이름으로 되었는데 표준화되면서 TLS라는 이름이 붙었다.
하지만 아직 SSL을 더 많이 씀
✨ SSL 인증서
클라이언트와 서버간의 통신을 제 3자가 보증하는 문서
서버는 이 인증서를 갖고 있으면서 클라이언트가 서버에 접속하면 이 인증서 정보를 건네고, 클라이언트 쪽에서는 인증서 정보를 확인하고 신뢰할 수 있는 연결인지를 확인한 뒤에 다음 절차를 수행한다.
🌟 Basic
안경잡이개발자 :: 도커파일(Dockerfile)을 이용해 nginx 웹 서버 도커 이미지 만들어보기
- base image를 데비안 버스터로
- 그 위에다가 엔진엑스를 설치
- 엔진엑스가 백그라운드에서 돌도록 명령어를 실행한다.
# base image : debian buster
FROM debian:buster
# install nginx
RUN apt-get update
RUN apt-get install -y nginx
# listen port 80
EXPOSE 80
# run nginx
ENTRYPOINT ["nginx", "-g", "daemon off;"]dockerfile을 실행해봅시다.
docker build --tag hello:0.1 .
# 결과 확인
docker imagescontainer를 만들어봅시다.
docker run --name hello_nginx -d -p 80:80 hello:0.1
# 실행 확인
docker ps접속해봅시다.
(호스트에서 접속이 안되어서 일단 VM 내 firefox로 접속함. (아마도 포트포워딩 문제인 것 같다.)
localhost:80

(10/28 포트포워딩까지 성공)


데몬으로 돌렸기 때문에 컨테이너를 제거할 때에는 중지하고 제거해야 함.
docker stop (컨테이너 이름)✨ 명령어 해설 (?)
docker build --tag hello:0.1 .docker build : dockerfile로부터 docker image를 생성하는 command
--tag : 만들 이미지의 이름과 태그를 지정. 여기서는 이름이 hello, 태그가 0.1이다.
. : Context, 즉 빌드 과정에서 사용할 파일들이 있는 곳, PATH 또는 URL이 들어갈 수 있는데 별 지정이 없으면 . 을 적어준다고 이해했다.
docker images
docker ps생성되어있는 도커 이미지들을 리스트로 보여주는 command
docker container ls | Docker Docs
동작중인 컨테이너의 목록 출력
docker run --name hello_nginx -d -p 80:80 hello:0.1docker run : 컨테이너를 생성하고, 실행하는 커맨드
--name : 컨테이너의 이름을 지정
-d : 컨테이너를 background에서 실행하게 함. Container ID를 출력한다.
-p : <연결하고자 하는 포트>: <container의 포트> 여기서는 컨테이너의 80번 포트를 호스트의 80번 포트에 연결한 것이다.
docker stop (컨테이너 이름)
docker rm (컨테이너 이름)
docker rmi (이미지 이름)docker container stop | Docker Docs
실행중인 컨테이너 멈춤
docker container rm | Docker Docs
컨테이너 삭제
이미지 삭제
✨ 문제 해결
Docker container stop 시에 permission denied 에러
🌟 TLS 설정 전 이것저것
✨ 컨테이너에 접속하기
# 컨테이너에 직접 들어가기
docker exec -it <container_name or ID> /bin/bash
# 컨테이너에서 나오기
exit✨ openssl 설치 직후 폴더 구조

ssl 이라는 폴더가 생기기 때문에 따로 Dockerfile에서 폴더를 만들어 줄 필요가 없었음.
✨ nginx 설정
nginx.conf 와 conf.d
나는 nginx 설정이 정말 싫다구요 | juneyr.dev
nginx.conf“파일”- nginx의 설정이 적혀 있는 핵심 파일.
- 서버가 커진다면 여기에 모든 설정을 몽땅 적는 것 보다는 다른 conf 파일로 빼서 인클루드 하는 방식으로 구성하는 것이 좋다.
conf.d“폴더”nginx.conf에서include로 불러올 수 있는 conf 파일들을 저장하는 폴더 (처음에는 비어있다.)- 이렇게 확장자가
.conf인 모든 파일들을nginx.conf파일에서 인클루드하기 때문에<어쩌고>.conf라고 이름만 지어서conf.d폴더 안에 넣어주면 될 것 같다.
