nginx做负载均衡,backend分别是apache和nginx时取得client真实ip的方法:

1.apache做backend

     将apache日志格式中%h替换为%{X-Forwarded-For}i  既可以或者%{x-real-ip}i

   前提是都要在做负载均衡的nginx上配置好Forwarded-For  x-real-ip的取值,有1个既可以。

   网上还有一种方式是加载apache的一个模快如下

   首先安装
# tar zxvf mod_rpaf-0.6.tar.gz
# cd mod_rpaf-0.6
# /usr/local/www/apache/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
接 着在 httpd.conf中添加
LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1   
# 填写Nginx的来访IP
RPAFheader X-Forwarded-For

### 但是我没有测试通过

2.nginx作为后端时

    需要在做负载的nginx上配置

      proxy_set_header        X-Real-IP $remote_addr;  # backend nginx对应日式格式 $http_x_real_ip

     或proxy_set_header X-Forwarded-For $remote_addr; # 同上$http_x_forwarded_for
      这样后端的nginx就取得了正确的client ip地址。