실행 사양
OS ; RHEL8
NginX : 1.25.2
Tomcat : 10.1.16 버전
NginX(엔진엑스)와 Java11, Tomcat(톰캣) 10.1버전은 설치가 되어있는 것을 가정한다.
1. 엔진엑스 – 톰캣 연동
사실 엔진엑스와 톰캣을 연동하는것은 진짜 쉽다. 아파치보다 훨씬 간결하다. Nginx 설정 파일에서 프록시 패스 하나만 설정해주면 되기 때문이다.
프록시 : 다른 서버에서 리소스를 찾는 클라이언트의 요청에 대한 중개자 역할을 하는 서버
리버스 프록시 : 하나 이상의 백엔드 서버 앞에 위치하여 각 요청에 사용할 백엔드 서버를 결정
즉, 엔진엑스가 리버스 프록시 역할을 하여 클라이언트의 요청을 받아 대신 웹 애플리케이션 서버(Tomcat)로 전달해 주는 것이다.
(중)
server {
listen 80;
listen [::]:80;
server_name localhost;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
root html;
index index.html index.htm;
proxy_pass http://localhost:8080; <<<<<이 부분을 추가한다. 8080은 톰캣의 기본 접속 포트다.
}
(중략)
2. 엔진엑스, 톰캣가동 및 연동 확인
– 엔진엑스와 톰캣기동
– 브라우저에서 서버IP 80포트로 접속시 톰캣 화면 나오면 연동 완료

3. 엔진엑스 – 톰캣멀티 인스턴스 로드밸런싱
server.xml 파일에서 포트를 변경한다.
먼저 tomcat이 기존에 설치되어있던 디렉토리에 tomcat1, tomcat2라는 디렉토리를 생성 후, 기존에 있던 tomcat은 tomcat1 디렉토리에(이 톰캣을 tomcat1이라 한다), tomcat2에는 tomcat1을 설치한 방식으로 tomcat을 설치한다(버전 10.1 버전).
cd로 tomcat2로 이동한 후 설치하자.
필자는 다음과 같이 변경하였다.
tomcat1
HTTP 포트 : 8180
셧다운 포트 : 8105
AJP 포트 : 8109
tomcat2
HTTP 포트 : 8280
셧다운 포트 : 8205
AJP 포트 : 8209
그 다음 다시 NginX와 Tomcat을 연동해주고 로드밸런싱 설정 후 가동하자.
vi nginx.conf
(중략)
upstream backend # tomcat1~2를 backend라는 단위로 묶는다!!!
{
server localhost:8180; # tomcat1의 포트
server localhost:8280; # tomcat2의 포트
}
server {
listen 80;
location / {
root html;
index index.html index.htm;
proxy_pass http://backend; # nginx가 받은 요청을 'backend'로 넘긴다.
}
(중략)
로드밸런싱을 확인하자


필자의 경우 각 tomcat별 webapps/ROOT/index.jsp 파일의 텍스트를 수정하여 구별 할 수 있게 만들었다.
아래와 같이 tomcat1/tomcat2의 화면이 번갈아 뜨는 것을 보니, 성공이다.
Reference