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

推薦する

Vueプロジェクトウォッチで関数が繰り返しトリガーされる問題の解決

目次問題の説明:解決策1解決策2問題の説明:ページ A と B の 2 つがあり、各ページにはget...

vue+element を使用した Google プラグインの開発プロセス全体

シンプルな機能: ブラウザの右上隅にあるプラグイン アイコンをクリックすると小さなポップアップ ウィ...

MySQL無料インストール版のパスワードの設定と変更に関するチュートリアル

ステップ 1: 環境変数を構成する (解凍パス: G:\mysql\mysql-5.7.21-win...

JSベースの手持ち連射機能+テキスト揺れ特殊効果コードの簡単実装

少し前にTikTokで揺れる連打が流行っていたので真似してみることにしました。さっそく効果をみてみま...

面接官がmysqlのcharとvarcharの違いを尋ねたとき

目次charとvarcharの違いcharとvarcharの違い上記は、MySQL における cha...

Ubuntu 16.4 で完全に分散された Hadoop 環境を構築するための実践的なチュートリアル

序文この記事は主にubantu 16.4 Hadoop完全分散構築に関する関連コンテンツを紹介し、皆...

js 正確な計算

var numA = 0.1; var numB = 0.2; アラート(numA + numB)...

DockerにJava環境をインストールするための実装手順

この記事は Linux centos8 をベースにして、docker をインストールし、イメージをプ...

Hadoop 2.Xの新機能、ごみ箱機能の説明

ごみ箱機能をオンにすると、削除されたファイルの元のデータをタイムアウトなしで復元できるため、誤って削...

よく理解しましたかタグ 定義方法 使用方法

序文:今日、「<!DOCTYPE> タグを注意深く理解しましたか?」と尋ねられました。私...

Vueのコンポーネントのprops属性について詳しく説明します

目次質問1: 小道具は具体的にどのように使用されますか?原理は何ですか?下を見る質問 2: 年齢に ...

デザインのヒント: きっと気に入っていただけると思います

<br />このタイトルを見ると、見覚えがあるかもしれません。多くのウェブサイトが同様の...

MySql 自動切り捨て例の詳細な説明

MySql 自動切り捨て例の詳細な説明友人が質問しました。プロジェクト内で挿入または更新ステートメン...

HTMLからPDFへの変換のための純粋なクライアント側と純粋なサーバー側の実装ソリューション

必要ユーザーがフォームに入力して「保存」をクリックすると、PDF ドキュメントを直接ダウンロードでき...

Linuxオンラインソフトウェアgccをオンラインでインストールする方法

Linux オンラインインストール関連コマンド: yum install: すべてインストールyum...