如何用nginx得到客户端ip
来源:互联网 发布:网络作家花千骨作者 编辑:程序博客网 时间:2024/06/03 21:07
在架构中加装nginx常常会使服务取ip出现问题,让nginx直接支持x_forwarded_for是其中一种解决方案。
set $ip $http_x_forwarded_for;
if ($ip ~ ^$ )
{
set $ip $remote_addr;
}
proxy_set_header X-Forwarded-For "$ip, $server_addr";
用这段代码就可以让nginx支持标准的x_forwarded_for,在某些情况下,可以用:
proxy_set_header X-Forwarded-For "$ip";
不把nginx机器的ip地址加进去。
附:x_forwarded_for取ip的正确方式
x_forwarded_for是将请求路过的代理服务器的ip都记录下来的一条字符串,每经过一个代理服务器,x_forwarded_for就会在它的后面加上这个代理服务器的ip地址。
常见的:
119.120.112.157, 61.135.253.11
这样就表示请求经过了一个代理服务器61.135.253.11。
119.120.112.157, 61.135.253.11, 192.168.0.13
经过了两个代理服务器61.135.253.11和192.168.0.13。
这样看起来取第一个ip地址就是正确的,不过这比较草率:
192.168.0.1, 119.120.112.157, 61.135.253.11, 192.168.0.13
可以看到会有这样的x_forwarded_for地址,这是因为用户在反向代理前,还用了一个正向代理上网,这时取第一个的话就是192.168.0.1,显然是不正确的。
正确的取法应该是:
取倒数第一个非服务器ip,在例子中61.135.253.11, 192.168.0.13,这两个ip都是服务器用的ip,除去这两个,倒数第一个119.120.112.157就是正确的。
本文来自: E点废墟(www.xok.la) 详细出处参考:http://xok.la/2009/05/nginx_x_forwarded_for_ip.html
- 如何用nginx得到客户端ip
- 如何用C#及JS得到服务器端和客户端的IP
- 如何用pb得到主机的公网ip?
- 如何用 PHP 来获取客户端 IP 和 服务器(主机)的 IP
- 得到客户端真实ip
- 得到客户端IP地址
- 如何用GDB调试Nginx?
- 如何用代理ip地址
- 如何用命令行查IP?
- ultrawebgird如何用rowId得到row 对象
- 如何用子网掩码得到网络/主机地址
- 如何得到客户端的ip
- 得到客户端的IP地址
- 如何用Socket实现客户端通信模块
- 如何用VB编写OPC客户端程序
- 如何用VB编写OPC客户端程序
- 如何用ZCL编写客户端服务器端程序
- 如何用W7100A实现DDNS客户端(一)
- Andriod SQLite
- nginx优化配置说明
- Android SQLite-limit
- 解决PLSQL Developer无法连接64位ORACLE的方法(PLSQL 读不到ORACLE 的数据库)
- C++学习第六天:string
- 如何用nginx得到客户端ip
- 你应该知道的16个Linux服务器监控命令
- 内存中堆和栈的区别
- 当众寂寞
- 数据库优化的20条经验分享
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- 查询一个月最后一天的总用户数,数据库中没有保存最好一天的数据,就查询本月数据库已存有的最后一天的数据
- 最短路问题
- Spring beans——SSH (Spring+Struts+Hibernate)框架搭建之配置文件序列三