1. 개요
기존에 Docker + Spring Boot로 운영 중인 서비스를 Nginx + Docker + Spring Boot 구조로 변경해보는 가이드입니다.
Nginx를 앞단에 두면, 웹 서버와 WAS 역할을 분리하여 다음과 같은 이점을 얻을 수 있습니다:
- 정적 파일 처리 최적화
- SSL/HTTPS 적용 용이
- 요청 라우팅 및 로드밸런싱 가능
- Spring Boot는 비즈니스 로직 처리에 집중
주의: Nginx를 도입한다고 해서 Spring Boot와 정적 파일이 물리적으로 완전히 분리되는 것은 아니며, 역할만 분리된다는 점에 주의하세요.
2. 환경
- 서버 OS: Ubuntu 20.04
- Docker: 설치 및 Spring Boot 컨테이너 운영 중
- 목적: 최소 변경으로 Nginx를 붙여 Reverse Proxy 적용
3. Nginx 설치
sudo apt update
sudo apt install nginx -y
nginx -v # 설치 확인
4. Nginx Reverse Proxy 설정
Nginx 기본 설정 파일 열기
sudo nano /etc/nginx/sites-available/default
내용
server {
listen 80;
location / {
proxy_pass http://localhost:8090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
localhost:8090은 현재 Docker에서 expose한 Spring Boot 포트입니다.
5. Nginx 재시작
- Docker 컨테이너 확인
docker ps
- Spring Boot 컨테이너가 실행 중인지 확인
- 포트 8090이 외부에 열려 있어야 함
2. Nginx 설정 테스트 및 재시작
sudo nginx -t # 설정 확인
sudo systemctl restart nginx
6. 동작 확인
브라우저에서 서버 IP 접속
http://192.168.0.30
- Spring Boot 앱 화면이 정상적으로 나오는지 확인
포인트
- Nginx는 정적 파일과 요청 라우팅 역할만 수행
- Spring Boot는 비즈니스 로직 처리에 집중
7. 다음 단계
- HTTPS 적용 (Let's Encrypt + certbot)
- Nginx를 Docker로 올려 환경 일관성 확보
- Docker Compose 도입하여 Nginx + App 컨테이너 통합 관리
반응형
'spring boot' 카테고리의 다른 글
| "DTO 없이 Entity만 쓰면 안 되나요?" 실무 기준으로 답해드립니다. (1) | 2026.03.30 |
|---|---|
| Docker 환경 MySQL 데이터 백업/복구 방법 (0) | 2026.03.25 |
| Ubuntu에서 Docker 기반 MySQL 환경 구성 및 운영하기 (0) | 2026.03.25 |
| Docker로 배포한 Spring 앱에서 첨부파일을 Ubuntu 디렉터리에 저장하는 방법 (0) | 2026.03.24 |
| react에서 구글로그인 구현-III(feat. spring) (1) | 2024.12.30 |