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 エラーの種類

推薦する

Ubuntu でホームディレクトリを新しいパーティションに移行する詳細なチュートリアル

ユーザーのホーム ディレクトリがどんどん大きくなってきたら、ホーム ディレクトリを新しいパーティショ...

Nginxポーリングアルゴリズムの基本的な実装方法の詳細な説明

ポーリングアルゴリズムの紹介多くの人が職場で nginx を使用しており、その設定に精通しています。...

docker-compose で Jenkins をインストールする際の実践的なメモ

ディレクトリを作成する cd /usr/local/docker/ jenkins-docker を...

MySQL 8の新機能ウィンドウ関数の役割

MySQL 8.0 の新機能は次のとおりです。 Unicode 9.0 をすぐに完全にサポートウィン...

Linux ハードウェア構成コマンドの例

ハードウェア ビュー コマンドシステム # uname -a # カーネル/オペレーティング システ...

Alipay の Java 決済インターフェースを開発するための詳細な手順

目次最初のステップステップ2ステップ3ステップ4 Alipay 決済インターフェースへの接続に関する...

VUEは登録とログインの効果を実現します

この記事の例では、登録とログインの効果を実現するためのVUEの具体的なコードを紹介します。具体的な内...

MySQLにおけるMTRの概念

MTR は Mini-Transaction の略です。名前が示すように、これは「最小のトランザクシ...

js と jQuery での Ajax の使用例の詳細

目次ネイティブJS GETリクエストの送信方法投稿リクエストの送信方法パラメータ付きのGETリクエス...

さまざまな解像度やブラウザでウェブページを適切に表示する方法

キーコードは次のとおりです。コードをコピーコードは次のとおりです。 html{高さ:100%; }コ...

IE6 で PNG-24 形式の画像を正常に表示させる 2 つの方法

方法1: </html>の後に次のコードを追加してください。コードをコピーコードは次のと...

Linux で rc.local ファイルがない場合の完璧なソリューション

新しい Linux ディストリビューションには rc.local ファイルがなくなりました。サービス...

Linux システム構成 (サービス制御) の詳細な紹介

目次序文1. システムサービス制御1. システムctl 2. ターゲット3. 共通システムサービス4...

Linux の vsftpd サービス構成の簡単な分析 (匿名、ユーザー、仮想ユーザー)

vsftpd の概要vsftpd は「very secure FTP daemon」の略称で、セキ...

一般的な Nginx のテクニックと例の概要

1. 複数サーバーの優先順位たとえば、各サーバー ブロックがポート 80 をリッスンする場合、www...