일단 나는 배포에서는 초보자다.
배포.. EC2로 깔작한 수준이고 이번에는 lightsail 을 이용하였다.
구글링, AI 로 얻은 정보로 배포를 꾸역꾸역 하긴 했는데
왜 nginx 를 쓰는건지, 이 기능은 무엇인지 정리가 필요할 듯 해 이 글을 작성한다.
더보기
- Java Spring Boot 애플리케이션
- 역할: 백엔드 로직을 처리하는 메인 애플리케이션
- 기능: API 엔드포인트 제공, 데이터베이스 연동, 비즈니스 로직 처리 등
- JAR 파일
- 역할: 컴파일된 Java 애플리케이션
- 기능: Spring Boot 애플리케이션을 실행 가능한 형태로 패키징한 파일
- AWS Lightsail
- 역할: 가상 프라이빗 서버(VPS) 제공
- 기능: 인터넷에 연결된 가상 서버를 제공하여 애플리케이션을 호스팅
- Ubuntu 서버
- 역할: 운영 체제
- 기능: 하드웨어 리소스 관리, 프로세스 실행 환경 제공
- Nginx
- 역할: 웹 서버 및 리버스 프록시
- 기능:
- 정적 파일 서빙
- HTTP 요청을 받아 적절한 백엔드 서버(이 경우 Tomcat)로 전달
- SSL/TLS 암호화 처리
- 로드 밸런싱 (필요시)
- Tomcat
- 역할: Java 웹 애플리케이션 서버
- 기능:
- Java 서블릿 컨테이너 제공
- Spring Boot 애플리케이션 실행
- HTTP 요청 처리 및 응답 생성
배포 과정 흐름:
- Spring Boot 애플리케이션을 개발하고 JAR 파일로 빌드합니다.
- JAR 파일을 Lightsail Ubuntu 서버에 업로드합니다.
- Tomcat이 JAR 파일을 실행하여 Spring Boot 애플리케이션을 구동합니다.
- Nginx는 외부에서 들어오는 HTTP 요청을 받아 Tomcat으로 전달합니다.
- Tomcat에서 실행 중인 Spring Boot 애플리케이션이 요청을 처리하고 응답을 생성합니다.
- Nginx가 이 응답을 다시 클라이언트에게 전달합니다.
이 구조에서 Nginx는 주로 리버스 프록시 역할을 하며, Tomcat은 실제 Java 애플리케이션을 실행하는 역할을 합니다. Nginx를 사용하면 보안, 성능 최적화, SSL 처리 등의 이점을 얻을 수 있습니다.
CORS 설정을 Nginx에서 하는 이유는 모든 HTTP 요청이 먼저 Nginx를 통과하기 때문입니다. Nginx에서 적절한 CORS 헤더를 추가하면 브라우저의 CORS 정책을 만족시킬 수 있습니다.
'프로그래밍' 카테고리의 다른 글
[프로그래머스] n의 배수_자바 (0) | 2024.08.14 |
---|---|
RESTful API 란? (0) | 2024.08.07 |