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

推薦する

HTMLを圧縮しない理由はいくつかある

理由は簡単です。 HTML ドキュメントでは、複数の空白文字は 1 つの空白文字と同等です。つまり、...

MacでNodeとnpmを完全にアンインストールする方法

npmアンインストール sudo npm アンインストール npm -g この文に遭遇して npm ...

Vue はデータの変更をどのように追跡しますか?

目次背景例誤解 - コールスタックを表示するためにウォッチでブレークポイントを設定する正しいアプロー...

FileZilla_Server:425 データ接続を開けない問題を解決する方法

FileZilla Serverをサーバーにインストールすると、425データ接続を開けない問題が発生...

テーブルの動的な色の変更を実現するJavaScript

この記事では、テーブルの動的な色の変更を実現するためのJavaScriptの具体的なコードを参考まで...

HTML+CSSを使用してTG-visionホームページを作成する方法

今回はHTML+CSSレイアウトを使用して、TG-vision Shuanghui Mediaのホー...

ジョセフリング問題を解決する 3 つの JavaScript メソッド

目次概要問題の説明循環リンクリスト順序付き配列数学的再帰要約する概要ジョセフ・リング問題は、ジョセフ...

Vite+ElectronでVUE3デスクトップアプリケーションを素早く構築

目次1. はじめに2. Viteプロジェクトを作成する1. viteをインストールする2. プロジェ...

vue-seamless-scrollがスクロールしていいねをするときのデータ同期の問題を解決する

VUE は vue-seamless-scroll を使用して、自動的にスクロールしていいねします。...

CentOS7環境でDockerを使ってPHP動作環境を構築する手順を詳しく解説

関連記事: CentOS7でyumを使用してDockerをインストールするDockerを使ってWin...

ウェブページのアクセス速度に関する主な問題と解決策

<br />ウェブサイトのアクセス速度はウェブサイトのトラフィックに直接影響を及ぼし、ウ...

MYSQLのバックアップデータのスケジュールクリアの特定の操作

1|0 背景プロジェクトの要件により、各月の履歴在庫データをアーカイブしてバックアップする必要があり...

HTML に埋め込まれた Flash HTML ウェブページ コードに Flash ファイルを埋め込むソリューション (パート 1)

中国の習慣では、旧暦の1月15日より前に新年を祝います。ここで、庭にいる友人たちに新年の幸せを祈りた...

Tomcat の一般的な例外と解決コードの例

弊社のプロジェクトは Java で開発され、ミドルウェアは Tomcat でした。運用中に、Tomc...

MySQL マルチインスタンス構成ソリューション

1.1 MySQL マルチインスタンスとは何ですか?簡単に言うと、MySQL マルチインスタンスとは...