


- www.new-domain
- new-domain
서버에 대한 모든 요청은 NginX가 처리합니다.
따라서, 애플리케이션이 위치한 EC2에 NginX를 설치하면 동일한 EC2 리소스를 나누어 사용하기 때문에 부하가 발생할 수도 있다는 우려가 있습니다. 보통은 다른 EC2에 나누어 설치하는 것을 권장한다고 합니다.
그러나 저는 개발 서버이고 단기간 프로젝트이기 때문에 감안하고 그냥 같이 설치해주겠습니다 .. ^^
# nginx 설치
sudo apt install nginx
# nginx 실행
sudo service nginx start
# nginx 실행 가능 여부 확인
sudo service nginx status
Ubuntu 환경에서 인증서 발급을 위한 certbot을 설치해줍니다.
Certbot?
Let's Encrypt 인증서를 발급받고 사용하는 무료 오픈소스 도구
# certbot 설치
sudo apt install certbot
# certbot-nginx를 위한 플러그인 설치
sudo apt install python3-certbot-nginx
sudo certbot --nginx -d $DOMAIN_ADDR
위의 명령어를 수행하고 알림 받을 이메일 주소, 각종 동의 여부를 확인해주면, 인증서를 발급받을 수 있습니다.

아래 위치로 이동해, default 파일을 열어 config 내용을 편집해줍니다.
해당 파일은 일반 권한으로는 편집이 불가하므로, sudo 명령이 필요합니다.
cd /etc/nginx/sites-available
sudo vi default
편집한 config 내용은 다음과 같습니다.
80포트와 443포트에 대한 설정을 적용해주었습니다.
server {
# 80번 포트의 요청 받음
listen 80;
listen [::]:80;
server_name dev-learnmate.store;
# https로 리다이렉트
return 301 https://dev-learnmate.store$request_uri;
}
server {
# 443번 포트의 요청 받음
listen 443 ssl;
server_name dev-learnmate.store;
# public key(인증서) 위치
ssl_certificate /etc/letsencrypt/live/dev-learnmate.store/fullchain.pem;
# private key 위치
ssl_certificate_key /etc/letsencrypt/live/dev-learnmate.store/privkey.pem;
# certbot 추천 ssl 설정 파일
include /etc/letsencrypt/options-ssl-nginx.conf;
# 보안용 파라미터 설정
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
# 애플리케이션 서버로 요청 프록시
# 동일한 EC2에 위치하기 때문에 localhost 이용
location / {
proxy_pass http://localhost:8080;
}
}
오타가 있을 수 있으니 아래 명령어를 통해 파일의 문법을 검증해줍니다.
sudo nginx -t
변경된 내용을 적용하기 위해 Nginx를 재시작합니다.
sudo service nginx restart
마지막으로, 설정한 도메인 주소로 접속해보면, 다음과 같이 성공적으로 https가 적용된 것을 확인할 수 있습니다.

Reference