Nginx를 사용하여 https로 Spring boot 프로젝트 배포하기

2025. 5. 26. 16:09·Backend

개요


이번에 유레카에서 진행한 유유상종 프로젝트는 세션 로그인 방식을 채택하였기 때문에 백엔드를 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가 원활하게 실행 중인 것이다.

active


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
'Backend' 카테고리의 다른 글
  • Spring Security를 사용하여 요청 권한 설정하기
  • [NP]TCP/IP(Transmission Control Protocol/Internet Protocol) 소켓 통신
MaKa_
MaKa_
이게 왜안될까요
  • MaKa_
    벌레 잡는 사람
    MaKa_
  • 전체
    오늘
    어제
    • 공부 (46)
      • CS (18)
        • 자료구조(data structure) (7)
        • 알고리즘(Algorithm) (6)
      • React (6)
      • React Native (2)
      • Next.js (5)
      • Backend (3)
      • 이야기 (3)
        • 회고 (2)
        • 일상 (1)
      • 기타 (7)
      • 알고리즘 문제 (2)
        • 백준 (0)
        • 프로그래머스 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
MaKa_
Nginx를 사용하여 https로 Spring boot 프로젝트 배포하기
상단으로

티스토리툴바