Nginx 란 ?
Nginx는 가볍고 높은 성능을 보이는 오픈 소스 웹 서버 소프트웨어.
Tomcat과 Jetty는 자바 서블릿 컨테이너 혹은 웹 애플리케이션 서버 (WAS) 라면,
Nginx는 웹 서버로 클라이언트에게 정적 리소스를 빠르게 응답하기 위한 웹 서버이다.
특징
- Nginx는 트래픽이 많은 웹 사이트의 확장성을 위해 개발된 고성능 웹 서버
- 비동기 이벤트 기반으로 적은 자원으로 높은 성능과 높은 동시성을 위해 개발
- 다수의 클라이언트 연결을 효율적으로 처리할 수 있다
- 클라이언트와 서버 사이에 존재하는 리버스 프록시 서버로 사용할 수 있다.
- Nginx를 클라이언트와 서버 사이에 배치하여 무중단 배포가 가능하다.
[ Nginx - Proxy Server ]
Spring Boot와 Nginx 연동하기
<기존>
<Nginx 연동>
#1. 설치
[Mac OS]
brew install nginx
or
brew update
[Windows]
https://nginx.org/en/download.html
nginx: download
nginx.org
Stable version 클릭
#2. 실행
[Mac OS]
brew services start nginx
[Windows]
압축 해제 폴더의 nginx 파일 실행
#3. 실행 확인
[Mac OS]
http://localhost:8080
[Windows]
http://localhost:80
#4. Nginx 설정 파일 수정
[Mac OS]
$ nginx -t
$ nano /opt/homebrew/etc/nginx/nginx.conf
[Windows]
Nginx 실행 파일 폴더 -> conf 폴더 -> nginx.conf 파일 수정 (우클릭-intelliJ or 터미널: nano 에디터)
아래와 같이 포트 번호를 80으로 변경하여 리버스 프록시 서버로써 Spring Boot 프로젝트에 연동
server {
listen 80; # (Mac OS) 8080 포트에서 80번 포트로 변경합니다.
location / {
...
proxy_pass http://localhost:8080; # 요청을 8080 포트로 넘깁니다.
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}
#5. Nginx 재시작
[Mac OS]
$ brew services restart nginx
[Windows]
명령 프롬프트 -> nginx 실행 파일이 있는 폴더로 이동 후 명령어 실행.
$ nginx -s reload
Nginx 재식작 후 localhost:80에 접속하면 아래와 같은 문구가 나온다.
이는 80번 포트로 수정한 Nginx에는 접속이 되지만, 아직 8080번 포트를 사용하지 않기 때문에 발생하는 것.
즉, Spring Boot (8080번 포트)를 실행하고 다시 웹 브라우저에서 입력하면 해결.
#6. Nginx 종료
[Mac OS]
$ brew services stop nginx
[Windows]
$ nginx -s stop
[ Nginx - Load Balancer: 클라이언트의 요청을 분산 시키는 것 ]
Proxy Server로써 현재 클라이언트, Nginx 그리고 Spring Boot의 구조도는 아래와 같다.
각 Spring Boot에서 실행 중인 포트 번호를 Nginx 설정파일에 작성.
#1. 서버 그룹 생성
#2. 생성한 서버 그룹에 Spring Boot 포트 번호 등록
#3. location의 proxy_pass 값으로 해당 서버 그룹 설정.
위와 같이 포트 설정 후 Nginx를 실행하면 번갈아가며 서버 그룹에 포함된 포트들이 실행되는 것을 알 수 있다.
'백엔드 기술 > Cloud' 카테고리의 다른 글
VPC - Virtual Private Cloud 서비스 (0) | 2023.06.15 |
---|---|
TOMCAT = 웹 애플리케이션 서버 (WAS) (0) | 2023.06.15 |
Docker (0) | 2023.05.29 |