1️⃣ 도메인 발급 및 AWS Route53 DNS 설정
SSL 인증서를 발급받으려면 도메인 주소가 있어야함
Route53는 설정한 도메인으로 라우팅하여 접속할 수 있게하는 AWS 서비스 이다.
참고 사이트: https://jindevelopetravel0919.tistory.com/189
2️⃣ Nginx 설치
Nginx 설치
sudo apt update
sudo apt install nginx
방화벽 설정
sudo ufw app list
#출력
#Available applications:
# Nginx Full
# Nginx HTTP
# Nginx HTTPS
# OpenSSH
각 설정이 의미하는 바는 다음과 같습니다:
- Nginx HTTP: 포트 80번만 허용
- Nginx HTTPS: 포트 443번만 허용
- Nginx Full: 포트 80, 443번 허용
방화벽 설정 적용
sudo ufw allow 'Nginx HTTP'
상태 체크
sudo ufw status
#출력
#Status: active
#
#To Action From
#-- ------ ----
#Nginx HTTP ALLOW Anywhere
#Nginx HTTP (v6) ALLOW Anywhere (v6)
만약 방화벽이 inactive 상태라면 아래 명령어를 입력하여 활성화
sudo ufw enable
3️⃣ Nginx 상태 체크
systemctl status nginx
#출력(정상이면)
# nginx.service - A high performance web server and a reverse proxy server
# Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
# Active: active (running) since Wed 2022-04-20 09:03:47 UTC; 24h ago
# Docs: man:nginx(8)
# Main PID: 20596 (nginx)
# Tasks: 2 (limit: 1147)
# Memory: 5.4M
# CGroup: /system.slice/nginx.service
# ├─20596 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
# └─20597 nginx: worker process
주소창에 도메인 이름이나 ip 입력해서 기본 Nginx 랜딩 페이지가 표시되는지 확인
Nginx 관리 명령어
# 시작
sudo systemctl start nginx
# 종료
sudo systemctl stop nginx
# 재시작
sudo systemctl restart nginx
# 리로드 (변경된 설정을 적용하는 경우 사용. 기존 연결을 끊지 않음.)
sudo systemctl reload nginx
# 기본적으로 서버 시작 시 nginx가 자동으로 실행되는데, 이를 막고 싶은 경우
sudo systemctl disable nginx
# 서버 시작 시 자동으로 nginx를 실행하고 싶은 경우
sudo systemctl enable nginx
4️⃣ Nginx 도메인 설정
도메인 주소만 입력해주면 됨
cd etc/nginx/sites-enabled
sudo vi default
# 아래 내용 입력
server {
listen 80; # 80포트로 받을 때
listen [::]:80;
server_name 도메인주소;
}
5️⃣ SSL 인증서 발급
Cerbot 설치
sudo apt install certbot python3-certbot-nginx
방화벽에서 HTTPS 허용
sudo ufw allow 'Nginx Full' # HTTP와 HTTPS 모두 허용
sudo ufw delete allow 'Nginx HTTP' # 기존의 HTTP 허용 설정 제거
certbot 을 이용한 인증서 발급 방법은 아래와 같이 크게 4가지 방법이 존재하는데
(1) webroot, (2) webserver, (3) standalone, (4) dns 를 이용한 인증서 발급이 있다.
여기서 적용할건 (2) webserver 으로 Nginx 웹서버 옵션을 이용하여 발급 받는다.
웹서버를 사용하면 (3) standalone 와 달리 발급받을때 서비스를 중단 안해도 된다.
인증서 발급
sudo certbot --nginx certonly -d [도메인]
이후에 이메일을 입력하라고 하면 이메일 주소를 입력한다.
축하한다고 뜨면 발급 성공이다.
6️⃣ Nginx Https 설정
cd etc/nginx/sites-enabled
sudo vi default
# 아래 내용 입력
server {
listen 80; # 80포트로 받을 때
listen [::]:80;
server_name zayoung21.store; # 도메인주소
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name zayoung21.store;
# ssl 인증서 적용하기
ssl_certificate /etc/letsencrypt/live/zayoung21.store/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/zayoung21.store/privkey.pem;
}
이후 개발하면 프론트엔드, 백엔드 포트를 넣어주어야한다.
아래 처럼
다음 https://[도메인] 으로 접속해보자
성공하면 아래 페이지가 보인다.
접속에 실패한다면 아래를 확인해보자
1) EC2 인바운드 규칙 포트로 443이 열려있어야한다.
2) listen 443 ssl -> ssl 이 설정 파일에 있는지 확인해보자
3) 방화벽에 해당 포트들이 허용되어 있는지 확인해보자
'백앤드 > CI|CD' 카테고리의 다른 글
[CI/CD] AWS Route53 DNS 설정 (0) | 2024.05.22 |
---|---|
[CI|CD] EC2 탄력적 IP 적용 (0) | 2024.05.22 |
[CI/CD] 도커 컨테이너끼리는 서로 통신이 가능하다. (0) | 2024.03.19 |
[CI/CD] 104: Connection reset by peer 502 에러 해결 (0) | 2024.03.19 |