이 글에서는 EC2 인스턴스에 도메인을 등록하고 HTTPS를 설정하고자 한다.
원래 AWS Certificate Manager와 로드밸런서(ALB)를 사용하여 HTTPS 설정을 하려고 했으나 로드밸런서IPv4 과금 이슈로 인해 Nginx를 사용하고자 한다.
가비아에서 구매하였다. (구매과정은 생략)
도메인 → DNS 정보 → DNS 관리 → 설정 -> 레코드 수정
다음과 같은 A 레코드를 추가한다.
- A타입 @ : EC2 퍼블릭 IP 주소
- A타입 www : EC2 퍼블릭 IP 주소
Route 53에서 생성한 호스팅 영역의 네임서버 정보를 확인한다.
가비아 도메인 관리 페이지에서 "도메인 정보 변경" -> "네임서버 설정"에서 1~4차 네임서버를 입력한다. (맨 뒤의 점(.)은 제외)
sudo apt update
sudo apt install nginx
sudo apt install certbot python3-certbot-nginx
sudo certbot certonly --nginx -d mydomain.com
sudo ls /etc/letsencrypt/live/mydomain.com
privkey.pem
: 비공개 키fullchain.pem
: 전체 인증서 체인 (서버 인증서 + 중간 인증서)cert.pem
: 서버 인증서chain.pem
: 중간 인증서sudo nano /etc/nginx/sites-available/default
아래 내용을 추가한다.
# 80 포트로 들어왔을때 https 경로로 리디렉션
server {
listen 80;
server_name mydomain.com;
return 301 https://mydomain.com$request_uri;
}
# 443 포트로 들어왔을때 서버 포트인 3000 포트로 포워딩
server {
listen 443 ssl http2;
server_name mydomain.com;
# ssl 인증서 적용
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
sudo systemctl restart nginx