2009년 8월 16일 일요일

HTTP Proxy with Virtual Hosts using Apache

HTTP Proxy는 어디에 쓸까 많이 과거에 의문이 들었었는데 막상 회사를 그만두고 엄청난 인프라가 없는 조그마한 작업실을 꾸리다보니 우리처럼 IP가 하나 밖에 없고 여러 플랫폼의 웹서버가 돌아가는 경우 이를 외부에 제공을 할 때 유용하게 쓰일 수 있을 것 같다.

 

기존의 구성에서 변경될 사항을 최소한으로 하기 위해서 우리는 HTTP 포트가 열린 Apache 서버 하나만을 추가를 했다. 오히려 이런 식으로 구성하는 편이 다른 서버들은 외부로 직접적으로 공개시키지 않아서 보안적으로도 조금은 신경 쓸 것이 사라져서 좋다.

 

HTTP Proxy를 사용하기 위해서는 2가지 모듈이 필요하다.

  • mod_proxy
  • mod_proxy_http
  • mod_vhost_alias

 

이를 구성한 http.conf 내용을 보도록 하자.

   1: LoadModule proxy_module modules/mod_proxy.so
   2: LoadModule proxy_http_module modules/mod_proxy_http.so
   3: #LoadModule rewrite_module modules/mod_rewrite.so
   4: LoadModule vhost_alias_module modules/mod_vhost_alias.so
   5:  
   6: NameVirtualHost *:80
   7:  
   8: <VirtualHost *:80>
   9:     ServerName proxy.source.com
  10:  
  11:     <Proxy *>
  12:         Order deny,allow
  13:         Allow from all
  14:     </Proxy>
  15:  
  16:     ProxyRequests Off
  17:     ProxyPreserveHost On
  18:     ProxyPassMatch ^(/.*)$ http://proxy.target.com$1
  19: </VirtualHost>

이처럼 VirtualHost를 필요에 의해서 여러 개로 생성할 경우 플랫폼에 구애받지 않고 IP 한개로 여러 서비스를 외부로 노출 시킬 수 있다.

댓글 1개:

  1. 이렇게 쓰다가 NTLM과의 문제가 있어서 IIS APR로 변경.



    http://www.iis.net/extensions/ApplicationRequestRouting

    답글삭제