본문 바로가기

Tip & Tech/Linux

Proxy AJP, mod_rewrite를 이용한 Apache, Tomcat 완벽 연동하기

출처 : Proxy AJP + mod_rewrite를 이용하여 Apache 2.2 + Tomcat 완벽 연동하기 by 아이 in The eye

아파치 2.2Tomcat 5 버전의 연동에 관한 글입니다. 이 글에 상세한 설명이라고 보시면 될 것 같습니다.
보통 톰캣과 아파치의 연동에는 톰캣 홈페이지에서 제공하고 있는 mod_jk를 많이들 쓰신다고 하는데요.
이 방법은 아파치 2.2.x에서 제공하는 Proxy AJP를 사용하여 매우 깔끔하게 연동을 할 수 있는 방법입니다.

아이님의 글에는 아파치를 컴파일 하는 방법부터 나와있는데요, 전 APM과 톰캣 전부를 yum을 이용해 설치했습니다.
즉, 모든 경로와 환경등이 yum을 이용해 설치한 아파치에 맞춰져 있습니다 이점 유의 하시구요.
yum 을 이용한 APM 설치 방법은 여기를 참조하세요.


1. 모듈 설치여부 확인
/etc/httpd/conf/httpd.conf 파일을 열어 모듈 연동여부를 확인합니다.
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule rewrite_module modules/mod_rewrite.so


2. 가상호스트 설정파일 만들기
/etc/httpd/conf.d/httpd-vhost.conf 를 만든 후 수정합니다.
NameVirtualHost *:80

<VirtualHost *:80>
        ServerAdmin admin@myworld.com
        DocumentRoot /var/www/html
        ServerName myserver
        ErrorLog logs/myserver-err_log
        CustomLog logs/myserver-access_log common
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} \.(html|html|xhtm|php|css|jpg|gif|png|swf|js$)
        RewriteRule (.*) - [L]
        RewriteRule (.*) ajp://localhost:8009$1 [P]
</VirtualHost>       

위와같은 rewrite를 통한 설정은 htm, html, xhtml, php, css, jpg, gif, png, swf, js 확장자를 가진 요청은 아파치가 처리하도록 하고 나머지는 톰캣이 처리하도록 합니다. 원하시는 확장자를 마음껏 추가하셔도 됩니다.


3. 톰캣 설정
/etc/tomcat5/server.xml 파일을 수정
<Connector port="8009" protocol="AJP/1.3" maxThreads="150" minSpareThreads="25"
    maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100"
    debug="0" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />

<Host name="theeye.pe.kr" debug="0" appBase="/var/www/html" unpackWARs="true"
    autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
    <Context path="" docBase="/var/www/html" debug="0" reloadable="false" crossContext="true" />
</Host>