분류없음 2013/01/22 16:47
Apache를 이용하여 proxy(reverse) 및 cache 기능을 구현하는 방법에 대해서 논하고자 한다.
단, 필자가 실제 서비스에 필요한 사항만 기술하니 기타 자세한 사항은 apache 공식 사이트의 내용을 참고하기 바란다
(1) 환경
- Web Server : Apache 2.2.6
- modules : mod_proxy, mod_cache (mod_disk_cache, mod_mem_cache)
- 3개의 도메인 / 내부도메인 (외부도메인 ==> 내부도메인 forwarding)
- Reverse Proxy
- Disk Caching (특정 디렉토리만 Caching) - MaxDiskSize 1G
(2) 설치 (설치시 필요한 Library는 정상설치되었다고 가정한다.)
- Configure option
./configure --prefix=/usr/local/apache --enable-module=so --enable-modules=all --enable-mods-shared=all --enable-proxy --enable-cache --enable-mem-cache --enable-file-cache --enable-disk-cache --with-zlib=/usr/local/lib/ --enable-deflate
참고) Apache 컴파일 시 아래와 같은 오류가 발생하는 경우
mod_deflate has been requested but can not be built due to prerequisite failures
; 이 오류는 deflate라는 압축관련 모듈을 load 하는 과정에서 zlib library가 상기 configure에서 지정한
경로에 존재하지 않거나 혹은 zlib의 devel 패키지가 설치되지 않았을 경우에 발생할 수 있다
따라서, [zlib_devel 다운로드]에서 devel 패키지를 다운받아 설치 후 아파치를 컴파일 하면 정상적으로
설치된다.
(3) 셋팅
- Cache를 위한 특정 디렉토리 생성 (예:CacheRoot /usr/local/apache/cache)
- 아피치 디렉토리/conf/httpd.conf 수정
# Virtual hosts
Include conf/extra/httpd-vhosts.conf <== 주석 제거
- 가상호스트 수정 (아피치 디렉토리/conf/extra/httpd-vhost.conf)
단, 필자가 실제 서비스에 필요한 사항만 기술하니 기타 자세한 사항은 apache 공식 사이트의 내용을 참고하기 바란다
(1) 환경
- Web Server : Apache 2.2.6
- modules : mod_proxy, mod_cache (mod_disk_cache, mod_mem_cache)
- 3개의 도메인 / 내부도메인 (외부도메인 ==> 내부도메인 forwarding)
- Reverse Proxy
- Disk Caching (특정 디렉토리만 Caching) - MaxDiskSize 1G
(2) 설치 (설치시 필요한 Library는 정상설치되었다고 가정한다.)
- Configure option
./configure --prefix=/usr/local/apache --enable-module=so --enable-modules=all --enable-mods-shared=all --enable-proxy --enable-cache --enable-mem-cache --enable-file-cache --enable-disk-cache --with-zlib=/usr/local/lib/ --enable-deflate
참고) Apache 컴파일 시 아래와 같은 오류가 발생하는 경우
mod_deflate has been requested but can not be built due to prerequisite failures
; 이 오류는 deflate라는 압축관련 모듈을 load 하는 과정에서 zlib library가 상기 configure에서 지정한
경로에 존재하지 않거나 혹은 zlib의 devel 패키지가 설치되지 않았을 경우에 발생할 수 있다
따라서, [zlib_devel 다운로드]에서 devel 패키지를 다운받아 설치 후 아파치를 컴파일 하면 정상적으로
설치된다.
(3) 셋팅
- Cache를 위한 특정 디렉토리 생성 (예:CacheRoot /usr/local/apache/cache)
- 아피치 디렉토리/conf/httpd.conf 수정
# Virtual hosts
Include conf/extra/httpd-vhosts.conf <== 주석 제거
- 가상호스트 수정 (아피치 디렉토리/conf/extra/httpd-vhost.conf)
<VirtualHost 아이피>
ServerName 외부도메인1
ProxyPass / http://내부도메인1/
ProxyPassReverse / http://내부도메인1/
CacheRoot /usr/local/apache/cache
CacheEnable disk /public_html
CacheMaxFileSize 1000000000
CacheDefaultExpire 60
CacheIgnoreNoLastMod On
CacheMaxExpire 60
</VirtualHost>
ServerName 외부도메인1
ProxyPass / http://내부도메인1/
ProxyPassReverse / http://내부도메인1/
CacheRoot /usr/local/apache/cache
CacheEnable disk /public_html
CacheMaxFileSize 1000000000
CacheDefaultExpire 60
CacheIgnoreNoLastMod On
CacheMaxExpire 60
</VirtualHost>
<VirtualHost 아이피>
ServerName 외부도메인2
ProxyPass / http://내부도메인2/
ProxyPassReverse / http://내부도메인2/
</VirtualHost>
<VirtualHost 아이피>
ServerName 외부도메인3
ProxyPass / http://내부도메인3/
ProxyPassReverse / http://내부도메인3/
</VirtualHost>
(4) 확인
- 아파치를 재기동 시킨다
- 외부 도메인의 서버 / 내부 도메인의 서버의 access log를 확인하여 proxy 및 cache가 제대로 되는지 확인한다.
* 참고) 브라우져마다 자체 Caching정책으로 proxy 제대로 되지 않는 것처럼 보일 수 있기 때문에
브라우져의 역할을 대체하는 간단한 코드를 작성하여 테스트 하는 것이 확실하게 proxy 및 cache가 되는지 알 수 있다 (필자는 python을 이용하여 테스트 하였다.)
이상으로 proxy 및 cache에 대한 구성을 마치며, 궁금한 사항이나 의문사항이 있으면 댓글이나
hakburi@naver.com 으로 메일 보내면 답변을 해드릴 예정이다
http://zosel.net/trackback/40
0