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

Konfigurationsmethode für die VMware Kali-Umgebung virtueller Maschinen

1|0 Kompilieren Sie den Kernel (1) Führen Sie den...

CSS-Beispielcode mit Suchnavigationsleiste

Dieser Artikel zeigt Ihnen, wie Sie mit CSS eine ...

HTML verwendet reguläre Ausdrücke zum Testen von Tabellenbeispielen

Hier ist ein Beispielcode für die Verwendung regu...

Detaillierte Erklärung der Javascript-Grundlagen

Inhaltsverzeichnis Variable Datentypen Erweiterun...

MySQL Online-DDL-Tool Gh-Ost-Prinzipanalyse

Inhaltsverzeichnis 1. Einleitung 1.1 Grundsatz 1....

Zusammenfassung von 6 Methoden zur Anzeige von Linux-Protokollen

Als Backend-Programmierer haben Sie an vielen Ste...

Mit CSS3 können Sie eine schwebende Wolkenanimation erzielen

Wirkung der Operation html <Kopf> <meta ...

Implementierungsbeispiel für dynamische Routing-Breadcrumbs für Elemente

Zu meistern: localStorage, Komponentenkapselung Ä...

Detaillierte Erläuterung der Nginx-Prozessverwaltungs- und Neuladeprinzipien

Prozessstrukturdiagramm Nginx ist eine Multiproze...

Beispielcode für Django+Vue-Registrierung und -Anmeldung

registrieren Das Front-End verwendet Axios in Vue...

JavaScript zum Erzielen eines Texterweiterungs- und -reduzierungseffekts

Die Implementierung des Erweiterns und Reduzieren...