Apache와 Tomcat의 연동

2020. 3. 18. 19:23서버

Apache와 Tomcat을 연동하는 이유

WAS만 사용할 경우, 정적 데이터 처리로 인해 동적 데이터에 대한 처리가 늦어질 수도 있습니다. 그래서 Tomcat서버는 서블릿 컨테이너의 역할만 하고, Apache는 웹서버의 역할을 하도록 각각의 기능을 분리하기 위해 사용합니다. 대규모 사용자가 사용하는 시스템을 구축할 때, 하나의 웹서버에 여러 개의 톰캣을 연결해서 부하를 분산시키는 로드 밸런싱을 구현하기 위해 사용할 수 있습니다.

연동 과정

  1. 아파치 웹서버의 httpd.conf에 톰캣 연동을 위한 설정을 추가하고 톰캣에서 처리할 요청을 지정
  2. 사용자는 아파치 웹서버에 접속해 요청
  3. 아파치 웹서버는 사용자의 요청이 동적 처리가 필요한 요청일 경우 AJP포트에 접속해 요청을 전달
  4. 톰캣은 아파치 웹서버로부터 요청을 받아 처리한 후, 처리 결과를 아파치 웹서버에 되돌려줌
  5. 아파치 웹서버는 톰캣으로부터 받은 처리 결과를 사용자에게 전송
  • AJP: Apache 웹서버가 외부 시스템과 연동하기 위한 프로토콜

연동하는 방법

Mod_jk(tomcat connector – 가장 많이 사용되는 방법)

Tomcat 설정

<Connector port=”포트 번호” protocol=”AJP/1.3” redirectPort=”포트번호”/>

AJP 통신으로 들어오는 요청을 처리

Apache 설정

  • Mod_jk 모듈을 다운로드
  • $APACHE_HOME/conf 위치에 workers.properties를 생성
worker.list=worker1

worker.worker1.type=ajp13
worker.worker1.host=”서버 IP”
worker.wokrer1.port=”포트 번호”
  • $APACHE_HOME/conf/httpd.conf 파일에 설정 문구 추가

모듈

LoadModule jk_module modules/mod_jk.so

설정

<IfModule mod_jk.c>
<!-- JkMount ‘/원하는 경로’ ‘원하는 작업자’-->
JkMount /*.jsp tomcat
<!-- 설정파일 임포트 -->
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel “로그 레벨”
JkLogStampFormat “[%a %b %d %H:%M:%S %Y]”
</IfModule>

Mod_proxy(reverse proxy)

$APACHE_HOME/conf/httpd.conf 파일에 아래와 같이 작성한다

<VirtualHost *:80>
    ProxyRequests Off
    ProxyPreserveHost On
    <Proxy *>
       Order deny,allow
       Allow from all
    </Proxy>
    ProxyPass /proxy ‘URL’:’PORT’/
    ProxyPassReverse /proxy ‘URL’:’PORT’/
</VirtualHost>
  • ProxyRequest: On일 경우 Forward로 Off일 경우 Reverse Proxy로 동작
  • ProxyPreserveHost: On일 경우 Http 요청 헤더 중 Host를 유지

Mod_proxy_ajp(AJP Protocol reverse proxy)

Mod_proxy에서 AJP protocol을 사용하는 방법으로 mod_proxy에서 protocol을 ajp로 수정해주면 됩니다.

ProxyPass /proxy ajp://’URI’:’PORT’/
ProxyPassReverse /proxy ajp://’URI’:’PORT’/
728x90

'서버' 카테고리의 다른 글

Hypervisor  (0) 2020.11.26
Nginx  (0) 2020.10.08
Apache Section 설정  (0) 2020.06.15
Apache ErrorDocument 설정  (0) 2020.06.09
Apache & Tomcat  (0) 2020.03.18