分享

常见应用服务器获取来访者真实IP的方法

 贾朋亮博客 2015-01-13

由于4层(TCP协议)服务可以直接在后端ECS上获取来访者真实IP地址,无需进行额外的配置,以下介绍的内容均是针对7层(HTTP协议)的SLB服务而言。

想要获取来访者真实IP地址,前提是在SLB服务监听配置中开启了“获取真实IP”的功能,SLB系统提供X-Forwarded-For的方式获取访问者真实IP。

以下针对常见的应用服务器配置方案进行介绍:

IIS 6 配置方案

通过IIS 6日志中获取来访者真实IP地址的解决方案,首先需要安装插件F5XForwardedFor.dll,下载地址:http://aliyuntool.oss./F5XForwardedFor2008.zip

l 根据自己的服务器操作系统版本将x86\Release或者x64\Release目录下的F5XForwardedFor.dll拷贝到某个目录,这里假设为C:\ISAPIFilters,同时确保对IIS进程对该目录有读取权限。

l 打开IIS管理器,找到当前开启的网站,在该网站上右键选择“属性”,打开属性页。

l 在属性页切换至“ISAPI筛选器”,点击“添加”按钮,出现添加窗口。

l 在添加窗口:“筛选器名称”填写“F5XForwardedFor”,“可执行文件”填写F5XForwardedFor.dll的完整路径,点击确定。

l 重启IIS服务器,等待配置生效。

IIS 7 配置方案

通过F5XForwardedFor模块获取来访者真实IP地址的解决方案,首先需要下载与安装插件F5XForwardedFor模块,下载地址:http://aliyunecs.oss./x_forwarded_for.rar

l 根据自己的服务器操作系统版本将x86\Release 或者x64\Release目录下的F5XFFHttpModule.dll和F5XFFHttpModule.ini拷贝到某个目录,这里假设为C:\F5XForwardedFor\,确保对IIS进程对该目录有读取权限。

l 选择“IIS服务器”选项,按图所示选择“模块”功能:

l 双击“模块”功能,点击“配置本机模块”:

l 在弹出框中点击“注册”按钮:

l 添加下载的DLL文件,如下图:

l 添加完成后,勾选并点击“确定”:

l 把这两个DLL在 “API 和CGI限制”进行添加,并改为允许:

l 重启IIS服务器,等待配置生效。

Apache配置方案

首先,安装apache的一个第三方模块“mod_rpaf”, 官方网站: http:///apache/rpaf/

wget http:///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地址首先不是slb提供的公网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作为slb获取真实ip是使用http_realip_module,默认一键安装包安装的Nginx是没有安装这个模块的,需要重新重新编译Nginx并加装:

重新编译Nginx增加 --with-http_realip_module

wget http://oss./aliyunecs/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地址首先不是slb提供的公网ip,具体ip多少可以看一下之前nginx日志,如果有多个都要写上。)

set_real_ip_from ip地址;(这个ip地址首先不是slb提供的公网ip,具体ip多少可以看一下之前nginx日志,如果有多个都要写上。)

real_ip_header X-Forwarded-For;

重启Nnginx

/alidata/server/nginx/sbin/nginx -s reload

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多