개발 - WEB, WAS, DB

Apache 1개 - Tomcat 여러개 AJP 설정 방법

개미v 2022. 1. 1. 16:42

 

1개 서버에서 여러개의 서비스를 하고 싶을 때, Apache1개 - Tomcat 여러개를 설정하는 AJP 방법 입니다.

참고로 Apache와 Tomcat을 연동하는 방법은 3가지가 있는데, 여기서는 AJP 방법에 대해서 설명합니다.

1. AJP

2. mod_proxy

3. mod_proxy_ajp

mod_proxy 방법은 아래 링크에서 설명 하였습니다.

https://blog.naver.com/dalili82/222610988083

 

설계

제가 서비스 할 것은 4개 입니다.

각각 도메인이 구분됩니다.

Apache에서 Tomcat은 AJP 포트로 통신을 하는데, Tomcat 마다 다르게 설정 합니다.

 

[Apache] conf/httpd.conf

톰캣 연동을 사용하고, 관련된 설정 파일들의 경로를 명시합니다.

# 톰캣과 연동시 사용
LoadModule jk_module modules/mod_jk.so

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

# Tomcat
<IfModule jk_module>
    JkWorkersFile    conf/workers.properties
    JkLogFile        logs/mod_jk.log
    JkLogLevel       error
</IfModule>
 

 

[Apache] conf/extra/httpd-vhosts.conf

어떤 URL로 접속했을 때 어떤 woker로 처리해라 라는 설정입니다.

<VirtualHost *:80>
    ServerName www.eoeca.com
    ServerAlias eoeca.com
    JkMount /* worker1
</VirtualHost>

<VirtualHost *:80>
    ServerName www.domain.com
	ServerAlias domain.com
	JkMount /* worker2
</VirtualHost>

<VirtualHost *:80>
    ServerName sso.domain.com
	JkMount /* worker3
</VirtualHost>

<VirtualHost *:80>
    ServerName secret.domain.com
	JkMount /* worker4
</VirtualHost>
 

 

[Apache] conf/workers.properties

Tomcat 연동에 관여할 worker에 대한 정보 입니다.

이 파일은 원래 없기 때문에 생성해야 합니다.

 

※ WAS서버(tomcat)이 다른 서버에 설치되어 있다면, localhost가 아니라 WAS 서버의 IP를 기재 해야 합니다.

# www.eoeca.com
worker.list=worker1
worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker1.lbfactor=1

# www.domain.com
worker.list=worker2
worker.worker2.port=8010
worker.worker2.host=localhost
worker.worker2.type=ajp13
worker.worker2.lbfactor=1

# sso.domain.com
worker.list=worker3
worker.worker3.port=8011
worker.worker3.host=localhost
worker.worker3.type=ajp13
worker.worker3.lbfactor=1

# secret.domain.com
worker.list=worker4
worker.worker4.port=8012
worker.worker4.host=localhost
worker.worker4.type=ajp13
worker.worker4.lbfactor=1
 

 

[Apache] modules/mod_jk.so

Tomcat 연동에서 사용할 라이브러리 입니다.

저는 윈도우 기반이라서 아래 사이트에서 다운로드 받았습니다.

https://www.apachelounge.com/download/

 

mod_jk-1.2.48-win64-vs16.zip 파일을 받아서 압축 풀고 mod_jk.so 파일을 modules 디렉토리로 복사 합니다.

 

 

[Tomcat] conf/server.xml

AJP 포트를 활성화 합니다.

각 Tomcat마다 AJP 포트를 각각 포트(8009, 8010, 8011, 8012)에 맞게 설정해줘야 합니다.

 

저는 apache와 tomcat이 같은 서버이기 때문에 address="localhost" 로 설정 했습니다.

그러면 외부에서 AJP포트로 접속을 못하고, 로컬에서만 AJP포트로 접속 가능합니다.

<Connector protocol="AJP/1.3"
           address="localhost"
           port="8009"
           redirectPort="8443"
           secretRequired="false"/>
 

 

[Tomcat] conf/server.xml

번외로 Tomcat의 shutdown 포트와 8080 서비스 포트를 비활성화 했습니다.

<Server port="-1" shutdown="SHUTDOWN">


<!--
<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
-->
 

 

 

Apache 1개 - Tomcat 여러개에서 SSL 인증서 적용에 관련해서는 다음에 올리도록 하겠습니다.