nginx apache 2.2 구성에서 real ip 사용하기
nginx(reverse proxy) – apache(backend)로 구성을 한 경우 nginx에서 apache로 요청을 넘기는 client ip가 nginx의 ip가 된다. nginx로만 구성되었을 때는 이전 포스트 https://chicpro.dev/10917 를 참고해서 설정하면 되는데.. apache에서는 추가적은 모듈이 필요하다. mod_rpaf 모듈로 비교적 간단하게 컴파일해서 사용할 수 있다. apache는 2.2.3 이며 /usr/local/apache2 에 설치된 환경이다. mod_rpaf 0.6 버전을 사용했다.
mod_rpaf 다운로드 : http://www.stderr.net/apache/rpaf/download/
mod_rpaf 사이트 : http://www.stderr.net/apache/rpaf/
# cd /usr/local/src
# wget http://www.stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
# tar xzvf mod_rpaf-0.6.tar.gz
# cd mod_rpaf-0.6
# sed -ie 's/apxs2/apxs/' Makefile
# make rpaf-2.0
# make install-2.0
위의 과정으로 컴파일 및 설치가 완료된다. 이제 남은 작업은 httpd.conf 파일을 수정하는 것이다.
LoadModule rpaf_module modules/mod_rpaf-2.0.so
<IfModule mod_rpaf.c>
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 192.168.0.1 ::1
RPAFheader X-Forwarded-For
</IfModule>
위의 내용을 추가해준 후 apache를 재시작하면 log에 client ip가 기록되기 시작한다. 그런데 테스트 할 때 ip가 제대로 적용되지 않는 문제가 있었는데.. 그 때는 위의 내용에서 <IfModule mod_rpaf.c> 와 </IfModule> 를 주석처리하고 조건식을 없애니 제대로 작동을 했다. 리눅스 환경에 따라 조건식에 문제가 있는 것 같다.
참고자료 : http://www.bxtra.net/articles/2011-02-13/how-to-install-modrpaf-for-apache-22