forcemax's

회사의 한 서버에 tomcat과 rails를 같이 사용할 일이 생겼다.

rails는 passenger를 사용하면 되지만 passenger를 사용하게 되면 apache가 port 80을 점유하므로 tomcat 서비스는 port 80을 사용할 수 없게 된다.
이를 해결할 수 있는 방법으로 mod_proxy를 선택하였다.

VirtualHost를 하나 생성하고 그 설정 안에 mod_proxy의 설정을 한다.

<VirtualHost 192.168.2.60:80>
        ServerAdmin webmaster@mydomain.com
        ServerName service.mydomain.com

        ProxyRequests Off
        <Proxy *>
                Order deny,allow
                Allow from all
        </Proxy>
        ProxyPass / http://localhost:8080/
        ProxyPassReverse / http://localhost:8080/
        ProxyPreserveHost On

...
</VirtualHost>

a2enmod 명령으로 proxy 모듈과 proxy_http 모듈을 활성화 한다.

root@forcemax:/root# a2enmod proxy
root@forcemax:/root# a2enmod proxy_http

이제 Apache2를 재시작하고 웹브라우저에서 service.mydomain.com으로 연결하면 서버의 port 8080에 동작중인 tomcat에 연결된다.

이렇게 tomcat 서비스를 사용할 경우 tomcat 서비스의 소스를 좀 수정해야하는 경우가 생긴다. Reverse Proxy이기 때문에 약간 골치 아프긴하다.