# apache httpd 에서의 remote ip 는 nginx ip 가 된다.
client(10.10.10.10) --> nginx (20.20.20.20) --> apache httpd (30.30.30.30)
# apache httpd 에서 client ip 를 파악하기 위해선 nginx.conf 에서 다음과 같이
# 프록시(apache httpd)에 전달시 헤더에 X-Real-IP 나 X-Forwarded-For 값을 설정한다.
# $proxy_add_x_forwarded_for 는 $remote_addr 가 포함된 클라인트 요청 헤더다.
vi nginx.conf
server{
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://30.30.30.30:PORT;
}
}
# apache httpd 2.2 에선 mod_rpaf 를 설치하고
# rpaf 모듈을 사용하여 nginx 가 보낸 헤더를 사용할 수 있도록 다음과 같이 설정한다.
vi httpd.conf
LoadModule rpaf_module modules/mod_rpaf-2.0.so
<IfModule mod_rpaf.c>
RPAFenable On
RPAFsethostname On
PAFheader X-Forwarded-For
RPAFproxy_ips 20.20.20.20
</IfModule>
# apache httpd 2.4 부터는 RemoteIPHeader 를 제공하여 있어 다음과 같이 설정에 추가한다.
vi httpd.conf
LoadModule remoteip_module modules/mod_remoteip.so
<IfModule remoteip_module>
RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy 123.123.123.123
RemoteIPTrustedProxy 10.0.0.0/8
</IfModule>
참고
http://nginx.org/en/docs/http/ngx_http_proxy_module.html
https://chrismorris.org/passing-ip-from-nginx-to-apache/
https://github.com/y-ken/mod_rpaf
https://httpd.apache.org/docs/current/mod/mod_remoteip.html
comments:
댓글 쓰기