Nginx和Apache配置日志格式记录Cookie
来源:互联网 发布:统计局70城房价数据 编辑:程序博客网 时间:2024/05/18 00:32
记录Cookie有什么用?
有时候我们需要通过web服务器的访问日志来统计UV(独立访客),并据此分析用户的行为。而UV是依据cookie数据得出的统计。UV相对于IP的好处是:IP是一个反映网络虚拟地址对象的概念,UV是一个反映实际使用者的概念,更加准确地对应一个实际的浏览者。使用UV作为统计量,可以更加准确的了解单位时间内实际上有多少个访问者来到了相应的页面。
如何记录Cookie?
Nginx:
在nginx的配置文件中,可以通过$http_cookie来访问Cookie.
想要记录Cookie,你需要修改nginx.conf配置文件。下面看一下具体的配置方法。
找到如下代码,
1 #log_format main '$remote_addr - $remote_user [$time_local] "$request" '2 # '$status $body_bytes_sent "$http_referer" '3 # '"$http_user_agent" "$http_x_forwarded_for"';
如果你要记录整个Cookie,在下面添加一个新的log_format
1 log_format access_with_cookie '$remote_addr - $remote_user [$time_local] "$request" '2 '$status $body_bytes_sent "$http_referer" '3 '"$http_user_agent" "$http_x_forwarded_for" "$http_cookie"';
然后在合适的位置上添加
access_log /usr/share/nginx/logs/access_with_cookie.log access_with_cookie;
如果你要记录Cookie的一部分,则你需要截取$http_cookie的内容。
现在假设我们在php中设置一个Cookie,
<?php setcookie('uuid' , '137C6BAE-DE1F-4F5F-51ED-5E1AA1B55A17' , time() + 3600*24); ?>
$http_cookie大概会是这样的
uuid=137C6BAE-DE1F-4F5F-51ED-5E1AA1B55A17
如果想仅仅记录 137C6BAE-DE1F-4F5F-51ED-5E1AA1B55A17。
则需要在nginx.conf的server段添加
1 if ($http_cookie ~* ".*uuid=(.*)(?:;|$)")2 {3 set $cookie_uuid $1;4 }
并修改logformat,用$cookie_uuid代替$http_cookie
上面的配置涉及到了nginx的正则表达式。我对于正则表达式也不是很了解,这里仅说一下我的理解,不保证正确。
$1代表正则表达式中第一个括号里边的内容。
好了,在nginx日志里记录Cookie大概就是上面这个样子。
Apache
nginx配置网络上的文章比较多,但Apache得相对少一些。把我的方法说明一下,原理是一样的,只是语法有些差别。
Apache已经预置了获取Cookie某个字段的方法:%{VARNAME}C,所以配置起来会相对简单一点。
编辑httpd.conf,找到下面的内容。
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
在它之上加1行,
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{uuid}C\"" combined_with_cookie
%{VARNAME}C代表cookie中VARNAME的值。仅支持version 0 cookies。关于Apache的LogFormat可参考这里,有详细的说明。
修改
CustomLog "logs/access_log" common
为
CustomLog "logs/access_log" combined_with_cookie
另外整个Cookie的值可以使用%{Cookie}i获取。
以上仅是自己的经验总结,不保证其正确性,仅供参考。
- Nginx和Apache配置日志格式记录Cookie
- nginx日志切割和记录cookie
- nginx和apache日志格式详解 2
- nginx和apache日志格式详解
- nginx日志格式配置
- 配置apache日志格式
- 自定义nginx日志记录格式
- Nginx日志记录Cookie 学习笔记
- nginx访问日志格式配置
- apache日志通过cookie记录独立访客
- Apache日志格式与配置
- nginx与apache日志格式的区别
- 关于apache的日志配置和模板格式分析
- nginx日志格式及自定义日志配置
- nginx日志格式及自定义日志配置
- apache和nginx配置
- 怎样配置让apache访问日志记录真实客户端IP,而不是nginx代理服务器IP
- 怎样配置让apache访问日志记录真实客户端IP,而不是nginx代理服务器IP
- 安装vmware时显示无法写入注册表怎么办
- 9-16NOIP模拟赛总结
- Spring MVC--18.json结果返回(@)
- 关于 React服务器端渲染(SSR)
- SpringCloud概述
- Nginx和Apache配置日志格式记录Cookie
- 为多态基类声明virtual析构函数
- 【生活】我的父母
- 中间变量缓存机制
- Python:神奇的pivot函数!(行列转置)
- Eclipse中的buildpath详解
- Java基础部分第七节
- nginx+php出现No input file specified解决办法
- 配置了<mvc:resources>但是静态资源还是找不到报404