Nginx反向代理Apache的情况下让Apache获得真实IP
需要使用mod_rpaf模块
1.下载mod_rpaf-stable
https://github.com/gnif/mod_rpaf
2.安装模块
it@AX201:/down/mod_rpaf-stable$ sudo /home/app/apache/bin/apxs -i -c -n mod_rpaf.so mod_rpaf.c
3.查看已添加的模块
it@AX201:/fs/tmp/mod_rpaf-stable$ ls /home/app/apache/modules/mod_rpaf.so
4.配置文件中引入模块与配置使用
it@AX201:~$ sudo vim /home/app/apache/conf/httpd.conf
LoadModule rpaf_module modules/mod_rpaf.so
RPAF_Enable On
RPAF_ProxyIPs 127.0.0.1 192.168.0.18 #前端代理服务器
RPAF_SetHostName On
RPAF_SetHTTPS On
RPAF_SetPort On
RPAF_ForbidIfNotProxy Off
5.重启服务
it@AX201:~$ sudo /etc/init.d/httpd restart
6.查看日志,是否已经代理前的真实客户访问IP
it@AX201:~$ sudo tail -n 10 /home/app/apache/logs/access_log
#可以修改下访问日志查看更详细的IP访问情况
it@AX201:~$ sudo vim /home/app/apache/conf/httpd.conf
<IfModule log_config_module> #在这个里面更改
...
...
#LogFormat "%h %l %u %t \"%r\" %>s %b" common #先注释
LogFormat "%a %A %h %l %m %u %U %t \"%r\" %>s %b" common #加这个
...
...
</IfModule>
7.前端Nginx的配置
1
it@ubuntu-T2:~$ sudo vim /home/app/nginx/nginx-1.6.2/conf/nginx.conf
server {
listen 80;
server_name www.it.net.cn ;
charset utf-8 ;
location / {
proxy_pass http://192.168.0.61:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #这条是主要的
}
}
(责任编辑:IT) |