[CL] Nginx가 필요한 이유 - 100-hours-a-week/6-nemo-wiki GitHub Wiki
✅ NGINX가 필요한 이유
🔹 1. 멀티 서비스 구조에서의 요청 분기
⛳️ 배경
- 프론트엔드(Next.js): 3000 포트
- 백엔드(Spring Boot): 8080 포트
- AI 서비스(FastAPI): 8000 포트
사용자는 https://nemo.ai.kr
도메인만 접속하지만, 내부 서비스는 포트가 분리되어 있음
✅ 필요성
- 요청 경로에 따라 내부 포트로 자동 분기 (리버스 프록시)
- 예시:
/api/
→localhost:8080
/ai/
→localhost:8000
/
→localhost:3000
➡ NGINX는 요청 경로에 따른 서비스 분기 처리를 담당
🔹 2. SSL 인증서 적용 및 HTTPS 통신 제공
⛳️ 배경
- 로그인, 인증 등 보안이 필요한 기능을 HTTPS 없이 운영하면 보안 위협 존재
- 대부분 OAuth, JWT 기반 로그인은 HTTPS 전제
✅ 필요성
- NGINX에
Certbot
을 연동하여 SSL 인증서 적용 - Let’s Encrypt로 무료 발급 + 자동 갱신 가능
- 외부는 HTTPS, 내부는 HTTP로 처리
➡ NGINX는 SSL 종단점(Termination Point) 역할을 수행
🔹 3. 정적 파일 및 SSR 요청 라우팅
⛳️ 배경
- Next.js는
/_next
,.ico
,.js
등 정적 파일 요청과,/
등 SSR 페이지 요청이 혼재
✅ 필요성
- 정적 경로와 SSR 경로를 각각 프록시 설정
- NGINX가 프론트 요청을 적절히 처리
➡ Next.js의 정적/동적 요청을 분리 라우팅 가능
🔹 4. 보안 강화 및 접근 제한
⛳️ 배경
- 실수로
.env
,.git
같은 민감한 파일이 노출될 수 있음 - 내부 포트 직접 접근은 보안상 위험
✅ 필요성
- 민감 파일 접근 차단 (
location ~ /\.env { deny all; }
) - IP 접근 제한, 경로 단위 허용 설정 가능
➡ NGINX는 보안 제어 기능도 수행
🔹 5. 단일 도메인으로 멀티 서비스 제공
⛳️ 배경
- 여러 서비스를 운영하더라도 사용자는 하나의 도메인으로 접근하는 것이 가장 편리
✅ 필요성
요청 경로 | 내부 포트 | 서비스 |
---|---|---|
/api/ |
8080 | 백엔드 (Spring Boot) |
/ai/ |
8000 | AI (FastAPI) |
/ |
3000 | 프론트 (Next.js) |
➡ NGINX는 서비스 통합 게이트웨이 역할
🔹 6. 향후 확장성과 유지보수 측면에서 유리
✅ 필요성
- 서비스 추가 시 포트만 다르면 NGINX 설정으로 분기 가능
/admin
,/chat
,/internal
등 유연하게 확장 가능- 로깅, 에러 페이지, 캐싱 등 커스터마이징 가능
➡ 유지보수와 확장성이 뛰어난 구조 제공
✅ 결론
NGINX는 단순한 웹 서버가 아니라,
멀티 포트 기반 서비스 통합, HTTPS 제공, 보안 강화, 유지보수 및 확장성 향상을 위한 리버스 프록시 서버이자 Gateway이다.