이전 포스팅을 통해 ec2에 build된 dist 폴더를 전달했음
이번 포스팅에서는 nginx를 통한 reverse Proxy와 html파일 배포 방법에 대해서 설명할 예정
nginx
고성능 웹 서버이자 리버스 프록시 서버, 로드 밸런서, 캐시 서버로 동작하는 오픈소스 소프트웨어
주요 역할
1. 웹 서버:정적 파일을 클라이언트에 서빙
2. 리버스 프록시: 외부 요청을 내부 애플리케이션으로 전달
3. 로드 밸런서: 여러 서버에 트래픽을 분산하여 부하를 줄임
4. 캐시 서버: 웹 요청을 캐싱하여 서버 부하를 줄이고 속도 향상
우리는 nginx로 웹서버와 리버스 프록시를 사용해 볼 예정
nginx 설치
sudo apt install -y nginx
nginx 설치 후 HTTPS 적용을 위해 LET's Encrpt를 사용
certbot 설치
sudo apt update
sudo apt install -y certbot python3-certbot-nginx
SSL 인증서 자동 발급 및 설정
sudo certbot --nginx -d {yourdomain} -d www.{yourdomain}
설치하면 질문 나옴
1. 이메일 입력
2. 서비스 약관 동의(Y)
성공 시 Nginx 파일 수정
cd /etc/nginx/sites-available
sudo vi mypost.conf
밑의 코드 작성
HTTP로 접속시 HTTPS로 리다이렉션하고 index.html 파일 보여줌
server {
listen 80;
server_name mynote.store www.mynote.store;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name mynote.store www.mynote.store;
ssl_certificate /etc/letsencrypt/live/mynote.store/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mynote.store/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
root /var/www/mynote/dist;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
location /assets/ {
expires 1y;
access_log off;
add_header Cache-Control "public, max-age=31536000, immutable";
}
}
작성후 :wq로 저장하고 나옴
nginx 재시작
sudo systemctl restart nginx
사이트 배포 확인

*저장 후 sites-enabled에 전달안되었을 경우
sudo ln -s /etc/nginx/sites-available/mynote.conf /etc/nginx/sites-enabled/
- sites-available
1. 모든 사이트의 설정 파일이 저장되는 곳
2. 여기에 있는 설정 파일이 실제로 활성화되지는 않음
3. 비활성화된 사이트의 설정을 보관하는 용도로도 사용 가능- sites-enabled
1. Nginx가 실제로 로드하는 사이트 설정이 저장되는 곳
2. sites-available/에 있는 파일을 ln -s로 연결해야 활성화됨
3. 실제 활성화된 사이트 목록을 확인 가능