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 プロジェクトがクッキーを保持できない問題を解決する

推薦する

SQL ストアド プロシージャの取得、データ取得、プロセス分析

この記事は主に、SQL のストアド プロシージャから返されたデータを取得するプロセスの分析を紹介しま...

PDO を使用して SQL インジェクションを防ぐ原理の分析

序文この記事では、SQL インジェクションを回避するために pdo の前処理メソッドを使用します。詳...

MySQL Index Pushdown (ICP) とは何かを理解するための記事

目次1. はじめに2. 原則III. 実践3.1 インデックスプッシュダウンを使用しない3.2 イン...

MySQL ユーザー権限管理の分析例

この記事では、MySQL ユーザー権限管理の例について説明します。ご参考までに、詳細は以下の通りです...

nginx+uwsgi で Django プロジェクトを開始するための詳細な手順

Django で Web プロジェクトを開発する場合、開発およびテストのプロセスでは Django ...

JavaScriptクロージャの原理と機能の詳細な説明

目次導入クロージャの使用カレー作りパブリック変数の実装キャッシュカプセル化(属性のプライベート化)閉...

HTML メタの説明

導入メタタグは、HTML言語のHEAD領域にある補助タグです。 meta は、ページの説明、キーワー...

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

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

Tencent インタビュー: SQL ステートメントの実行が非常に遅くなる理由は何ですか? ---後悔シリーズは見ないで(推奨)

正直に言うと、この質問には MySQL のコア知識がかなり必要で、コンピュータ ネットワークの知識を...

Linux の一般的なテキスト処理コマンドと vim テキストエディタ

今日は、いくつかの一般的なテキスト処理コマンドとvimテキストエディタを紹介します。 3日目 - 一...

HTML ページ適応幅テーブル

WEB アプリケーションのページでは、テーブルがよく使用されます。列の数が限られているため、各列のコ...

CentOSにDockerをインストールする方法

ここでは比較的簡単なインストール方法のみを紹介します。 1. yumを使用してインストールするyum...

CSS3 border-radius 丸角の実装方法と使い方の詳しい説明

以前は、角を丸くするのは非常に面倒でしたが、CSS3 では、角を丸くするのは非常に簡単になり、bor...

react-virtualized を使用して、動的な高さを持つ画像の長いリストを実装する

目次開発中に発生した問題解決具体的な実装実績まとめバーチャルリストは、スクロールコンテナ要素の表示領...

非表示のフォームテキストを表示するJavaScript

この記事では、フォームの隠しテキストを表示するためのJavaScriptの具体的なコードを参考までに...