1. 도메인과 EC2 연결
필자는 가비아에서 도메인을 구매 했다.
1) 가비아 도메인 구매 후 연결

가비아에서 도매인 구매를 완료 했다면 우측 상단 "My가비아"를 클릭한다.

이용 중인 서비스에서 도메인을 클릭한다.

DNS 관리툴을 선택 해 DNS 관리 툴로 접속한다.

구매한 도메인을 체크하고 "DNS 설정"버튼을 클릭한다.

"레코드 추가" 버튼을 클릭해 사용자가 원하는 호스트를 입력한다.
호스트
@ : 특정 서브도메인이 아닌 기본 도메인 자체를 나타낸다. 예를 들어 도메인이. example.com이라면 example.com 그대로 입력만 해도 접속된다.
www : www.example.com 으로 입력해 접속
갑/위치
AWS 퍼블릭 IPv4 주소를 입력하면 된다.
TTL(Time To Live)
DNS 레코드의 유효기간을 의미한다. 예를 들어 example.com의 A 레코드 TTL이 3600초(1시간)이므로, 1시간 동안 캐시된다.
TTL 값(초)
캐싱기간
용도
30~300초
30초~5분
자주 변경되는 레코드 (예 : 테스트 서버)
600~3600초
10분~1시간
일반적인 설정 (예 : 웹사이트)
86400초 이상
하루 이상
변경이 거의 없는 레코드 (예 : 메일서버)
2. EC2 접속
터미널창에 다음 명령어를 입력해 인스턴스에 접속한다.
ssh -i <pem파일 명> username@<공개 ip>
3. Nginx 설치
Nginx가 설치되어야 한다. 접속한 인스턴스에 다음 명령어를 입력해 Nginx를 설치한다.
sudo apt update
sudo apt install nginx -y
설치 후 Nginx를 실행 한다.
sudo systemctl start nginx
4. Nginx 가상 호스트 설정
Nginx의 가상 호스트 설정 파일을 편집하여 도메인을 설정해야 한다.
1) 설정 파일 생성
기본적으로 설정 파일은 /etc/nginx/sites-available/
에 저장되고, 활성화된 설정은 /etc/nginx/sites-enabled/
에 링크로 연결된다.
아래 명령어를 입력 해 파일을 생성한다.
sudo nano /etc/nginx/sites-available/example.com
파일이 만들어졌다면 아래 설정을 추가해준다.
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
이후 두 가지 방법이 있다. 웹 루트 디렉토리를 생성 하는 방법과 ec2에 프로젝트를 clone해서 pm2로 돌려 port를 설정하는 방법이다.
2) 설정 활성화
설정을 활성화하려면 sites-enabled
디렉토리에 심볼릭 링크를 만든다.
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
설정을 활성화 했다면 구매했던 도메인을 인터넷에 접속해 다음과 같은 화면이 뜨면 성공이다.

3) 방법1 : 웹 루트 디렉토리 생성
도메인에 대한 웹 루트 디렉토리를 생성한다.
sudo mkdir -p /var/www/example.com
sudo chown -R $USER:$USER /var/www/example.com
sudo chmod -R 755 /var/www/example.com
index.html
파일을 생성하여 테스트 페이지를 추가한다.
4) 방법 2 : 프로젝트 clone
git clone 프로젝트
프로젝트를 클론 한 후 프로젝트의 실행 port 번호를 설정한다. 예를들어 포트번호가 8000 이면 설정 파일로 가서 proxy_pass
를 추가한다.
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html index.htm;
location / {
proxy_pass http://localhost:8000; // 추가
}
}
5) Nginx 설정 테스트 및 재시작
sudo nginx -t
이상이 없다면 다음과 같은 문자가 뜬다.

문제가 없다면 Nginx를 재시작하면 된다.
sudo systemctl restart nginx
이제 본인 도메인주소로 입력하면 본인이 설정한 프로젝트나 html에 맞게 뜨면 성공이다.
5. HTTPS 설정
Let's Encrypt를 사용하여 HTTPS를 설정하면 보안 연결을 제공할 수 있다. 이를 위해 certbot
을 사용한다.
1) Cerbot 설치
sudo apt install certbot python3-certbot-nginx -y
2) SSL 인증서 발급 및 설정
Certbot을 실행하여 인증서를 자동으로 발급받고 Nginx에 적용한다.
sudo certbot --nginx -d example.com -d www.example.com
3) 인증서 갱신 테스트
인증서 자동 갱신이 작동하는지 확인한다.
sudo certbot renew --dry-run
이제 브라우저에서 http://example.com
또는 https://example.com
에 접속하여 페이지가 제대로 표시되는지 확인하면 된다.