NGINXがウェブサイトのPV、UV、独立IPをカウントする方法の詳細な説明

NGINXがウェブサイトのPV、UV、独立IPをカウントする方法の詳細な説明

Nginx: PV、UV、独立IP

ウェブサイトを作成する人なら誰でも、ウェブサイトのPV、UV、その他のウェブサイトのアクセスデータを頻繁に確認する必要があることを知っています。もちろん、ウェブサイトにCDNがある場合、nginxのローカルログは意味がありません。以下は、nginxウェブサイトのログアクセスデータの統計分析です。

コンセプト:

  • UV (ユニーク ビジター): 独立した訪問者、各独立したインターネット アクセス コンピューター (Cookie に基づく) が訪問者とみなされ、1 日 (00:00-24:00) 内に Web サイトを訪問した訪問者の数です。同じ Cookie は 1 日に 1 回のみカウントされます。
  • PV (ページ ビュー): 訪問、つまりページ ビューまたはクリック。ユーザーの Web サイトへの訪問は 1 回記録されます。ユーザーは同じページを複数回訪問し、訪問価値が蓄積される
  • 独立した IP のカウント: 同じ IP アドレスは、00:00 から 24:00 までの間、1 回だけカウントされます。Web サイトの最適化を行う友人は、この点を最も懸念しています。

まずは環境を記載します。今回はnginxバージョン1.7を実行しており、バックエンドのTomcatは動的インタラクティブプログラムを実行しています(ユーザー認証が必要。静的ページの場合はキャッシュ値が取得できず、$http_cookieは空)。以上です。

nginx ログファイルの設定

http {
  mime.types を含めます。
  デフォルトタイプ アプリケーション/オクテットストリーム;
  log_format main '$remote_addr - [$time_local] "$request" '
            ' - $status "User_Cookie:$guid" ';
 #User_Cookie はログ表示文字、$guid は変数、具体的な内容は以下に定義されています。また、ログ形式で $http_cookie と記述して、完全な Cookie 内容を表示することもできます。<br>
  ファイル送信オン;
  キープアライブタイムアウト65;
    アップストリームバックサーバー{
    ip_ハッシュ;
    サーバー 1.1.2.2:8080;
    サーバー 1.1.2.3:8080;
}
サーバー{
    聞く 80;
    server_name ローカルホスト;
    #if ( $http_cookie ~* "(.*)$") はすべてのコンテンツに一致しますif ( $http_cookie ~* "CSID=([A-Z0-9]*)"){
        $guid を $1 に設定します。
    } #CSID 文字情報のみに一致します。ここでは正規表現を使用します<br>
    access_log ログ/host.access.log メイン;
     場所 ~* ^(.*)$ {
       #limit_req ゾーン=allips バースト=1 ノードレイ;
 
       proxy_pass http://backserver;
       proxy_set_header ホスト $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header リモートホスト $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       クライアントの最大ボディサイズは8mです。
       }
    エラーページ 500 502 503 504 /50x.html;
    場所 = /50x.html {
      ルート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 ログ]# grep index.shtml host.access.log | wc -l

総PV:

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

専用IP

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

UV統計

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

クッキーテストページ

クッキーの種類に関しては、次の 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">
<ヘッド>
<meta http-equiv="コンテンツタイプ" content="text/html; charset=gbk">
<meta http-equiv="Refresh" content="10"> //テストのため、10秒ごとにページを更新します</head>
<本文>
<h1>test.test.com ドメイン テスト</h1>
このドメインの Cookie は以下にリストされています<br>
<p>
<スクリプト>
document.cookie="guid=A1UD8E5512451111111111"; // クッキーの種類、appenddocument.cookie="city=beijing"; // クッキーの種類、appenddocument.write(document.cookie); // 既存のリスト</script>
</p>
</本文>
</html> 

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • シェル統計pvとuv、独立したipメソッド

<<:  MySQL の分離レベル、ロック、MVCC の紹介

>>:  知っておくべき 7 つのネイティブ JS エラーの種類

推薦する

ubuntu20.04 LTSにdockerをインストールする方法

ゼロ: 古いバージョンをアンインストールするDocker の古いバージョンは、docker、dock...

MySQLデータベースを操作するためのコマンドラインツールmycliの簡単な紹介

GitHub にはあらゆる種類の魔法のツールがあります。今日、私はデータベースを操作するためのコマン...

JS正規RegExpオブジェクトについての簡単な説明

目次1. RegExpオブジェクト2. 文法2.1 定義2.2 修飾子2.3 角括弧2.4 メタ文字...

JavaScriptの知識ポイントの詳しい説明

目次1. JavaScriptの基礎2. 基本的なJavaScript構文3. JavaScript...

この記事ではJavaScriptの基本であるディープコピーとシャローコピーについて説明します。

目次浅いコピーディープコピー補充する要約するコピー(クローン、複製などとも呼ばれる)ですが、ディープ...

Linuxでディスク使用量を確認する方法

1. dfコマンドを使用してディスク全体の使用量を表示します。 df コマンドは、ハードディスクのマ...

MySQL の時間保持問題に関する簡単な分析

MySQL のデフォルトの時間タイプ (datetime と timestamp) の精度は秒です。...

タイムスタンプの差を計算するSQLメソッド

タイムスタンプの差を計算するSQLメソッド概要場合によっては、特定のレコードを時間で検索する必要があ...

vue_drf は SMS 認証コードを実装します

目次1. 需要1. 需要2. SDKパラメータ設定1. ディレクトリ構造3. コードの実装1. バッ...

JavaScript スコープチェーンの基本原理のグラフィカルな説明

目次序文範囲1. スコープとは何ですか? 2. [[スコープ]] プロパティ3. スコープチェーン4...

Vue.jsはElement-uiを使用してナビゲーションメニューを実装します

この記事では、Element-uiを使用してvue.jsでナビゲーションメニューを実装するための具体...

CSS中級者向けアダプティブレイアウトの5つのソリューションの詳細な説明

序文ページを作っていく上で、ページレイアウトに関する内容に遭遇することが多く、面接でも聞かれることも...

CSS変換ページめくりアニメーションレコードの実装

ページめくりの問題のシナリオBとCは同じページ(表と裏)にありますページをめくって A をカバーした...