全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

利用nginx访问日志如何记录mysql中的用户id详解

前言

大家应该都知道,nginx有很强大的日志功能,但是在缺省状态下,它只能记录用户的IP地址以及浏览器信息。如果我们有用户登录注册系统,在用户已登录的情况下,想记录访问某一个网页的到底是哪一个用户,怎么办呢?因为我们不只想知道到底是哪一个IP地址访问了哪一个网页,并且还想知道到底是哪一个登录用户访问了哪一个网页,这对于我们日后有针对性地向他/她推荐信息甚至推送广告都是非常有用的。下面话不多说,来一起看看详细的介绍:

nginx缺省的日志格式

127.0.0.1 - - [20/Jul/2017:22:04:08 +0800] "GET /news/index HTTP/1.1" 200 22262 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.66 Safari/537.36"

在这里,我们看到,虽然用户已经登录,但是日志里没有任何与用户相关的信息,只有ip地址。如果我们想记录用户的id等信息,怎么办呢?

在PHP端输出特殊的header

我们想到,既然用户已登录了,则它肯定有cookie或者session或者token信息,不管是哪种方式,我们的php一定是可以有效地获取到这个用户的信息的。在这里举例我们通过session获取到了用户的id信息:

$user_id = Yii::$app->session['user_id'];
if (empty($user_id)) {
 header('X-UID: 0');
} else {
 header('X-UID: ' . $user_id);
}

如果session里没有用户id,则说明用户还没有登录,则输出X-UID: 0(或者也可以干脆什么也不输出)。如果获取到了session,说明用户已登录,则我们把他的user_id输出给nginx: X-UID: 12345这样的形式。

在这里,你不止可以输出一个信息,你可以输出好几个不同的字段,包括他的姓名、性别、年龄等等都可以。

创建一种新的日志格式

log_format只能被存储在http段里,所以我们需要找到nginx.conf文件。

nginx缺省的日志格式第二部分就是用户信息,但通常什么也没有,只是一个-,这里我们它改造成我们从后端传进来的header信息。由上文我们创造的特殊header是X-UID,这里需要先做一个小的转换,把大写字母全部改为小写,把所有的-改为下划线,就变成了x_uid,然后在前面拼接上$upstream_http_ ,就得到了最终的结果$upstream_http_x_uid,然后把它插入到日志格式任何你想让它出现的地方:

log_format front '$remote_addr - $upstream_http_x_uid [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';

在server里引用这种日志格式

在server相关的设置里,因为我们上面给日志格式起名为front,所以在这里我们引用它时,需要指明用front日志格式:

access_log /var/log/nginx/front-access.log front;

新的日志结果

127.0.0.1 - 52248 [20/Jul/2017:22:35:40 +0800] "GET /news/view?id=56 HTTP/1.1" 200 19455 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.66 Safari/537.36"

注意:上面第2个数字52248,这就是我们登录用户的个人ID。我这里的例子比较简单,如果你不嫌麻烦,甚至可以把登录用户的所有个人信息,包括手机号、邮箱全部打印在日志里,就看你是否顾虑安全问题了。

对用户隐藏id

在上面的第一步,我们用php输出了一个特殊header,本来我们这个header只是供nginx消费用的,但是这个header会被nginx原封不动地显示给前端,可能会有细心的用户感到不安。为此我们可以在nginx的server设置里再加一个小开关,隐藏掉这个头部:

proxy_hide_header X-UID;

这样用户从浏览器端就看不到这个特殊头部了,而并不影响nginx记录它。

最终处理

那么我们费这么大力气,记录下来一个ID有什么用呢?这个用处可就大了。大家都知道我们有一个日志分析的利器logstash,通过它结合上ELK组件可以分析处理Apache或者nginx日志。如果我们没有这个ID信息的话,最多也只能分析出来哪一个网页经常被用户访问,仅此而已。但现在我们有了用户ID,我们甚至可以连接mysql数据库表进行分析,研究哪一个年龄段的,哪一个性别的,或者哪一个城市的用户喜欢访问什么网页,甚至有针对性地了解具体某一个用户,他喜欢在什么时间段访问什么网页,进而有针对性地为他提供定制化的服务。这还不够强大吗?

总结

以上就是这篇文章的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# mysql  # 用户id  # nginx  # php  # Nginx自定义访问日志的配置方式  # Nginx日志实现访问异常报警详解  # centos中nginx按日期自动分割访问日志的方法  # Nginx实现浏览器可实时查看访问日志的步骤详解  # Nginx屏蔽F5心跳日志、指定IP访问日志  # nginx访问日志并删除指定天数前的日志记录配置方法  # Python 分析Nginx访问日志并保存到MySQL数据库实例  # shell脚本分析 nginx日志访问次数最多及最耗时的页面(慢查询)  # Nginx访问日志及错误日志参数说明  # 在这里  # 就看  # 都是  # 如果你  # 也不  # 还没有  # 会有  # 你可以  # 大家都  # 最多  # 这就是  # 没有任何  # 下划线  # 原封不动  # 你想  # 把它  # 我们可以  # 为他  # 想知道  # 向他 


相关文章: 广平建站公司哪家专业可靠?如何选择?  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  C#如何在一个XML文件中查找并替换文本内容  如何快速生成橙子建站落地页链接?  三星网站视频制作教程下载,三星w23网页如何全屏?  历史网站制作软件,华为如何找回被删除的网站?  建站org新手必看:2024最新搭建流程与模板选择技巧  济南企业网站制作公司,济南社保单位网上缴费步骤?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  网站制作说明怎么写,简述网页设计的流程并说明原因?  电脑免费海报制作网站推荐,招聘海报哪个网站多?  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  建站之星如何一键生成手机站?  如何零基础开发自助建站系统?完整教程解析  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  免费网站制作appp,免费制作app哪个平台好?  如何选择CMS系统实现快速建站与SEO优化?  长沙做网站要多少钱,长沙国安网络怎么样?  专业网站建设制作报价,网页设计制作要考什么证?  *服务器网站为何频现安全漏洞?  宿州网站制作公司兴策,安徽省低保查询网站?  建站之星安全性能如何?防护体系能否抵御黑客入侵?  中山网站制作网页,中山新生登记系统登记流程?  建站之星如何快速生成多端适配网站?  小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建  内部网站制作流程,如何建立公司内部网站?  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  如何通过网站建站时间优化SEO与用户体验?  如何快速搭建高效WAP手机网站?  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  建站主机CVM配置优化、SEO策略与性能提升指南  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  建站之星CMS建站配置指南:模板选择与SEO优化技巧  如何彻底删除建站之星生成的Banner?  建站主机选购指南:核心配置与性价比推荐解析  高端智能建站公司优选:品牌定制与SEO优化一站式服务  制作农业网站的软件,比较好的农业网站推荐一下?  如何在云指建站中生成FTP站点?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  建站之星收费标准详解:套餐费用及年费价格表一览  教学网站制作软件,学习*后期制作的网站有哪些?  如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法  如何撰写建站申请书?关键要点有哪些?  高端云建站费用究竟需要多少预算?  如何挑选优质建站一级代理提升网站排名?  建站之星如何实现网站加密操作?  Bpmn 2.0的XML文件怎么画流程图  定制建站流程步骤详解:一站式方案设计与开发指南  如何通过云梦建站系统实现SEO快速优化? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。