[CentOS] Proxy AJP + mod_rewrite를 이용하여 Apache 2.2 + Tomcat 연동
2011. 10. 11. 09:44ㆍOS/CentOS
[root@Theeye src]$ CC="gcc" CFLAGS="-O2" ./configure --prefix=/usr/local/httpd --enable-so --enable-proxy-ajp --enable-cgi --enable-rewrite --enable-speling --enable-usertrack --enable-deflate --enable-ssl --enable-cache --enable-disk-cache --enable-expires --enable-file-cache --enable-headers --enable-mem-cache --enable-mime-magic --enable-proxy --enable-mods-shared=all --with-mpm=worker
설정(프로세스 방식)
[root@Theeye src]$ CC="gcc" CFLAGS="-O2" ./configure --prefix=/usr/local/httpd --enable-so --enable-proxy-ajp --enable-cgi --enable-rewrite --enable-speling --enable-usertrack --enable-deflate --enable-ssl --enable-cache --enable-disk-cache --enable-expires --enable-file-cache --enable-headers --enable-mem-cache --enable-mime-magic --enable-proxy --enable-mods-shared=all --with-mpm=prefork
컴파일
[root@Theeye src]$ make
[root@Theeye src]$ make install
아파치가 설치된 디렉토리의 conf/httpd.conf 파일을 열어 다음의 두가지가 정상적으로 존재하는지 확인합니다.
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule rewrite_module modules/mod_rewrite.so
그리고 마지막쯤에 있는 가상호스팅 관련 설정을 인클루드 하도록 설정합니다.
Include conf/extra/httpd-vhosts.conf
아파치 설치 디렉토리의 conf/extra/httpd-vhost.conf 파일을 열어 가상호스트를 추가합니다.
<VirtualHost *:80>
ServerAdmin your@emailhere
DocumentRoot /var/www/html
ServerName theeye.pe.kr
ErrorLog logs/theeye.pe.kr-error_log
CustomLog logs/theeye.pe.kr-access_log commonRewriteEngine On
RewriteCond %{REQUEST_FILENAME} \.(htm|html|xhtml|js|css|jpg|gif|png|swf)$
RewriteRule (.*) - [L]
RewriteRule (.*) ajp://localhost:8009$1 [P]
</VirtualHost>
위와같은 rewrite를 통한 설정은 htm, html, xhtml, js, css, jpg, gif, png, swf 확장자를 가진 요청은 아파치가 처리하도록 하고 나머지는 톰캣이 처리하도록 합니다. 원하시는 확장자를 마음껏 추가하셔도 됩니다.
톰캣이 설치된 디렉토리의 conf/server.xml의 설정을 변경합니다. Connector설정을 확인합니다.
<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>
자, 이제 아파치와 톰캣의 설정이 모두 끝났습니다. 위와 같이 사용하시면 아파치에서 처리할 파일과 톰캣이 처리할 파일들을 따로 분리할 필요도 없으며 확장자에 따라 정확히 아파치와 톰캣이 분산 처리를 하게 됩니다.
정적인 파일들을 톰캣이 처리할 필요는 없으니깐요^^
추가로 특정 호스트에게만 오픈하는 관리자 페이지거나 개발서버일 경우 다음과 같이 접근 가능 아이피를 지정할 수 있습니다.
<VirtualHost *:80>
ServerAdmin your@emailhere
DocumentRoot /var/www/html
ServerName theeye.pe.kr
ErrorLog logs/theeye.pe.kr-error_log
CustomLog logs/theeye.pe.kr-access_log commonRewriteEngine On
RewriteCond !%{REMOTE_ADDR} ^127\.0\.0\.1$
RewriteRule ^.*$ - [F]
RewriteCond %{REQUEST_FILENAME} \.(htm|html|xhtml|js|css|jpg|gif|png|swf)$
RewriteRule (.*) - [L]
RewriteRule (.*) ajp://localhost:8009$1 [P]
</VirtualHost>
127.0.0.1 아이피를 가진 호스트가 아니라면 아파치에서 바로 에러페이지를 출력하게 됩니다.
위의 방법을 사용할 경우 보안 문제가 있으니 [ProxyAJP를 이용한 Apache2 + Tomcat 연동시 중대한 보안 문제]을 참고하세요
'OS > CentOS' 카테고리의 다른 글
[CentOS] apache service 등록 (1) | 2011.10.11 |
---|---|
[CentOs] Mysql5.5.9 + Linux(CentOS) 설치 (0) | 2011.03.05 |
[CentOS] apache + subversion + trac 세팅 (0) | 2010.11.26 |
[CentOS] CentOS 5.5 apache 2.2 계열 과 tomcat 연동 (0) | 2010.11.24 |
[CentOS] centos 5.5 java(jdk 1.6.0_22) tomcat(6.0.29) 설치 (0) | 2010.11.24 |