博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Nginx和Apache配置日志格式记录Cookie
阅读量:5795 次
发布时间:2019-06-18

本文共 1936 字,大约阅读时间需要 6 分钟。

记录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,

$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获取。 

 

以上仅是自己的经验总结,不保证其正确性,仅供参考。

转载于:https://www.cnblogs.com/tianzk/p/4670546.html

你可能感兴趣的文章
又见到面试的毕业生
查看>>
广州项目实施步骤I_练习安装 CentOS x64 6.4
查看>>
solr4使用时常见异常及处理(转)
查看>>
C++ 排序函数 sort(),qsort()的使用方法
查看>>
atitit。获取表格的字段注释metadata的原理以及AND 字段表格描述文档方案
查看>>
那些年实用但被我忘掉javascript属性.onresize
查看>>
AngularJS是什么?
查看>>
protobuf for java
查看>>
蜕变成蝶~Linux设备驱动中的阻塞和非阻塞I/O
查看>>
spring 学习的开源项目
查看>>
查看软件的编译参数
查看>>
Android动画效果translate、scale、alpha、rotate详解
查看>>
Android 一个抽奖应用的逆向破解全流程之加固自己应用
查看>>
memcpy源代码
查看>>
3D打印论坛
查看>>
硬盘那点事儿
查看>>
[LeetCode] Max Points on a Line 共线点个数
查看>>
angular中的MVVM模式
查看>>
python下的web服务器模块
查看>>
Unity3D 系统宏
查看>>