프로젝트를 하면서 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
'Develop > AWS' 카테고리의 다른 글
[AWS] Docker 설치 및 MySQL 실행하기/Docker-MySQL-Workbench/permission denied (0) | 2021.09.17 |
---|---|
[AWS] Ubuntu 20.04 LTS/MariaDB 설치/Workbench 연결 (0) | 2021.08.26 |
AWS EC2 WAS/Mysql 구축 (2) | 2020.10.16 |
AWS EC2 인스턴스 생성 (프리티어) (0) | 2020.10.16 |