反向代理,后端Apache获取真实IP地址
在配置负载均衡时,nginx做代理服务器,Apache做web服务,但是Apache获取不到真实用户
的IP,需要给Apache增加模块mod_rpaf
1.Apache设置:
安装gcc:yum install gcc
安装httpd-devel:yum install httpd-delvel
安装模块mod_rpaf:
#解压缩以后直接make install
wget -O mod_rpaf.zip https://github.com/gnif/mod_rpaf/archive/stable.zip
unzip mod_rpaf.zip
cd mod_rpaf-stable
make install
修改主配置文件httpd.conf日志配置模块如下:
<IfModule log_config_module>
#replace %b with %O for more accurate logging
<IfModule mod_logio.c>
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %O" common
LogFormat "%O %I" bytes
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
CustomLog /var/log/httpd/access_log common
</IfModule>
在模块配置目录/etc/httpd/conf.modules.d/增加rpaf模块引用配置文件rpaf.conf,代码如下:
#mod_rpaf模块加载文件
LoadModule rpaf_module modules/mod_rpaf.so
RPAF_Enable On
#代理服务器的IP地址
RPAF_ProxyIPs 192.168.73.130
RPAF_SetHostName On
RPAF_SetHTTPS On
RPAF_SetPort On
RPAF_ForbidIfNotProxy Off
2.Nginx设置:
修改配置文件,在反向代理配置代码中加入参数proxy_set_header,代码参考如下:
#转发请求到负载web服务器
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#转发到loadbalance组web服务器
proxy_pass http://192.168.247.134:8080;
}
网友评论