Nginx: PV、UV、独立IP
做网站的都知道,平常经常要查询下网站PV、UV等网站的访问数据,当然如果网站做了CDN的话,nginx本地的日志就没什么意义了,下面就对nginx网站的日志访问数据做下统计;
概念:
先声明下环境,此次运行的nginx版本1.7,后端Tomcat运行的是动态交互程序(需进行用户认证,如果是静态页面则抓不到cache值,$http_cookie是空值),就是这样;
nginx日志文件配置
http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - [$time_local] "$request" ' ' - $status "User_Cookie:$guid" '; #User_Cookie为日志显示字符,$guid为变量,具体内容在下面定义,也可在日志格式里写入$http_cookie 显示完整的cookie内容<br> sendfile on; keepalive_timeout 65; upstream backserver { ip_hash; server 1.1.2.2:8080; server 1.1.2.3:8080; } server { listen 80; server_name localhost; #if ( $http_cookie ~* "(.*)$") 匹配所有内容 if ( $http_cookie ~* "CSID=([A-Z0-9]*)"){ set $guid $1; } #只匹配CSID字符信息,此处为正则表达式<br> access_log logs/host.access.log main; location ~* ^(.*)$ { #limit_req zone=allips burst=1 nodelay; proxy_pass http://backserver; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 8m; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
注:$http_cookie这个里面的值是一个一个cookie的值,中间以“;”分隔
日志输出格式
192.168.40.2 - [02/Nov/2016:15:44:35 +0800] "GET /wcm/app/main/refresh.jsp?r=1478072325778 HTTP/1.1" - 200 "User_Cookie:7F00000122A5597C46607B1C0A7EC016"
192.168.40.2 - [02/Nov/2016:15:44:35 +0800] "GET /webpic/W0201611/W020161102/W020161102566715167404.jpg HTTP/1.1" - 200 "User_Cookie:7F00000122A5597C46607B1C0A7EC016"
119.255.31.109 - [02/Nov/2016:15:44:36 +0800] "GET /wcm/app/main/refresh.jsp?r=1478072510132 HTTP/1.1" - 200 "User_Cookie:7F000001237921BE9237838AEC65704D"
119.255.31.109 - [02/Nov/2016:15:44:36 +0800] "GET /wcm/app/message/message_query_service.jsp?READFLAG=0&MSGTYPES=1%2C2%2C3 HTTP/1.1" - 200 "User_Cookie:7F000001237921BE9237838AEC65704D"
192.168.40.2 - [02/Nov/2016:15:44:37 +0800] "GET /wcm/app/message/message_query_service.jsp?READFLAG=0&MSGTYPES=1%2C2%2C3 HTTP/1.1" - 200 "User_Cookie:7F00000123D3BF2345115EAAC21F71E0"
192.168.40.2 - [02/Nov/2016:15:44:37 +0800] "GET /wcm/app/message/message_query_service.jsp?READFLAG=0&MSGTYPES=1%2C2%2C3 HTTP/1.1" - 200 "User_Cookie:7F00000123EF73896DF98EDA9950944E"
192.168.40.2 - [02/Nov/2016:15:44:37 +0800] "GET /wcm/app/message/message_query_service.jsp?READFLAG=0&MSGTYPES=1%2C2%2C3 HTTP/1.1" - 200 "User_Cookie:7F00000123FE0F9C397E1A8F0C4F044B"
192.168.40.2 - [02/Nov/2016:15:44:37 +0800] "GET /wcm/app/main/refresh.jsp?r=1478072511427 HTTP/1.1" - 200 "User_Cookie:7F00000123A465B7EA1DE0AF0AE671B7"
119.255.31.109 - [02/Nov/2016:15:44:38 +0800] "GET /wcm/app/message/message_query_service.jsp?READFLAG=0&MSGTYPES=1%2C2%2C3 HTTP/1.1" - 200 "User_Cookie:7F00000123D89B11302DF80AE773C900"
PV统计
可统计单个链接地址访问量:
[root@localhost logs]# grep index.shtml host.access.log | wc -l
总PV量:
[root@localhost logs]# awk '{print $6}' host.access.log | wc -l
独立IP
[root@localhost logs]# awk '{print $1}' host.access.log | sort -r |uniq -c | wc -l
UV统计
[root@localhost logs]# awk '{print $10}' host.access.log | sort -r |uniq -c |wc -l
Cookie 测试页面
关于种cookie,可以使用下面的html代码,编辑,添加需要种的cookie
#index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gbk"> <meta http-equiv="Refresh" content="10"> //为了方便测试,每10秒刷新一次页面 </head> <body> <h1>test.test.com域测试</h1> 下面列出了该域的cookie<br> <p> <script> document.cookie="guid=A1UD8E5512451111111111"; //种cookie,追加 document.cookie="city=beijing"; //种cookie,追加 document.write(document.cookie); //列出已经存在的 </script> </p> </body> </html>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍利用Celery实现Django博客PV统计功能详解,包括了利用Celery实现Django博客PV统计功能详解的使用技巧和注意事项,需要的朋友参考一下 前言 前几天给网站的文章增加了pv统计,之前只有uv统计。之前没加pv统计是觉得每个用户每访问一次文章,我都需要做一次数据库写操作实在是有损性能,毕竟从用户在the5fire博客的的一次访问来看,只需要从数据库里拿到对应的文章(通常
数据库表建立 pv(Page View,网页浏览量)是针对blog文章的,因此数据库表直接在BlogPost表中扩充,修改BlogPost.php,增加如下内容: /** * @var int * * @ORM\Column(name="pv", type="integer", options={"default": "0"}) */ private $pv; /** * @retur
主要内容:使用 HttpSessionListener 和 HttpSessionAttributeListener 实现,使用 HttpSessionBindingListener 实现本节我们利用 Servlet 监听器接口,完成一个统计网站在线人数的案例。当一个用户登录后,显示欢迎信息,同时显示出当前在线人数和用户名单。当用户退出登录或 Session 过期时,从在线用户名单中删除该用户,同时将在线人数减 1。 本案例可以通过如下 2 种方案实现: 使用 HttpSessionListen
本文向大家介绍Java web网站访问量的统计,包括了Java web网站访问量的统计的使用技巧和注意事项,需要的朋友参考一下 当客户访问网站时就去读这个文件,将服务器重新启动前的计数读入,并在此基础上增加1,然后将新的计数写入到文件中。 参考代码如下: <html> 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
我遵循了很多nginx指南,但没有一个让我满意。 我的目标是创建两个具有不同文件权限的网站,因此我确信它们是永久隔离的。 例如/var/www/site1,所有者为site1,组为site1;和/var/www/site2,所有者为site2,组为site2,这两个目录都具有770权限。 我的nginx。形态: 我的/etc/nginx/sites available/site1: ... sit
问题内容: 基本安装nginx后,您的文件夹只有一个文件: 该文件夹如何工作,我将如何使用它托管多个(单独的)网站? 问题答案: 只需添加另一种方法,您就可以为托管的每个虚拟域或站点使用单独的文件。您可以将默认副本作为每个副本的起点,并为每个站点进行自定义。 然后在启用站点的站点中创建符号链接。这样,您可以通过添加或删除符号链接并发布服务nginx重新加载来访问站点。 在进行站点维护时,您可以发挥