개발 - WEB, WAS, DB

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

개미v 2022. 1. 2. 17:39

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

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

1. AJP

2. mod_proxy

3. mod_proxy_ajp

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

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

설계

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

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

Apache에서 Tomcat으로 포워딩 되는데, Tomcat 마다 서비스 포트를 다르게 설정 합니다.

[Apache] conf/httpd.conf

mod_proxy 모듈을 사용하고, 관련된 설정 파일의 경로를 명시합니다.

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

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

 

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

어떤 URL로 접속했을 때 어떤 톰캣 서비스 포트로 포워딩 해라 라는 설정입니다.

<VirtualHost *:80>
    ServerName www.eoeca.com
    ServerAlias eoeca.com
	ProxyPass / http://localhost:8080/
</VirtualHost>

<VirtualHost *:80>
    ServerName www.domain.com
	ServerAlias domain.com
	ProxyPass / http://localhost:8081/
</VirtualHost>

<VirtualHost *:80>
    ServerName sso.domain.com
	ProxyPass / http://localhost:8082/
</VirtualHost>

<VirtualHost *:80>
    ServerName secret.domain.com
	ProxyPass / http://localhost:8083/
</VirtualHost>

[Tomcat] conf/server.xml

Tomcat의 서비스 포트를 활성화 합니다.

각 Tomcat마다 서비스 포트를 각각 포트(8080, 8081, 8082, 8083)에 맞게 설정해줘야 합니다.

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

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

<Connector port="8080" protocol="HTTP/1.1"
           address="localhost"
           connectionTimeout="20000"
           redirectPort="8443" />