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

推薦する

HTML は CSS スタイルと JS スクリプトを動的に読み込みます。例

1. スクリプトを動的に読み込むウェブサイトの需要が高まるにつれて、スクリプトの需要も徐々に増加しま...

LinuxでJenkinsのパスワードを忘れる方法

1.Jenkinsのインストール手順: https://www.jb51.net/article/1...

MySQL 8.0.13 のインストールと設定のグラフィックチュートリアル

Msyqlデータベースのインストール、参考までに具体的な内容は次のとおりです。 ①ブラウザでhttp...

テーブルの4辺を上下左右にスクロールするように固定する方法

質問:最近、プロジェクトの統計を行っていたときに、テーブルを上下にスクロールしたときにテーブルの先頭...

Linux の sudo 脆弱性により不正な特権アクセスが発生する可能性がある

Linux で新たに発見された sudo の脆弱性を悪用すると、特定のユーザーが root としてコ...

表 td 画像水平および垂直中央揃えコード

HTMLコード:コードをコピーコードは次のとおりです。 <td align="cen...

JavaScript進捗管理の詳しい説明

目次序文質問原理テスト序文プログラムを作成するときに、読み込みの進行状況やアップロードの進行状況など...

JS でシンプルなデータ監視を実装する方法

目次概要最初のステップステップ2なぜ別の _data が必要なのでしょうか?データにもう少しデータを...

SQLインジェクションの詳しい解説 - セキュリティ編(第2部)

この記事に誤りがあったり、ご提案がありましたら、お気軽にご連絡ください。よろしくお願いいたします。は...

vue+springbootでログイン認証コードを実現

この記事では、ログイン認証コードを実装するためのvue+springbootの具体的なコードを例とし...

JavaScript における継承の 3 つの方法

継承する1. 継承とは何か継承: まず、継承とは関係、つまりクラス間の関係です。JS にはクラスはあ...

24 の実用的な JavaScript 開発のヒント

目次1.配列を初期化する2. 配列の合計、最大値、最小値3. エラー値をフィルタリングする4. 論理...

使用状況分析を備えたMySQL

持つことの使用法having 句を使用すると、グループ化後にさまざまなデータをフィルター処理できます...

ウェブテーブルフレームを作成するためのヒント

<br />Web テーブル フレームを作成するためのヒント。 ------------...

トランジションコンポーネントのアニメーション効果を使用した Vue サンプルコード

トランジションドキュメントアドレスは、フェードインとフェードアウト効果を実現するための背景ポップアッ...