Nginx 설치 및 SSL 인증서 발급과 Spring Boot에 맞게 설정하기
### apt 패키지 업데이트
$ sudo apt update
### letsencrypt 설치
$ sudo apt-get install letsencrypt -y
### 업데이트
$ sudo apt update
$ sudo apt upgrade -y
### ssl 인증서 제공하는 certbot 설치 + nginx도 함께 설치 됨
$ sudo apt install certbot python3-certbot-nginx
### nginx 실행
$ sudo service nginx start
### SSL 인증서 발급, 나의도메인주소ex)domain.shop
### 첫 번째로 메일 입력
### 동의여부 선택사항 2번 나옴, 약관동의는 동의하시고 이메일 공유는 its up to you
### 1,2 번 선택사항에서는 2번 선택
$ sudo certbot --nginx -d 나의도메인주소
### nginx 폴더로 이동
$ cd /etc/nginx
### 해당 폴더들 권한 추가
$ sudo chmod 777 ./sites-available
$ sudo chmod 777 ./sites-enabled
### 해당 폴더로 이동
$ cd /etc/nginx/sites-available
### 새로운 conf 생성, 이름은 상관없음
$ sudo vi ./test.conf
test.conf에 아래 내용 추가
server {
listen 80; #80포트로 받을 때
server_name my-domain.shop; #도메인주소
return 301 https://my-domain.shop$request_uri;
}
server {
listen 443 ssl http2;
server_name my-domain.shop;
# ssl 인증서 적용하기
ssl_certificate /etc/letsencrypt/live/my-domain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/my-domain/privkey.pem;
location / { # location 이후 특정 url을 처리하는 방법을 정의(여기서는 / -> 즉, 모든 request)
proxy_pass http://localhost:8000; # Request에 대해 어디로 리다이렉트하는지 작성. 8000 -> 자신의 springboot app이사용하는 포트
proxy_set_header Host $http_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;
}
}
server {
if ($host = my-domain.shop) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name smy-domain.shop;
return 404; # managed by Certbot
}
- 80포트로 받았을 경우 redirect 시켜줌
- 443으로 받았을 경우 http://localhost:port로 redirect 시켜줌, 여기서 port는 spring boot에서 사용하는 port번호를 이용!
이후,
### sites-available의 test.conf를 sites-enabled에 복사
$ sudo ln -s /etc/nginx/sites-available/test.conf /etc/nginx/sites-enabled
### 해당 폴더로 이동
$ cd /etc/nginx/sites-enabled
### 문제없는지 테스트
$ sudo nginx -t
### default 파일 삭제
$ sudo rm default
### 재시작
$ sudo service nginx restart
위와 같이 함으로써 HTTP, HTTPS로 request가 들어올 시 spring boot로 redirect가 가능 함
'Develop > Server' 카테고리의 다른 글
[에러] Enable to lacate package (0) | 2022.05.22 |
---|---|
가비아 도메인 설정과 HTTPS 설정 (0) | 2022.05.20 |
Docker를 이용한 서버 배포 (0) | 2022.05.20 |
RDS 생성 및 외부 접속 연결 (0) | 2022.05.18 |
EC2 인스턴스 및 고정 IP 설정 (0) | 2022.05.11 |