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 인증서 적용에 관련해서는 다음에 올리도록 하겠습니다.
'개발 - WEB, WAS, DB' 카테고리의 다른 글
Apache - AH00547: Could not resolve host name 오류 (0) | 2022.01.02 |
---|---|
Apache 1개 - Tomcat 여러개 mod_proxy 설정 방법 (0) | 2022.01.02 |
리눅스에서 일반계정으로 80포트 사용하기 (0) | 2021.05.12 |
VPN IP 차단방법(톰캣 IP 접근제한) (0) | 2020.07.23 |
tomcat 환경에서 mysql JDBC 연결시 - Communications link failure (0) | 2020.05.13 |