아파치 웹서버 와 tomcat 연동하기 - tomcat connector(mod_jk) , reverse proxy
SERVER/회사서버셋팅중참조 2014. 8. 27. 18:37http://lesstif.com/pages/viewpage.action?pageId=12943367
개요
Apache httpd web server 와 tomcat 을 연계하는 방법은 세 가지가 있다.
예전부터 많이 쓰던 방법은 tomcat connector(mod_jk)를 사용하는 방법이고 다른 하나는 mod_proxy를 사용하여 reverse proxy 기능을 사용하는 방법, 마지막은 mod_proxy_ajp 를 사용하여 AJP Protocol을 reverse proxy 로 사용하는 방법이다.
mod_proxy 가 mod_jk 에 비해 설정이 간편하고 AJP 같은 특정 WAS 의존적인 프로토콜을 사용하지 않으므로 성능이 더 좋다고 하지만 mod_jk 가 오랫동안 써왔고 친숙해서 mod_jk 를 많이 사용하는 편인데 세 가지 방법 모두 정리해 본다.
|
연결 방식 |
장점 |
단점 |
특징 |
|---|---|---|---|
| mod_jk |
|
|
|
| mod_proxy |
|
|
|
| mod_proxy_ajp |
|
|
|
Tomcat Connector mod_jk
mod_jk compile
- http://tomcat.apache.org/download-connectors.cgi 에서 소스 download (현재 1.2.37)
- tar zxvf tomcat-connectors-1.2.37-src.tar.gz
- cd tomcat-connectors-1.2.37-src/native
- ./configure --with-apxs=/usr/sbin/apxs
- make
- make install
make install 후 /etc/httpd/modules/mod_jk.so 에 복사가 된다.
Apache httpd 설정
- cd /etc/httpd
-
vim conf/httpd.conf
LoadModule jk_module modules/mod_jk.so -
vim conf.d/mod_jk.conf
<IfModule mod_jk.c># Where to find workers.propertiesJkWorkersFile conf/workers_jk.properties# Where to put jk shared memoryJkShmFile run/mod_jk.shm# Where to put jk logsJkLogFile logs/mod_jk.log# Set the jk log level [debug/error/info]JkLogLevel info# Select the timestamp log formatJkLogStampFormat"[%a %b %d %H:%M:%S %Y] "## url pattern 에 따른 connector mapping##JkMountFile conf/uriworkermap.properties</IfModule> -
vim conf/workers_jk.properties
tomcat 은 server1, server2 두 대에 설치되어 있고 Connector Port는 8009 라 가정
Tomcat의 AJP Connector 가 listen하는 Port는 tomat의 conf/server.xml 에서 다음 항목에서 확인할 볼 수 있다.<Connectorport="8009"protocol="AJP/1.3"redirectPort="8443"URIEncoding="UTF-8"/>ajp protocol connector 설정worker.list=worker1, worker2worker.worker1.port=8009worker.worker1.host=server1worker.worker1.type=ajp13worker.worker1.lbfactor=1## server 2worker.worker2.port=8009worker.worker2.host=server2worker.worker2.type=ajp13worker.worker2.lbfactor=1 -
vim conf/uriworkermap.properties - 어떤 url 요청에 대해 tomcat 과 연계할지 설정한다. (uriworkermap.properties configuration )
## Mapping the URI /service1 under worker1/service1/*.do=worker1/service1/*.jsp=worker1# /service2 요청으로 들어온 것은 worker2 로 mount/service2/*=worker2# png와 jpg 는 apache 가 처리!/service2/*.png=worker2!/service2/*.jpg=worker2## 아래와 같이 설정하면 모든 요청(jsp, do, image, js등)을 tomcat으로 보내서 처리한다./*=worker1 - service httpd restart
- Browser 로 연결하여 정상 동작 여부 확인
TroubleShooting
- SELinux 를 쓸 경우(서비스 서버라면 SELinux 사용을 적극 권장한다!) 문제가 발생할 때 다음 문서 참고
mod_proxy 사용
reverse proxy 로 동작하는 모듈이다. 보안상 문제가 있을 수 있으므로 reverse proxy 에 대해서 숙지한 후에 설정하는 것을 권장한다,
mod_proxy.so 와 mod_proxy_http.so 가 LoadModule 로 로딩해야 한다. (RHE/CentOS 는 기본 로딩됨)
설정 예
-
WAS IP 가 192.168.10.100이고 WebApp 이름이 mywebapp
- Web Server의 VirtualHost 이름은 dummy-host.example.com
Browser 에서 연결은
<VirtualHost *:80> ServerName dummy-host.example.com ErrorLog logs/dummy-host.example.com-error_log CustomLog logs/dummy-host.example.com-access_log common # Put this in the main section of your configuration (or desired virtual host, if using Apache virtual hosts) ProxyRequests Off ProxyPreserveHost On <Proxy *> Order deny,allow Allow from all </Proxy> ## mywebapp 설정 ProxyPass /mywebapp http://192.168.10.100/mywebapp ProxyPassReverse /mywebapp http://192.168.10.100/mywebapp <Location /mywebapp> Order allow,deny Allow from all </Location></VirtualHost> |
위의 경우 httpd는 /mywebapp/foo, /mywebapp/bar 모두 192.168.10.100/mywebapp 에 연결하게 된다. 만약 특정 URL 패턴은 reverse proxy 로 동작하지 말아야 한다면 ProxyPassMatch 으로 URL 을 처리할 수 있다.
# /mywebapp/bar 하위의 URL 은 접근 금지ProxyPassMatch ^/mywebapp/bar[^.]+ ! ProxyPass /mywebapp http://192.168.10.100/mywebapp ProxyPass /mywebapp http://192.168.10.100/mywebapp ProxyPassReverse /mywebapp http://192.168.10.100/mywebapp <Location /mywebapp> Order allow,deny Allow from all </Location> |
mod_proxy_ajp 사용
AJP13 protocol을 사용해서 reverse proxy 로 동작하는 방식이다. http reverse proxy 와 비슷하지만 protocol 을 ajp 로 적어주면 된다.
ProxyPass /app ajp://backend.example.com:8009/app |
같이 보기
외부 링크
'SERVER > 회사서버셋팅중참조' 카테고리의 다른 글
| aix apache 설치 (0) | 2014.08.27 |
|---|---|
| CentOS 7 Apache 2.4 설치방법 (0) | 2014.08.27 |
| PCRE 설치관련 (0) | 2014.08.27 |
| AIX RPM 패키지모음 (0) | 2014.08.27 |
| 파일질라 ver 3.4.0 오류메세지 (0) | 2014.08.27 |
| jBoss7 admin 계정 생성 (0) | 2014.08.27 |
| tar 명령어 (0) | 2014.08.27 |
| apache 데몬 실행 권한 설정 (0) | 2014.08.27 |