Detaillierte Erklärung, wie NGINX PV, UV und unabhängige IP der Website zählt

Detaillierte Erklärung, wie NGINX PV, UV und unabhängige IP der Website zählt

Nginx: PV, UV, unabhängige IP

Jeder, der Websites erstellt, weiß, dass er häufig die PV-, UV- und anderen Website-Zugriffsdaten der Website überprüfen muss. Wenn die Website über ein CDN verfügt, ist das lokale Nginx-Protokoll natürlich bedeutungslos. Im Folgenden finden Sie eine statistische Analyse der Protokollzugriffsdaten der Nginx-Website.

Konzept:

  • UV (Unique Visitor): Unabhängiger Besucher, jeder unabhängige Internet-Zugangscomputer (basierend auf Cookies) wird als Besucher betrachtet, die Anzahl der Besucher, die Ihre Website innerhalb eines Tages (00:00-24:00) besuchen. Derselbe Cookie wird nur einmal pro Tag gezählt.
  • PV (Page View): Visits, also Seitenaufrufe oder Klicks. Jeder Besuch eines Nutzers auf der Website wird einmal erfasst. Der Benutzer besucht dieselbe Seite mehrmals und der Besuchswert wird akkumuliert
  • Zählen unabhängiger IPs: Dieselbe IP-Adresse wird zwischen 00:00 und 24:00 Uhr nur einmal gezählt. Freunde, die sich mit Website-Optimierung beschäftigen, sind hierüber am meisten besorgt.

Lassen Sie uns zunächst die Umgebung angeben. Dieses Mal verwenden wir nginx Version 1.7 und das Backend Tomcat führt ein dynamisches interaktives Programm aus (Benutzerauthentifizierung ist erforderlich. Wenn es sich um eine statische Seite handelt, kann der Cache-Wert nicht erfasst werden und $http_cookie ist leer). Das ist alles.

Nginx-Protokolldateikonfiguration

http {
  mime.types einschließen;
  Standardtyp Anwendung/Oktett-Stream;
  log_format main '$remote_addr - [$time_local] "$request" '
            ' – $status „Benutzer_Cookie:$guid“ ';
 #User_Cookie ist das Protokollanzeigezeichen, $guid ist eine Variable, der spezifische Inhalt ist unten definiert, Sie können auch $http_cookie im Protokollformat schreiben, um den vollständigen Cookie-Inhalt anzuzeigen<br>
  sendfile an;
  KeepAlive-Timeout 65;
    Upstream-Backserver {
    ip_hash;
    Server 1.1.2.2:8080;
    Server 1.1.2.3:8080;
}
Server {
    hören Sie 80;
    Servername localhost;
    #if ( $http_cookie ~* "(.*)$") entspricht dem gesamten Inhaltif ( $http_cookie ~* "CSID=([A-Z0-9]*)"){
        setze $guid $1;
    } #Nur CSID-Zeicheninformationen abgleichen, hier ist ein regulärer Ausdruck<br>
    access_log Protokolle/host.access.log Haupt;
     Standort ~* ^(.*)$ {
       #limit_req Zone=Allips Burst=1 Knotenlay;
 
       Proxy-Passwort 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-Weitergeleitet-Für $proxy_add_x_forwarded_for;
       maximale Körpergröße des Kunden: 8 m;
       }
    Fehlerseite 500 502 503 504 /50x.html;
    Standort = /50x.html {
      Stamm-HTML;
    }
} 

Hinweis: Die Werte in $http_cookie sind Cookie-Werte, getrennt durch ";"

Protokollausgabeformat

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-Statistiken

Die Anzahl der Besuche einer einzelnen Linkadresse kann gezählt werden:

[root@localhost-Protokolle]# grep index.shtml host.access.log | wc -l

Gesamt-PV:

[root@localhost-Protokolle]# awk '{print $6}' host.access.log | wc -l

Dedizierte IP

[root@localhost-Protokolle]# awk '{print $1}' host.access.log | sort -r | uniq -c | wc -l

UV-Statistik

[root@localhost-Protokolle]# awk '{print $10}' host.access.log | sort -r | uniq -c | wc -l

Cookie Test Seite

Bezüglich der Art der Cookies können Sie den folgenden HTML-Code verwenden, um die einzugebenden Cookies zu bearbeiten und hinzuzufügen:

#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">
<Kopf>
<meta http-equiv="Inhaltstyp" content="text/html; charset=gbk">
<meta http-equiv="Refresh" content="10"> //Aktualisieren Sie die Seite zu Testzwecken alle 10 Sekunden</head>
<Text>
<h1>test.test.com Domänentest</h1>
Die Cookies für diese Domain sind unten aufgeführt<br>
<p>
<Skript>
document.cookie="guid=A1UD8E5512451111111111"; //Art Cookies, anhängendocument.cookie="city=beijing"; //Art Cookies, anhängendocument.write(document.cookie); //Vorhandene auflisten</script>
</p>
</body>
</html> 

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Shell-Statistiken PV und UV, unabhängige IP-Methode

<<:  Einführung in MySQL-Isolationsebene, Sperre und MVCC

>>:  7 native JS-Fehlertypen, die Sie kennen sollten

Artikel empfehlen

Was macht die MySQL-Datenbank?

MySQL ist ein relationales Datenbankverwaltungssy...

Detaillierte Erklärung der Kernfunktionen und der Ereignisbehandlung von jQuery

Inhaltsverzeichnis Ereignis Seite wird geladen Ve...

Einrichten eines globalen Shadowsocks+Polipo-Proxys in einer Linux-Umgebung

1. Installieren Sie Shadowsocks sudo apt-get inst...

Vue/React-Einzelseitenanwendung zurück ohne Aktualisierungslösung

Inhaltsverzeichnis Einführung Warum die Mühe? Com...

So verwenden Sie SessionStorage und LocalStorage in Javascript

Inhaltsverzeichnis Vorwort Einführung in SessionS...

Mehrere Methoden zum Ändern des MySQL-Root-Passworts (empfohlen)

Methode 1: Verwenden Sie den Befehl SET PASSWORD ...

Lösung für „Keine Eingabedatei angegeben“ in nginx+php

Heute ist in meiner lokalen Entwicklungsumgebung ...

So installieren Sie ROS Noetic in Ubuntu 20.04

Haftungsausschluss: Da das Projekt die Verwendung...

Detaillierte Erklärung des Workbench-Beispiels in MySQL

MySQL Workbench – Modellierungs- und Designtool 1...

Ubuntu-Installation Matlab2020b, ausführliches Tutorial und Ressourcen

Inhaltsverzeichnis 1. Ressourcendateien 2. Instal...