835
英雄联盟
获取访问者真实IP___常见接入问题_Web 应用防火墙-阿里云
使用“Web应用防火墙”后获取访问者真实IP配置指南
很多时候,网站并不是简单的从用户的浏览器直达服务器, 中间可能会加入CDN、WAF、高防。
变成如下的架构:
用户 —–> CDN/WAF/高防 ——> 源站服务器
那么,经过这么多层加速,服务器如何才能得到发起请求的真实客户端IP呢?
当一个透明代理服务器把用户的请求转到后面服务器的时候,会在HTTP的头中加入一个记录:
X-Forwarded-For:用户真实IP
如果中间经历了不止一个代理服务器,那么X-Forwarded-For可能会为以下的形式:
X-Forwarded-For:用户IP, 代理服务器1-IP, 代理服务器2-IP, 代理服务器3-IP, ……
那么如何获取X-Forwarded-For的内容?
获取来访真实IP方法
常见应用服务器获取来访者真实IP的方法.
- 使用X-Forwarded-For的方式获取访问者真实IP
以下针对常见的应用服务器配置方案进行介绍:
IIS 6 配置方案
通过IIS 6日志中获取来访者真实IP地址的解决方案,首先需要安装插件F5XForwardedFor.dll,下载地址
- 根据自己的服务器操作系统版本将x86Release或者x64Release目录下的F5XForwardedFor.dll拷贝到某个目录,这里假设为C:ISAPIFilters,同时确保对IIS进程对该目录有读取权限。
- 打开IIS管理器,找到当前开启的网站,在该网站上右键选择“属性”,打开属性页。
- 在属性页切换至“ISAPI筛选器”,点击“添加”按钮,出现添加窗口。
- 在添加窗口:“筛选器名称”填写“F5XForwardedFor”,“可执行文件”填写F5XForwardedFor.dll的完整路径,点击确定。
- 重启IIS服务器,等待配置生效。
IIS 7 配置方案
通过F5XForwardedFor模块获取来访者真实IP地址的解决方案,首先需要下载与安装插件F5XForwardedFor模块,下载地址
- 根据自己的服务器操作系统版本将x86Release 或者x64Release目录下的F5XFFHttpModule.dll和F5XFFHttpModule.ini拷贝到某个目录,这里假设为C:F5XForwardedFor,确保对IIS进程对该目录有读取权限。
选择“IIS服务器”选项,按图所示选择“模块”功能:
双击“模块”功能,点击“配置本机模块”:
在弹出框中点击“注册”按钮:
添加下载的DLL文件,如下图:
添加完成后,勾选并点击“确定”:
把这两个DLL在 “API 和CGI限制”进行添加,并改为允许:
重启IIS服务器,等待配置生效。
Apache配置方案
首先,安装apache的一个第三方模块“mod_rpaf”, 官方网站
wget https://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
tar zxvf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
/alidata/server/httpd/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
修改apache配置/alidata/server/httpd/conf/httpd.conf,在最末尾添加:
LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname On
RPAFproxy_ips ip地址
RPAFheader X-Forwarded-For
//RPAFproxy_ips ip地址(这个ip地址首先不是负载均衡提供的公网ip,具体ip多少可以看一下apache日志,通常会有2个 都要写上)
添加完成后重启apache
/alidata/server/httpd/bin/apachectl restart
具体案例
LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 10.242.230.65 10.242.230.131
RPAFheader X-Forwarded-For
Nginx配置方案
Nginx作为负载均衡获取真实ip是使用http_realip_module,默认一键安装包安装的Nginx是没有安装这个模块的,需要重新重新编译Nginx并加装:
重新编译Nginx增加 —with-http_realip_module
wget https://soft.phpwind.me/top/nginx-1.0.12.tar.gz
tar zxvf nginx-1.0.12.tar.gz
cd nginx-1.0.12
./configure --user=www --group=www --prefix=/alidata/server/nginx --with-http_stub_status_module --without-http-cache --with-http_ssl_module --with-http_realip_module
make
make install
kill -USR2 `cat /alidata/server/nginx/logs/nginx.pid`
kill -QUIT `cat /alidata/server/nginx/logs/ nginx.pid.oldbin`
修改nginx.conf
vi /alidata/server/nginx/conf/nginx.conf
在
fastcgi connect_timeout 300;
fastcgi send_timeout 300;
fastcgi read_timeout 300;
fastcgi buffer_size 64k;
fastcgi buffers 4 64k;
fastcgi busy_buffers_size 128k;
fastcgi temp_file_write_size 128k;
下面增加
set_real_ip_from ip地址;(这个ip地址首先不是负载均衡提供的公网ip,具体ip多少可以看一下之前nginx日志,如果有多个都要写上。)
set_real_ip_from ip地址;(这个ip地址首先不是负载均衡提供的公网ip,具体ip多少可以看一下之前nginx日志,如果有多个都要写上。)
real_ip_header X-Forwarded-For;
重启Nnginx
/alidata/server/nginx/sbin/nginx -s reload
Tomcat配置方案
开启tomcat的X-Forwarded-For,在tomcat/conf/server.xml中,修改AccessLogValve日志纪录功能为如下内容:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%{X-FORWARDED-FOR}i %l %u %t %r %s %b %D %q %{User-Agent}i %T" resolveHosts="false"/>
最后更新:2016-12-01 22:33:24
上一篇:
源站保护__常见接入问题_Web 应用防火墙-阿里云
下一篇:
WAF源站负载均衡__常见接入问题_Web 应用防火墙-阿里云
GetBucketReferer__关于Bucket的操作_API 参考_对象存储 OSS-阿里云
数据开发常见问题__常见问题_大数据开发套件-阿里云
获取基本信息__获取图片信息_老版图片服务手册_对象存储 OSS-阿里云
网站提示非法页面(黄、赌、毒)、被屏蔽,被挂黑链__产品常见问题_服务器安全(安骑士)-阿里云
实时路况_阿里云帮助中心-阿里云,领先的云计算服务提供商
删除堆栈失败__常见问题_资源编排-阿里云
HTTPS证书报错__错误说明_API 网关-阿里云
版本列表__Java_SDK_日志服务-阿里云
队列方式接收通知__接收消息通知_开发人员指南_视频点播-阿里云
直播录制__使用手册_视频直播-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云