nginx
or caddy
를 통해서 reverse proxy(port forwarding) 하기API 서버 개발 후 Github Actions와 AWS EC2로 배포를 진행했다. 도메인이나 HTTPS에 대한 필요성을 느끼지 못했다. "HTTP로 배포해도 별 문제 없겠지~ 8080 포트 있어도 통신하는 데는 지장이 없으니깐 괜찮아~" 라고 생각했다. 그렇게 프론트엔드와 http://ip번호:8080
으로 통신하게 되었다.
그러나 진짜 문제는 프로젝트 마감 직전에 발생했다. 프론트엔드 로컬에서 화면을 개발하고 API 테스트를 할 때는 HTTP 환경이라 크게 문제가 되지 않았는데, Github Pages로 배포 후 HTTP 보안 경고가 발생했다. Github Pages는 HTTPS를 사용하기 때문이다.
귀찮은 설정들을 따로 해줘야 하는 것도 문제였지만, HTTP 이슈로 인해 모바일 환경에서는 흰 페이지만 뜨는 문제도 있었다. 그래서 결국 서비스를 위한 도메인을 생성하였고, SSL 인증서를 발급받아 HTTP를 HTTPS로 변환하게 되었다!
Web Browser
: 사용자(클라이언트)가 요청한 웹 서버의 결과를 화면에 출력하는 애플리케이션Web Server
: 인터넷을 기반으로 클라이언트에게 웹 서비스를 제공하는 컴퓨터Web Application Server(WAS)
: 웹 애플리케이션을 실행시켜 필요한 기능을 수행하고 그 결과를 웹 서버에게 전달하는 일종의 미들웨어DNS Record
DNS Record Type
velog.io/@sians0209
의 CNAME이 velog.io/@siyeonSon
일 때, velog.io/@siyeonSon
을 입력하면 velog.io/@sians0209
로 접근 가능클라이언트 사이드 렌더링(CSR)
서버 사이드 렌더링(SSR)
tls ssl 차이
TLS 는 SSL의 업데이트 버전으로 SSL의 최종버전인 3.0과 TLS의 최초버전의 차이는 크지않으며, 이름이 바뀐것은 SSL을 개발한 Netscape가 업데이트에 참여하지 않게 되어 소유권 변경을 위해서였다고 한다.
# Nginx 설치
sudo apt install nginx
# Nginx 실행
sudo service nginx start
# Nignx 재실행
sudo service nginx restart
# Nginx 삭제
sudo apt-get remove --purge nginx nginx-full nginx-common
sudo apt update
sudo apt upgrade -y
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx
cd /etc/nginx/sites-available
sudo mkdir /etc/nginx/sites-available
을 통해 폴더를 생성한다sudo vi test.conf
파일 생성 후 다음 내용을 작성한다server {
listen 80;
server_name example.com www.example.com; # 수정
return 301 https://example.com$request_uri; # 수정
![](https://i.imgur.com/fY4piAy.png)
![](https://i.imgur.com/uqGhDWV.png)
}
server {
listen 443 ssl;
server_name example.com www.example.com; # 수정
# Certificate
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # 수정
# Private Key
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # 수정
location / {
proxy_pass http://localhost:8080; # 수정
proxy_set_header Host $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 nginx -t
sudo ln -s /etc/nginx/sites-available/test.conf /etc/nginx/sites-enabled/
sudo rm -rf /etc/nginx/sites-available/default
sudo rm -rf /etc/nginx/sites-enabled/default
sudo certbot renew --dry-run
sudo crontab -e
# nano 에디터를 사용함
0 0 1 * * certbot renew --renew-hook="sudo service nginx restart"
# cntl+x 를 통해서 저장 후 종료 가능
# 크론탭 갱신
sudo service cron restart