Nginx ログ管理の概要

Nginx ログ管理の概要

Nginx ログの説明

アクセス ログを通じて、ユーザーの地理的起源、ジャンプ元、使用端末、特定の URL へのアクセス回数などの関連情報を取得できます。また、エラー ログを通じて、システム内の特定のサービスまたはサーバーのパフォーマンスのボトルネックなどを取得できます。そのため、ログをうまく活用すれば、貴重な情報を多く得ることができます。

パラメータリスト:

$リモートアドレスクライアント IP アドレス (プロキシ サーバー、プロキシ サービス IP を表示)
$リモートユーザーリモート クライアントのユーザー名を記録するために使用されます (通常は「-」)
$time_localアクセス時間とタイムゾーンを記録するために使用
$リクエストリクエストURLとリクエストメソッドを記録するために使用されます
$ステータス応答ステータス コード (例: 200 成功、404 ページが見つかりません、など)。
送信された本文バイト数クライアントに送信されたファイル本体のコンテンツのバイト数
$http_user_agentユーザーが使用するプロキシ(通常はブラウザ)
$http_x_forwarded_forクライアントのIPを記録し、プロキシサーバー経由でクライアントのIPアドレスを記録できます
$http_refererユーザーがどのリンクから来たのか記録できます

Nginx ログ分離

Nginx のログ ファイルにはローテーション機能がありません。毎日ログを生成するには、ログ ファイルを自動的にカットする nginx ログ カット スクリプトを作成します。

最初のステップは、ログ ファイルの名前を変更することです。名前を変更すると、nginx はログ ファイルを見つけられなくなるため、ログ ファイルが失われる心配はありません。元の名前でログ ファイルを再度開くまで、nginx は名前を変更したファイルにログを書き込みます。Linux はファイル名ではなくファイル記述子でファイルを検索します。

2 番目のステップは、USR1 シグナルを nginx メイン プロセスに送信することです。シグナルを受信すると、nginx メイン プロセスは設定ファイルからログ ファイル名を読み取り、ログ ファイル (設定ファイル内のログ ファイルにちなんで命名) を再度開き、作業プロセスのユーザーをログ ファイルの所有者として使用します。ログ ファイルを再度開いた後、nginx マスター プロセスは同じ名前のログ ファイルを閉じ、新しく開いたログ ファイルを使用するようにワーカー プロセスに通知します。ワーカー プロセスはすぐに新しいログ ファイルを開き、同じ名前のログ ファイルを閉じます。その後、古いログファイルを処理できます。 [または、nginx サービスを再起動します]。

Nginx ログ形式

nginx.conf 設定ファイルを開きます: vim /usr/local/nginx/conf/nginx.conf
Nginxのnginx.confファイルを確認すると、このメッセージが表示されます。

#access_log logs/access.log main;

つまり、サーバー アクセス ログ ファイルは logs/host.access.log であり、使用される形式は "main" です。
ログは、Nginx ルート ディレクトリの logs/access.log ファイルに生成されます。デフォルトでは「メイン」ログ形式が使用され、カスタム形式も使用できます。

メインフォーマット

#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#パラメータの説明 $remote_addr クライアントの IP アドレス;
$remote_user クライアントのユーザー名;
$time_local アクセスの時刻とタイムゾーン。
$request アクセス要求のタイプ(POST または GET)。
$status はリクエストステータス(404、304、200 など)を記録します。
$body_bytes_sent: クライアントからサーバーに送信されたファイル本体コンテンツのサイズ。
$http_referer アクセスソース - どのリンクからアクセスするか。
$http_user_agent ユーザーエージェント情報。通常はブラウザ タグですが、クローラー タグの場合もあります。
$http_x_forwarded_for サーバーのIPアドレスに直接アクセスします。これはクライアントIPまたはプロキシサーバーのIPである可能性があります。
#メイン形式のログインスタンス 47.97.66.214 を適用 - - [05/May/2018:02:18:26 +0800] "GET /solr/ HTTP/1.1" 404 571 "http://44.186.245.237/solr/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, li Gecko) Chrome/59.0.3071.115 Safari/537.36"
47.97.66.214 - - [05/May/2018:02:18:26 +0800] "GET /wcm/ HTTP/1.1" 404 571 "http://44.186.245.237/wcm/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, li Gecko) Chrome/59.0.3071.115 Safari/537.36"
80.82.78.50 - - [2018/05/03:53:56 +0800] "GET http://www.baidu.com/ HTTP/1.1" 404 169 "-" "Mozilla"
112.193.171.197 - - [2018/05/06:06:52:06 +0800] "GET http://www.rfa.org/ HTTP/1.1" 200 462 "-" "python-requests/2.6.0 CPython/2.7.5 Linux/3.10.0-693.11.1.el7.x86_64"

メインフォーマットに加えて、上記のパラメータを組み換えることで他のフォーマットをカスタマイズできます。

nginxのデフォルトのログはlogs/access.logに保存されますが、異なるサーバーごとに異なるログを作成することも可能です。対応するサーバーの下に次のステートメントを追加するだけです。

access_log ログ/access_8080.log mylog;
#ログを宣言する #ログの保存ディレクトリと名前 #ログの形式(カスタマイズ可能)

nginx.confを変更した後、設定を有効にするにはNginxを再起動する必要があります。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • nginxシグナルセットケースの詳細な説明
  • CentOS の Nginx 公式 Yum ソースの設定を詳しく解説
  • Linux 上の Nginx に複数のバージョンの PHP をインストールする
  • Centos7 に PHP と Nginx をインストールする詳細なチュートリアル
  • リバースプロキシ設定を実装するためのユニバーサルnginxインターフェース
  • Vue プロジェクト nginx を非ルート ディレクトリにデプロイするときに空白が更新される問題を解決する
  • Nginx をインストールして複数のドメイン名を設定する方法
  • Nginxがオンになっていると、ポートが占有され、「アドレスは既に使用されています」というメッセージが表示されます。
  • 実行後にdocker nginxにアクセスできない問題の解決策
  • nginx ロードバランシングを介して https にリダイレクトする方法
  • Nginx シグナル制御

<<:  MySQLデータベースのトランザクション分離レベルの詳細な説明

>>:  ローカルで起動したときに Vue プロジェクトがクッキーを保持できない問題を解決する

推薦する

WeChatアプレットトラック再生の実装と遭遇した落とし穴の詳細な説明

WeChat アプレットの軌跡再生では、主に線描画操作にポリラインを使用し、車の移動操作にマーカーを...

js配列のfind、some、filter、reduceの違いの詳細な説明

Array の filter、find、some、reduce メソッドの違いを区別し、使用シナリオ...

CentOS 6.4 で rpm を使用して MySQL をオフラインでインストールする

rpmインストールパッケージを使用してmysqlをオフラインでインストールします。参考までに準備:公...

HTML ではスペースはどのように表現されますか (どのような意味ですか)?

Web 開発では、次のような文字によく遭遇します: &nbsp;これは実際には HTML が...

Vueベースのビデオプレーヤーの実装例

既存のビデオ プレーヤーがニーズを満たせない場合は、ビデオを自分でカプセル化する必要があります。ビデ...

uni-appのスタイルの詳細な説明

目次uni-app のスタイル要約するuni-app のスタイルsassプラグインは公式ウェブサイト...

js のプロトタイプ、プロトタイプ オブジェクト、プロトタイプ チェーンの包括的な分析

目次プロトタイプを理解するプロトタイプオブジェクトを理解するインスタンスプロパティとプロトタイププロ...

Nginx 最適化サービスで Web ページ圧縮を実装する方法

リソースを節約するためにWebページの圧縮を設定する1.まず、設定を変更しましょう vim /usr...

JavaScript タイマー原理の詳細な説明

目次1. setTimeout() タイマー2. setTimeout() タイマーを停止する3. ...

最高の無料英語フォント33選を紹介

チャンクファイブフリータイプファミリーCuprum JAH I フリーフォントイェセヴァブークレフィ...

Dockerにlogstashをインストールする詳細な手順

docker-compose.yml を編集し、次のコンテンツを追加します。 バージョン: '...

VMware Workstation のダウンロードとインストールの詳細なチュートリアル

仮想マシンは非常に便利なテストソフトウェアです。ハードウェアに損傷を与えることなく、さまざまなテスト...

HTML の基礎: HTML コンテンツの詳細

まずは本体から始めましょう:ウェブページを閲覧するとき、最初に目に留まるのは通常、ページの背景です。...

MySQL ログの設定と表示方法

MySQL には次のログがあります。エラーログ: -log-errクエリログ: -logスロークエリ...

Vueはシンプルなショッピングカートの例を実装します

この記事では、参考までに、Vue の具体的なコードを共有して、簡単なショッピングカートを実装します。...