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

推薦する

AngularパイプラインPIPEの紹介と使い方

序文PIPE、パイプラインと翻訳されます。 Angular パイプは、HTML コンポーネントで宣言...

grep を使用して MySQL エラー ログ情報を取得する方法の詳細な説明

MySQL のメンテナンスを容易にするために、エラー情報を収集するためのインターフェースを提供するス...

elasticsearchを使用してインデックスデータを定期的に削除する

1. ESを使うこともあるリソースが限られている、またはビジネス上のニーズにより、最新の期間のデータ...

マークアップ言語 - リスト

標準化されたデザインソリューション - マークアップ言語とスタイルマニュアルWeb 標準ソリューショ...

LINUX ポートが占有されているかどうかを確認します

ポートが占有されているかどうかは、これまで一度もわかりませんでした。多くの人に尋ねて、ようやくわかり...

HTML の rel 属性の分析

.y { background: url(//img.jbzj.com/images/o_y.pn...

Ubuntu ベースのディストリビューションに Microsoft TrueType フォントをインストールするチュートリアル

Linux 上の LibreOffice で Microsoft ドキュメントを開くと、フォントが少...

JSはカード配布アニメーションを実現します

この記事の例では、カード配布アニメーションを実装するためのJSの具体的なコードを参考までに共有してい...

vue3 のさまざまなファイルタイプのプレビュー機能の例

目次序文1. オフィス文書の種類のプレビュー2. PDF形式のプレビュー3. 画像の種類4. ビデオ...

Nginx+Keepalived でデュアルマシン マスターとバックアップを実装する方法

序文まず、高性能サーバーの高可用性またはホットスタンバイソリューションである Keepalived ...

docker によってプルされたイメージがどこに保存されるかの詳細な説明

docker によってプルされたコマンドは、デフォルトでは /var/lib/docker/ フォル...

SQL Server での exists と except の使用法の概要

目次1. 存在する1.1 説明1.2 例1.3 交差/2017-07-21 2. 除く2.1 説明2...

HTML でスタイルを使用して属性を追加する例

必要なリンクにインライン スタイルを追加します。コードをコピーコードは次のとおりです。 <a ...

丸い角や鋭い角を表現するために、絵の代わりに文字を使用する研究

Google Gmail ページから撮った次のスクリーンショットをご覧ください (同じ場所からスクリ...