특히 여기에서 웹 애플리케이션이 중요하다. 가상 호스트에서 서비스를 제공하는 것이므로 모두 /로 요청을 받아야 합니다. 만약, 가상호스트를 사용하지 않는 경우 두 애클리케이션의 context root가 /인 경우 context root가 동일하기 때문에 충돌이 발생합니다. 하지만 jboss-web.xml 파일에 가상 호스트를 지정하면 충돌이 발생하지 않습니다. 이것이 중요한 포인트 입니다.
- 웹 서버는 서로 다른 두개의 가상 호스트를 처리한다.
- 웹 서버는 서로 다른 두개의 가상 호스트에 대한 static content를 처리한다.
- mod-jk는 가상 호스트에 대해서 JBoss로 HTTP Request를 요청한다.
- JBoss에는 두 개의 서로 다른 애플리케이션이 배포되며 이 애플리케이션은 서로 다른 가상 호스트로 서비스를 제공한다.
- 배포할 웹 애플리케이션의 jboss-web.xml 파일에는 가상 호스트 정보가 포함된다.
- 배포할 웹 애플리케이션의 jboss-web.xml 파일에는 context root가 모두 /로 정의한다.
# Include mod_jk configuration file
Include conf/mod-jk.conf
<Directory "/usr/local/jboss/server/default/deploy/TTT_TEST.war">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory "/usr/local/jboss/server/default/deploy/TTT.war">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory "/usr/local/apache2/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
/usr/local/jboss/server/default/deploy/TTT.war
=(사용할 호스트명)=> v1.taebal-test.co.kr
/usr/local/jboss/server/default/deploy/TTT_TEST.war
=(사용할 호스트명)=> v2.taebal-test.co.ko
<VirtualHost *>
ServerAdmin XXXXX@gmail.com
DocumentRoot /usr/local/jboss/server/default/deploy/TTT.war
ServerName v1.XXXXX-test.co.ko
ErrorLog logs/v1.XXXXX-test.co.ko-error.log
CustomLog logs/v1.XXXXX-test.co.ko-access.log common
LogLevel debug
JkMountFile conf/uriworkermap_v1.properties
<Directory "/usr/local/jboss/server/default/deploy/TTT.war/WEB-INF/">
AllowOverride None
deny from all
</Directory>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
</VirtualHost>
<VirtualHost *>
ServerAdmin XXXXX@gmail.com
DocumentRoot /usr/local/jboss/server/default/deploy/TTT_TEST.war
ServerName v2.XXXXX-test.co.ko
ErrorLog logs/v2.XXXXX-test.co.ko-error.log
CustomLog logs/v2.XXXXX-test.co.ko-access.log common
LogLevel debug
JkMountFile conf/uriworkermap_v2.properties
<Directory "/usr/local/jboss/server/default/deploy/TTT_TEST.war/WEB-INF/">
AllowOverride None
deny from all
</Directory>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
</VirtualHost>
ServerAdmin : 관리자 메일
DocumentRoot : 실제 애플리케이션이 존재하는 위치
ServerName : 호스트 이름
ErrorLog : 에러 로그 생성 위치
CustomLog : 엑세스 로그 생성 위치
LogLevel : 로그 생성 레벨
JkMountFile : mod-jk의 설정파일
Directory : WEB-INF의 접근을 막음 (옵션)
Rewrite : http 로 들어오는 것을 https로 바꿔주는 역활 (옵션)
<Host name="v1.XXXXX-test.co.ko">
<Alias>v1.XXXXX-test.co.ko</Alias>
<Valve className="org.jboss.web.tomcat.service.jca.CachedConnectionValve"
cachedConnectionManagerObjectName="jboss.jca:service=CachedConnectionManager"
transactionManagerObjectName="jboss:service=TransactionManager" ></Valve>
</Host>
<Host name="v2.XXXXX-test.co.ko">
<Alias>v2.XXXXX-test.co.ko</Alias>
<Valve className="org.jboss.web.tomcat.service.jca.CachedConnectionValve"
cachedConnectionManagerObjectName="jboss.jca:service=CachedConnectionManager"
transactionManagerObjectName="jboss:service=TransactionManager" ></Valve>
</Host>
192.OOO.OOO.OOO v1.XXXXX-test.co.ko
192.OOO.OOO.OOO v2.XXXXX-test.co.ko
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss-web PUBLIC
"-//JBoss//DTD Web Application 5.0//EN"
"http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd">
<jboss-web>
<context-root>/TTT</context-root>
<virtual-host>v1.XXXXX-test.co.ko</virtual-host>
</jboss-web>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss-web PUBLIC
"-//JBoss//DTD Web Application 5.0//EN"
"http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd">
<jboss-web>
<context-root>/TTT</context-root>
<virtual-host>v2.XXXXX-test.co.ko</virtual-host>
</jboss-web>
# 가상호스트 사용전 mod-jk 설정 파일
# JkMountFile conf/uriworkermap.properties
# 가상호스트 사용 mod-jk 설정 파일 (mod_jk.conf 가상호스트 설정 부분의 파일을 적어줌)
JkMountFile conf/uriworkermap_v1.properties
JkMountFile conf/uriworkermap_v2.properties