使用nginx服务器时,php获取用户ip的方法
2016-07-14 09:44
489 查看
最近碰到HTTP_X_REAL_IP,查了资料。
$_SERVER['REMOTE_ADDR'];得到的都是服务器的地址
$_SERVER['HTTP_X_REAL_IP'];得到的都是客户端的地址
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
后端程序可以从Server变量HTTP_X_REAL_IP和HTTP_X_FORWARDED_FOR中获取用户的ip地址。
HTTP_X_REAL_IP的值是nginx得到的用户REMOTE_ADDR
附上一段php获取客户端ip的简易代码
function getClientIP () {
if (isset ($_SERVER ['HTTP_X_FORWARDED_FOR'])){
$clientIP = $_SERVER ['HTTP_X_FORWARDED_FOR'];
}
elseif (isset ($_SERVER ['HTTP_X_REAL_IP'])){
$clientIP = $_SERVER ['HTTP_X_REAL_IP'];
}
else {
$clientIP = $_SERVER['REMOTE_ADDR'];
}
return $clientIP;
}
$_SERVER['REMOTE_ADDR'];得到的都是服务器的地址
$_SERVER['HTTP_X_REAL_IP'];得到的都是客户端的地址
nginx 代理模式下,获取客户端真实IP
在nginx中设置:proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
后端程序可以从Server变量HTTP_X_REAL_IP和HTTP_X_FORWARDED_FOR中获取用户的ip地址。
HTTP_X_REAL_IP的值是nginx得到的用户REMOTE_ADDR
附上一段php获取客户端ip的简易代码
function getClientIP () {
if (isset ($_SERVER ['HTTP_X_FORWARDED_FOR'])){
$clientIP = $_SERVER ['HTTP_X_FORWARDED_FOR'];
}
elseif (isset ($_SERVER ['HTTP_X_REAL_IP'])){
$clientIP = $_SERVER ['HTTP_X_REAL_IP'];
}
else {
$clientIP = $_SERVER['REMOTE_ADDR'];
}
return $clientIP;
}
相关文章推荐
- 一个关于if else容易迷惑的问题
- 小心服务器内存居高不下的元凶--WebAPI服务
- nginx代理指定目录
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- 访问Nginx发生SSL connection error的一种情况
- 运维入门
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- Nginx+Naxsi部署专业级Web应用防火墙
- 什么是设计模式
- CentOS 6.2实战部署Nginx+MySQL+PHP
- PHP数据库长连接mysql_pconnect的细节
- nginx中http核心模块的配置指令2
- nginx中http核心模块的配置指令3
- nginx中http核心模块的配置指令4
- nginx中http的fastcgi模块的配置指令1