Develop/AWS

[AWS] Certbot/HTTPS/Spring Boot , Nginx, SSL 요청 및 설치

순무엄마동생 2021. 8. 22. 01:43

프로젝트를 하면서 API 요청을 http가 아닌 https로 받아와야 했다. 진짜 멘붕이었는데 다행히 어떤 분이 잘 정리해둔 자료를 보내주셔서 해결할 수 있었다! 최고...👍🏻 우선은 하는 법만 정리해두고 추후에 각 개념들을 정리해봐야겠다.

 

1. AWS Nginx 설치

sudo apt-get install nginx
ps -ef|grep nginx

위의 명령어로 설치해주고 아래 명령어로 nginx가 잘 실행되고 있는지 확인해 준다.

잘 실행 중이라면 아래와 같이 뜰 것이다!

 

ip주소 확인명령어로 자신의 ip 주소를 확인한다.

그럼 X.X.X.X로 나온다!

curl ifconfig.me

 

nginx가 잘 깔린 상태로 ip주소를 크롬창에 입력하면 다음과 같은 화면이 뜬다.

 

 


2. Spring Boot - Nginx 설정 파일 포트 리다이렉트

아래 명령어로 nginx 설정 파일을 열어준다. 

sudo vi /etc/nginx/nginx.conf				# 나는 안되는 명령어
sudo vi /etc/nginx/sites-available/default  		# 나는 되는 명령어

 

다른 블로그에서는 sudo vi /etc/nginx/nginx.conf 명령어로 설정파일을 열 수 있었지만 나는 아니었다.

그래서 검색해본 결과 아래 명령어로 열 수 있었다! 설정 파일에서 location / 부분을 아래와 같이 변경해준다.

location / {
         proxy_pass http://localhost:8080;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header Host $http_host;
    }

내 코드의 경우 /에 대해서는 프론트 관련된 걸 받아오도록 해놨고 /api로 들어오는 부분을 백엔드로 사용하였다. 만약 백엔드 부분만 사용할거라면 /로 들어오도록 해주면 된다.

 

location

특정 url을 처리하는 방법을 정의한다.

'/'로 설정해 놓았기 때문에 모든 Request에 대해 적용된다.

 

proxy_pass

Request에 대해 어디로 리다이렉트 할 것인지 설정한다.

현재 http://localhost:8080으로 오는 것을 80 포트로 리다이렉트 하도록 해주었다.

 

proxy_set_header

Request에 대한 실제 데이터를 http header의 각 항목에 할당한다.

proxy_set_header X-Real-IP $remote_addr은 set_real_ip로 세팅되는 값은 실제 프록시 서버 IP를 설정한다. 

나머지는 더 찾아봐야지...

 

 

Nginx를 재시작해준다!

sudo service nginx restart

404에러가 뜬다면 포트 리다이렉트 성공!👏🏻👏🏻

 

 


3. Certbot SSL 보안

Ubuntu는 아래 명령어를 통해 Certbot을 설치한다.

sudo apt update
sudo apt upgrade -y
sudo apt install certbot python3-certbot-nginx

 

SSL을 사용할 때에는 naver.com처럼 도메인이 필요하다.

아래 명령어로 SSL 인증서를 가져옵니다.

sudo certbot --nginx -d [도메인명]
sudo letsencrypt certonly --standalone -d [도메인명] # 위에꺼 안되면 이 명령어 사용!

 

위의 명령어를 작성하고나면 IMPORTANT NOTES라면서 인증서가 저장된 위치를 알려준다. 잘 저장해둔다.

/etc/letsencrypt/live/[도메인명]/fullchain.pem
/etc/letsencrypt/live/[도메인명]/private.pem

 

보통 이렇게 저장된다.

이 경로를 잘 복사해둔 다음에 다시 nginx 설정 파일을 열어준다.

sudo vi /etc/nginx/nginx.conf				# 나는 안되는 명령어
sudo vi /etc/nginx/sites-available/default  		# 나는 되는 명령어

 

인증서를 사용하겠다는 의미로 아래와 같이 적어준다.

 

 ssl_certificate /etc/letsencrypt/live/[도메인명]/fullchain.pem; 
 ssl_certificate_key /etc/letsencrypt/live/[도메인명]/privkey.pem;

 

그리고 nginx를 재구동 시키면 끝!

sudo service nginx restart