인디노트

Tomcat & Apache & Websocket 사용 시 방화벽에 의한 프록시 설정 본문

개발 플랫폼 및 언어

Tomcat & Apache & Websocket 사용 시 방화벽에 의한 프록시 설정

인디개발자 2017. 3. 14. 14:38

물론 자바로 웹 서버 구축 시 Tomcat을 이용할 경우는 많을 것 같구요.!!

Tomcat을 여러개 묶어서 사용(?) 하거나 Apache와 Mod_JK 통신 (AJP) 해서 사용하시는 

분들을 은근 많을 것으로 생각이 됩니다만..


추가적으로 WebSocket을 사용하려고 하는데 ... 굳이 프록시를???? 

그렇게 생각하다보니.. 이번 포스팅 하는 경우는 쫌 특별한 경우라고 생각이 됩니다.


일단 이 방법을 알게된 이유는 방화벽 때문입니다.

기본적으로 제가 있는 공간은 80 Port를 제외한 나머지 포트가 모두 외부와는 막혀 있어요 ㅠㅠ


거기에 전 주로 자바를 이용해서 개발을 하는 개발자이구요..

그러다보니 Tomcat + Mod_ JK + Apache를 많이 사용하게 됩니다.


  >  Tomcat : 웹 컨테이너로 사용

  > Apache : 정적 파일 (HTML, JavaScript, CSS)


일반적인 통신(HTTP) 할 때는 문제가 없습니다. AJP  통신을 통해 .. Tomcat이 8080 포트라 해도 80포트로 접근이 가능하기 때문이죠.


그런데 HTML5 WebSocket의 경우 ws://  로 통신을 하게 됩니다!!!

그러다보니 ㅠ ㅠ WebSocket End-Point가 /test 라고 하면 클라이언트에서 ws://localhost/test  를 호출 해버리더군요 ㅠㅠㅠㅠ


그래서 찾게되었습니다!! Apache에서 어떻게 WS 통신을 톰캣으로 보낼 수 있을까!?


자 서론이 너무 길었고... 이제 설명할께요 ^^;;;;;;; (너무 간단해서 서론이 길어졌네요;;)


설정한 운영체제는 Ubuntu 14.04 를 기본으로 하고 있습니다.


1. 프록시 플러그인을 아파치에서 사용할 수 있도록 활성화 한다.

#a2enmod proxy_wstunnel 

   추가 정보!!!

      mod 플러그인으로 일반적인 proxy가 있습니다 (#a2enmod proxy) 

      하지만 이 프록시 플러그인은 웹 소켓을 지원하고 있지 않아요~ 그렇기 때문에 proxy_wstunnel을 사용해야되고

      이놈을 활성화하면 기본적으로 porxy 가 동시에 활성화 됩니다.



2. VirtualHost에 프록시 관련 설정 추가 (기본 위치  :  /etc/apache2/sites-enabled/000-default.conf)

<VirtualHost *:80>

    ...

    ...

    ...

   <Location /app/test>    //클라이언트에서 요청하게 될 주소

        ProxyPass ws://localhost:8080/TomcatWeb/test

        ProxyPassReverse ws://localhost:8080/TomcatWeb/test     //내부 실제 포트 접속 경로

   </Location>

</VirtualHost> 


3. 마지막으로 apache를 재시작해준다.


#service apache2 restart 




반응형
Comments