Nginx反向代理下IIS获取真实IP
Posted 性能、可用性、伸缩性、扩展性、安全性、可监控是网站架构最核心
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx反向代理下IIS获取真实IP相关的知识,希望对你有一定的参考价值。
1. iis 如果放在反向代理后面,日志里的c-ip是反向代理服务器的ip,不是真正用户的ip,想要记录用户的ip要做两件事。
一。在反向代理设置X-Forwarded-For段,以下为nginx下的配置示例:
server
{
location
{
……
proxy_set_header
……
}
}
二。在iis站点上安装下面这个isapi filter,这东西是在f5的开发论坛上找到的,按开发者的话说,是为了解决iis放在f5后记录不到用户ip的问题,-_-# 管他前端是f5还是nginx还是squid还是haproxy。都可以用。应该不错。装完之后重启下iis就搞定了。
http://devcentral.f5.com/weblogs/Joe/archive/2009/08/19/x_forwarded_for_log_filter_for_windows_servers.aspx
回头看下iis的日志,里面的c-ip已经是用户端的ip了。
2.此dll文件的安装使用方法:有IIS站点的右键属性下,打开ISAPI筛选器,添加下载的dll文件,记住下载下来的文件有两个,一个是x86,一个是x64,分别对应32位和64位,并且都有F5XForwardedFor.dll两个版本,即正式版本和开发版本,应该选择用Release正式稳定版本的。 如果添加完后加载不成功,可以尝试在web服务扩展中添加服务扩展,将F5XForwardedFor.dll添加到服务扩展中,设置其状态为启用。最后重启iis即可。
加图:
下图为添加web服务扩展:
最后测试吧。
在IIS的文档中经常会提到两个术语:ISAPI扩展和ISAPI筛选器。
ISAPI扩展
“ISAPI扩展(ISAPI Extension)”是一种可以添加到IIS中以增强Web服务器功能的程序,其载体为DLL文件。通常直接负责响应HTTP请求。
根据HTTP请求要访问的资源扩展名(通过URL获取),IIS会选取特定的ISAPI扩展来处理这一请求,这一过程被称为“程序映射”。 而用于响应HTTP请求的被称为“HTTP Handler(HTTP处理程序)”。 图 8?11展示了IIS 6中的程序映射。
在图 8?11中可以看到,IIS指定对ASP.NET网页(其扩展名为.aspx)的请求将由aspnet_isapi.dll处理(图 8?12)。
IIS 7中的程序映射与IIS 6略有不同。当IIS 7以“经典模式”运行时,与IIS 6一样使用aspnet_isapi.dll响应针对“.aspx”的请求。但当IIS 7以“集成模式”运行时,则使用托管处理程序(System.Web.UI.PageHandlerFactory)响应针对“.aspx”的请求(图 8?13)。
2 ISAPI筛选器
“ISAPI筛选器(ISAPI Filter)”也是一种DLL但不负责处理HTTP请求,主要作用是响应某些特定的事件。当这些事件发生时ISAPI筛选器被调用,它可以修改传入或传出的HTTP数据。在IIS 7中,使用“HTTP模块(HTTP Module)”取代了传统ISAPI筛选器的功能。
注意:ISAPI扩展与ISAPI筛选器名字很相近,但其在IIS中的地位和所起的作用是不同的。
以上是关于Nginx反向代理下IIS获取真实IP的主要内容,如果未能解决你的问题,请参考以下文章