Nginx和Apache配置日志格式记录Cookie
2017-09-17 00:04
537 查看
记录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访问日志记录真实客户端IP,而不是nginx代理服务器IP
- nginx中用JSON格式记录日志的配置示例
- 怎样配置让apache访问日志记录真实客户端IP,而不是nginx代理服务器IP
- 怎样配置让apache访问日志记录真实客户端IP,而不是nginx代理服务器IP
- nginx日志配置(cookie,header,post等字段记录)
- Nginx 和 Apache 日志记录格式设置
- 实现Nginx中使用PHP-FPM时记录PHP错误日志的配置方法
- 关于通过nginx配置到apache-tomcat-7.0.67的端口的时候access中打印访问日志会一直输出nginx的地址而不是用户的真实地址
- nginx反向代理转发apache配置 之 cookie去哪儿了?
- Apache配置——不记录指定文件类型的日志
- 实现Nginx中使用PHP-FPM时记录PHP错误日志的配置方法
- nginx日志格式记录
- 将cookie信息记录到apache的访问日志中
- 使用Nginx如何配置Tomcat访问日志记录真实IP
- nginx日志格式及自定义日志配置
- apache配置文件中 设置访问日志不记录 指定ip的访问记录
- Nginx 日志中记录cookie
- Nginx配置——不记录指定文件类型日志
- nginx日志格式及自定义日志配置