개요
이번에 유레카에서 진행한 유유상종 프로젝트는 세션 로그인 방식을 채택하였기 때문에 백엔드를 https로 배포하여야 했다.
https://github.com/SongMinQQ/UUSangJong
GitHub - SongMinQQ/UUSangJong: LG유플러스 유레카 2기 미니프로젝트 경매 플랫폼 유유상종
LG유플러스 유레카 2기 미니프로젝트 경매 플랫폼 유유상종. Contribute to SongMinQQ/UUSangJong development by creating an account on GitHub.
github.com
본 글에서는 nginx를 사용하여 호스팅 서버에서 Spring boot 프로젝트를 https로 배포하는 방법에 대해 기술하였다.
443번 포트와 80번 포트를 미리 포트포워딩 해두는 것을 추천한다.
Nginx 설치
다음 명령어를 사용하여 Nginx를 설치한다.
sudo apt update
sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl status nginx
마지막 명령어를 실행 후 사진과 같이 출력되면 nginx가 원활하게 실행 중인 것이다.
Certbox을 통한 SSL 인증서 발급
다음 명령어를 사용하여 SSL 인증서를 발급받는다.
sudo apt update
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d minq.online
-d 옵션 뒤에는 도메인을 적는다.
www와 같은 서브 도메인이 있을 경우엔 함께 작성한다.
만약 방화벽 설정이 되어 있다면 다음 포트의 방화벽은 해제한다.
sudo ufw allow 443
sudo ufw allow 80
Nginx 설정파일 작성
다음과 같이 설정파일을 작성한다.
sudo nano /etc/nginx/sites-available/default
server {
listen 80;
server_name #[도메인명];
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name #[도메인명];
ssl_certificate #[fullChain key 경로];
ssl_certificate_key #[privkey 경로];
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
client_max_body_size 20M;
location / {
proxy_pass http://localhost:8080; # 로컬에서 실행중인 Spring Boot 서버
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;
}
}
위의 주석 처리된 부분을 환경에 맞게 작성한다.
도메인 접속 확인용 Controller
도메인에 접속하면 Spring boot에서는 적절한 응답을 보내주어야 한다.
간단하게 다음과 같이 작성한다.
@RestController
public class RootController {
@GetMapping("/")
public String home() {
return "서버 정상 작동 중";
}
}
이후 다음 명령어로 작동 여부를 확인한다.
curl -I [도메인명]
아래 사진과 같이 응답이 온다면 올바르게 배포된 것이다.
'Backend' 카테고리의 다른 글
Spring Security를 사용하여 요청 권한 설정하기 (0) | 2025.04.18 |
---|---|
[NP]TCP/IP(Transmission Control Protocol/Internet Protocol) 소켓 통신 (0) | 2023.07.13 |