Apache & Tomcat 연동하기 (80포트)


다음이나 네이버에서 검색하면 Apache & Tomcat의 연동방법이 엄청 많이 있습니다.

근데 보니까 대부분 비슷한 방법이고 모두 제가 원하는 방식이 아니더라구요.

ProxyPass 를 이용해서 제가 원하는 방식으로 구현을 하긴 했지만

JSP 쪽 Request 의 IP가 서버 IP 혹은 127.0.0.1 로 잡히는 걸 보고 바로 버렸습니다. 으허허허허~

보통 Tomcat webapps 경로를 Apache 웹 루트 폴더로 지정하고

ajp13 을 이용해서 *.jsp 형식만 Tomcat 으로 넘기는 방식을 취하고 있었습니다.

저는 Tomcat 과 Apache 웹 파일들이 한 폴더에 묶이는 것이 싫습니다. -_-;

왠지는 모르겠지만 그냥 싫어요!

그래서 웹 루트 폴더를 Apache 와 Tomcat 따로따로 지정하고 각각 서브도메인을 이용해서 구동하려 했습니다.

…삽질 엄청 했습니다.

올해 초엔 mod_jk2.so 를 이용해서 어찌어찌 구현했었는데

더 이상 업그레이드가 되지 않아서 mod_jk.so 를 이용하기로 했습니다.

훨씬 더 간편하고 쉽게 구현이 가능하더군요.

다음은 제가 무한 삽질을 거듭하여 습득한 설정법입니다.

– Rewrite 모듈 필요

Apache – conf/httpd.conf 설정 (맨 밑에 넣어주시면 됩니다.)


<IfModule mod_jk.c>
    JkWorkersFile conf/workers.properties
    JkLogFile mod_jk.log
    JkLogLevel error
    JkLogStampFormat “[%a %b %d %H:%M:%S %Y] “
    JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
    JkRequestLogFormat “%w %V %T”
</IfModule>

Include conf/extra/virtualHost.conf

Apache – conf/worker.properties 설정

worker.list=jspLoad
worker.jspLoad.port=8009
worker.jspLoad.host=localhost
worker.jspLoad.type=ajp13
worker.jspLoad.lbfactor=20

Apache – conf/extra/virtualHost.conf 설정

###################### PHP HOST ######################
<VirtualHost *:80>
    ServerAdmin (관리자 이메일 주소)
    DocumentRoot (아파치 웹 루트)
    ServerName (www 제외한 도메인)
    ServerAlias (www 제외한 도메인)
    DirectoryIndex index.php index.html index.htm
    ErrorLog logs/php.(도메인)-php-error_log
    CustomLog logs/php.(도메인)-php-access_log common
</VirtualHost>
<VirtualHost *:80>
    ServerAdmin (관리자 이메일 주소)
    DocumentRoot (아파치 웹 루트)
    ServerName (www 포함한 도메인)
    ServerAlias (www 포함한 도메인)
    DirectoryIndex index.php index.html index.htm
    ErrorLog logs/php.(도메인)-php-error_log
    CustomLog logs/php.(도메인)-php-access_log common
</VirtualHost>

###################### JSP HOST ######################
<VirtualHost *:80>
    ServerAdmin (관리자 이메일 주소)
    DocumentRoot (톰캣 경로/webapps)
    ServerName jsp.(도메인)
    ServerAlias jsp.(도메인)
    DirectoryIndex index.jsp index.html index.htm
    ErrorLog logs/jsp.(도메인)-jsp-error_log
    CustomLog logs/jsp.(도메인)-jsp-access_log common

    # 이 부분이 핵심
    RewriteEngine On
    RewriteRule (.*) ajp://localhost:8009$1 [P]
</VirtualHost>


이렇게 설정한 뒤, Apache 재시작 & Tomcat 재시작 해주시면

‘www 제외한 도메인’ 과 ‘www 포함한 도메인’ 으로 접속하시면 PHP 쪽으로 연결되고

jsp.도메인 으로 접속하시면 JSP 쪽으로 연결됩니다.

JSP 쪽으로 Deploy 하시면 jsp.도메인/ContextRoot 로 접속하시면 됩니다.

갑작스레 글을 작성하게 되어 빼먹은 부분도 있을 듯 한데

너그럽게 양해해 주시기 바랍니다. (- -)(_ _)

그럼 모두 수고하세요~!

샘플 링크
http://zecsv.com
http://www.zecsv.com
http://jsp.zecsv.com