리버스 프록시 설정하기

Apache를 프록시서버로 동작하게 하는건 단순하게 Proxy관련 디렉티브의 설정을 풀어주면 된다.
리버스 프록시서버는 독립된 네트워크의 이용자를 게이트웨이 뒷편에서 다른 네트워크와 연결해주는데 루터와 비슷한 역할을 한다..
(리버스 프록시는 루터처럼 2개의 네트워크에 연결가능해야 한다)
하지만 이용자에게 리버스 프록시서버는 단순한 Web서버로 보인다..
이용자의 HTTP요청을 리버스 프록시는 룰에 따라 여러 서버에 재요청하게 되는데 예전에는 주로 웹서버의 부하를 경감시키기 위해 사용했다..

이번에 나의 경우는… 좀 독특한 경우로 사내 네트워크가 (포워드)프록시서버를 거쳐서 인증정보를 넣어 인터넷에 나갈 수 있게 되었는데,
특정 프로그램이 프록시서버의 설정이 불가능하게 되어 리버스 프록시를 도입하게 되었다..

즉, [ 클라이언트 프로그램 ] -> [ 웹서버(리버스프록시)] -> [ 실제 프록시서버 ] -> [ 인터넷 ] 의 경로로 나가야 한다..
실제 프록시서버는 squid 를 사용중고 인증정보가 필요한데, 이번에 리버스 프록시를 Apache 를 이용하여 구축하고,
이때 인증정보를 헤더에 설정하게 하도록한다..

아래 내용을 conf.d 에 적당한 이름으로 저장하면 된다..

NameVirtualHost *:80

<VirtualHost *:80>
ServerName 이용자가 이용할 웹서버 이름 (예) id.google.co.jp
DocumentRoot 적당하게 입력
ErrorLog 적당하게 입력

ProxyPreserveHost On
ProxyRemote * http://실제 프록시서버 도메인:포트 (이부분이 중요하다.. 이 부분을 설정해야 Apache가 다시 프록시에 전송하도록 한다)

<Location />
ProxyPass 실제 전송할 인터넷 사이트 (예) http://id.google.co.jp
ProxyPassReverse 실제 전송할 인터넷 사이트 (예) http://id.google.co.jp
RequestHeader set Proxy-Authorization “Basic 인증정보(BASE64)”
</Location>

</VirtualHost>

이용자들의 네트워크 환경은 폐쇠되어 DNS조차 이용할 수 없으므로 당연히 id.google.co.jp 는 IP가 알 수 없다..
이 부분은 각자 로컬PC의 hosts 부분에 정의한다..
물론 id.google.co.jp 는 리버스 프록시 IP 를 설정해야 한다.
( 시간이 있다면 따로 DNS 서버를 구축해도 되지만…. )

참고사이트: http://httpd.apache.org/docs/2.1/ja/mod/mod_proxy.html

This entry was posted in Apache. Bookmark the permalink.