목표 : CorazyArcade.site에 접속하면 프론트엔드 화면이 보이도록 진행
과정 : 도메인 구매 → EC2 생성 → DNS 설정 → 프론트 프로젝트에 Dockerfile, nignx.conf 를 추가 → EC2에 올려 빌드 → Certbot으로 SSL 인증서 발급 으로 진행합니다.
도메인 구매는 가비아에서 진행했다. (왜?) CorazyArcade.site 를 2750원에 1년 구매해서 사용할 것 같다.

HTTPS 접근을 허용하고, 로그와 정적 파일/캐시를 위한 볼륨을 추가 배치해서 안전하게 생성하였습니다.


가비아 -> DNS 설정을 들어가서
호스트(레코드) @ , www (따로 진행)
타입 A
값/위치 EC2의 퍼블릭 IP 주소
TTL 3600

설정 한다. 설정 한 후 확인해보기 위해서 nslookup corazyarcade.site 를 CMD에서 실행해보면 권한 없는 응답으로 내 IP가 도메인 이름으로 잘 설정된 것을 확인할 수 있다.

멀티 스테이지 빌드 방식으로 Dockerfile을 생성했다.
빌드 스테이지에서는 프론트엔드 파일을 복사하고, 의존성을 설치해서 build한다.
배포 스테이지에서는 Build한 dist 폴더를 nignx 서빙 디렉토리로 복사한 후 nignx를 가동시킨다.
nginx는 서버 이름을 명시해서 보안성을 높이고, Gzip 압축을 통해 성능 최적화를 하였다. 그리고 정적 파일은 캐싱을 하였고, HTML 파일은 캐시하지 않음으로써 항상 최신 버전을 제공하도록 진행하였다.
자세한 건 따로 포스팅 하였다. -> https://velog.io/@hks_0827/Infra-%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EC%84%9C%EB%B2%84-%EB%B0%B0%ED%8F%AC%EA%B8%B0
# 프로젝트 디렉토리에서
cd your-repo
# Docker 이미지 빌드
docker build -t corazyarcade-frontend .
# 빌드 완료 후 컨테이너 실행
docker run -d \
-p 80:80 \
--name corazyarcade-frontend \
--restart unless-stopped \
corazyarcade-frontend
EC2에 접속해서 Git으로 불러온 디렉토리에서 빌드를 진행
(추가) 빌드 명령어가 너무 길어서 docker-compose 생성했다.
Certbot이 Let's Encrypt 서버를 통해 무료 SSL 인증서를 발급 받았고, HTTP(80) -> HTTPS(443) 으로 자동 리다이렉트 되도록 설정하였다.
추가로, 90일마다 자동 갱신되도록 설정해주었다.
# Certbot 설치
sudo yum install -y certbot
# Standalone 모드 -> 임시 웹서버 80번 포트에 띄워서 검증
sudo certbot certonly --standalone \
-d corazyarcade.site \
-d www.corazyarcade.site \
--email your-email@example.com \
--agree-tos \
--non-interactive
인증서 만료 이메일과 이용약관 동의, 자동 진행까지 설정 후 진행하였다.
유의사항으로는 80포트를 비워두고 이 명령어를 실행해야 한다. 임시로 80번 포트를 사용해서 검증하기 때문에
이제 nignx.conf 를 SSL 버전으로 생성해줘야 한다.
HTTP 요청을 HTTPS 로 리다이렉트 시켜주는 것이다.
그렇게 HTTPS 설정을 해준다.
SSL 인증서 경로와 SSL 프로토콜 및 암호화 설정, HSTS를 통해서 HTTPS를 강제 함으로써 보안성을 높였다.
마지막으로 컨테이너를 인증서 마운트하여 실행하면 끝~
https://www.corazyarcade.site/

해킹할게요