본문 바로가기

백엔드 기술/Cloud

Nginx = 웹 서버

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