이 포스트는 이전 포스트를 이어서 쓴 글입니다.
https://lucian-blog.tistory.com/143
이제 NginX를 깔아본다.
먼저 root로 돌아온다.
cd /
다시한번 Nginx 설치하기 전에 서버의 패키지 목록을 업데이트한다.
sudo apt-get update
nginx깔기 ( y 키 입력하라고 뜨면 y 엔터~)
sudo apt-get install nginx
nginx설치되면 실행하여 확인할 수 있음
sudo systemctl start nginx
sudo systemctl status nginx
이렇게 active가 뜨면 잘 실행되고 있는 중
만약 중지하기 아래 코드를 넣으면 된다.(다시 킬 땐 start 로)
sudo systemctl stop nginx
근데 지금은 중지하기를 하지 않는다!
nginx 버전 확인해보자.
sudo dpkg -l nginx
나는 1.18.0 최신버전이다
nginx가 설치되었었고 실행되었으면 서버이름을 즉 도메인을 등록해줘야한다.
그래야지 도메인으로 접속할 때 nginx 프록시 서버로 접속이 되기 떄문이다.
nano or vim을 쓰면 되는데 vim은 눈아파서... nano가 훨씬 좋은 것 같다.(nano나 vim은 파일 수정할수 있는 명령어들)
sudo nano /etc/nginx/sites-available/default
ctrl+w 로 server_name을 검색.
server_name _;를
server_name 자신이 산 도메인 주소.com www.자신이 산 도메인 주소.com;
을 넣어준다.
입력을 했으면 ctrl+x 후에 y 엔터를 쳐서 빠져나온다.
잘들어가 있는지 한번더 확인하자.(스펠링한번 잘못쳤다가 30분을 허탕친다..)
이제 ec2의 방화벽에서 nginx 포트를 열어줘야한다.
방화벽을 활성화 시키고 총 3가지로 80, 443, 22번 포트를 열어줄 것이다.
// 방화벽 활성화 시작
sudo ufw enable
//ufw ssh http 허용(포트 80)
sudo ufw allow http
//ufw ssh https 허용(포트 443)
sudo ufw allow https
//ufw ssh 허용(포트 22)
sudo ufw allow ssh
방화벽 리로드 후 상태보기
sudo ufw reload
sudo ufw status
이제 진짜 거의 다끝났다.
한번 크롬창에 우리가 썼던 도메인 주소를 쓰거나 ec2의 퍼블릭IP를 주소창에 넣어보자!
당연히 포트번호는 빼고(도메인 주소는 한 10분정도 기달려줘야 뜬다! 가비아의 도메인 시스템과 로딩되는 시간인 듯 하다.)
이런 창이 나오면 잘 진행 중이다.
이제 인증서를 받을 차례이다.
let's encrypt라는 인증 기관에서 인증서를 받아오는데(무료)
certbot이란 let's Encrypt 인증서를 자동으로 발급 및 갱신 해주는 봇 프로그램을 설치해서 받을 것이다.
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python3-certbot-nginx // ubuntu 20버전부터 python3를 사용, linux 18버전은 기냥 python
// 1. email 입력 : 자신이 주로 쓰는 이메일 주소를 쓰면 된다.
// 2. 동의하기 : a
// 3. 동의하기 : y
// 4. 리다이렉트 설정 : 2 (추후에 수정을 위해 2를 눌러준다.)
sudo certbot --nginx -d 본인이구매한도메인 -d www.본인이구매한도메인
//예시 sudo certbot --nginx -d lch.online -d www.-d lch.online
결과 창인
IMPORTANT NOTES:
에서 Congratulations!가 나오면 성공적으로 인증서를 발급받은 것이다!
모자이크 된 부분은 나의 도메인 주소이다~
이제 인증서까지 받아왔다. fullchain.pem과 privkey.pem도 있고 https로 연결할 준비가 완료되었다.
그러나 아직 nginx서버와 우리의 메인서버는 이어주지 않았기에 /etc/nginx/sites-available/default에서 연결시켜줘야한다.
sudo nano /etc/nginx/sites-available/default
이전에 했던 것처럼 ctrl+w로 server_name을 검색한 후 밑에 있는 location에 추가해보자.
location / {
# 밑의 애들이 추가되어야한다.
proxy_pass http://localhost:5000; #본인 설정한 localhost로 설정(난 5000번포트로했기에)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
# try_files $uri $uri/ =404;
}
python3형식이라 주석은 #이다.
아까와 같이 ctrl + w 입력 후 y를 입력하면 나올 수 있다.
밑의 try_files는 주석처리 해주자.....
이제 설정되었으니 restart를 해줘야한다.
먼저 테스트를 해보자.
sudo nginx -t
결과로 test is succesful이 나오면 성공한 것이다.
그럼 이제 restart를 실행한다.
sudo service nginx restart
자 이렇게 프록시서버(NginX)에서 받아온 https를 암호화/복호화 과정을 거친후 localhost:5000 메인 서비스 서버에게 전달해준다.
다시 한번 크롬창에서 우리의 도메인을 입력해보자.
짜잔 내 도메인 주소를 입력만 했을 뿐인데 https가 붙어있고 내 메인 서버와 연결되는 것을 볼 수 있다.
마지막으로 이 인증서의 유효기간은 90일이라 한다.
확인해보자.
sudo certbot certificates
12월 15일에 만료되는 것을 볼 수 있다.
그러나 certbot은 이 인증서 기간을 갱신 시켜 줄 수 있는데, 손수 갱신보단 crontab이라는 스케줄 관리 도구를 사용하여 매월 1일마다 자동으로 갱신시켜 줄 것이다.
sudo nano /etc/crontab
마지막 줄에 추가해줄 것이다.
0분 0시 1일 매월 매년 = 0 0 1 * * 갱신한다라는 뜻
0 0 1 * * root certbot -q renew --nginx >> /var/log/letscript.renewal.log 2>&1
그 후 crontab을 restart해주면 매월 1일 0시 0분에 자동으로 갱신시켜준다~
sudo service cron restart
'back-front end' 카테고리의 다른 글
Nginx를 이용한 https구현하기(aws ec2 - linux ubuntu-20.04 LTS) -1 (0) | 2022.09.16 |
---|---|
[항해99] Node.js 심화 주차 키워드 (0) | 2022.08.11 |
[항해99] require() (0) | 2022.07.30 |
[항해99] Express.js의 미들웨어 (0) | 2022.07.30 |
[항해99] ORM (0) | 2022.07.30 |
댓글