아파치 웹서버 와 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.properties
JkWorkersFile conf
/workers_jk
.properties
# Where to put jk shared memory
JkShmFile run
/mod_jk
.shm
# Where to put jk logs
JkLogFile logs
/mod_jk
.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the timestamp log format
JkLogStampFormat
"[%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 에서 다음 항목에서 확인할 볼 수 있다.
<
Connector
port
=
"8009"
protocol
=
"AJP/1.3"
redirectPort
=
"8443"
URIEncoding
=
"UTF-8"
/>
ajp protocol connector 설정worker.list=worker1, worker2
worker.worker1.port=8009
worker.worker1.host=server1
worker.worker1.
type
=ajp13
worker.worker1.lbfactor=1
## server 2
worker.worker2.port=8009
worker.worker2.host=server2
worker.worker2.
type
=ajp13
worker.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 |