静的リソースファイルのアクセスログをフィルタリングするNginxの実装

静的リソースファイルのアクセスログをフィルタリングするNginxの実装

乱雑なログ

日常的に使用される Nginx は、静的リソース サーバーとリバース プロキシ サーバーの両方として使用されることが多いです。特に、クロスドメインの問題を考慮すると、静的リソースとバックエンド インターフェイスに同じリスニング ポートが使用されます。フィルタリングが実行されない場合、js、css、jpg などの静的リソースに対する大量のリクエストが access_log に表示され、バックエンド インターフェイスの呼び出しログの表示に影響します。

最初はあまり気にしていなかったのですが、Nginx の最適化に関する記事を閲覧していたときに、map を使用してログを書き込むかどうかのパラメーターを定義する方法を見つけました。最近の動的クロスドメイン構成での map の使用と組み合わせることで、map の別の使用シナリオを簡単に学習して記録しました。

マップを使用して静的リソースファイルへのアクセスのログをフィルタリングする

http {
  log_format main '$remote_addr [$time_local] $request $status '
           'uct="$upstream_connect_time" rt="$request_time"';

  マップ $uri $not_static {
    デフォルト 1;
    ~^(.*\.(gif|jpg|jpeg|png|bmp|swf|js|css|woff|ttf)$) 0;
  }

  サーバー{
    聞く 23456;
    server_name ローカルホスト;
    access_log ログ/test.log メイン if=$not_static;
  }
}

説明:

  • メインとしてマークされたlog_formatをカスタマイズする
  • リクエスト内のURIと一致します。リソースがgif、jpg、css、jsなどで終わる場合、$not_staticは0、それ以外の場合は1になります。
  • ポート 23456 へのアクセス要求の場合、access_log は main として識別されるカスタム ログ形式の使用を指定し、$not_static が 1 の場合にのみログが記録されます。if パラメータの詳細については、公式ドキュメントを参照してください。
  • 注意すべき点は、access_log で if パラメータを使用する場合は、log_format を明示的に指定する必要があることです。そうしないと、エラーが報告されます: nginx: [emerg] unknown log format "if=$not_static"

動的ログと静的ログを分離して書き込む別の方法

場所 ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css|woff|ttf)$ {
  #access_log off; #静的リソースへのアクセスのログを出力しない access_log logs/static_resources.log;
}

静的リソース ファイルの Nginx アクセス ログ フィルタリングの実装に関するこの記事はこれで終わりです。より関連性の高い Nginx アクセス ログ コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • nginx-http-concat モジュールを使用して、nginx で静的リソース ファイルをマージします。
  • Dockerでnginxをデプロイし、設定ファイルを変更する方法
  • nginx設定ファイルの場所を見つける方法の詳細な説明
  • Nginx 設定ファイルの問題により開けない不明なディレクティブの解決方法
  • nginx 設定ファイルパスとリソースファイルパスを表示する方法

<<:  Vueはビデオ再生を実装するためにビデオタグを使用します

>>:  MySQLはtruncateコマンドを使用してデータベース内のすべてのテーブルを素早くクリアします

推薦する

JavaScript 非同期プログラミングにおける Promise の初期の使用法の詳細な説明

1. 概要Promise オブジェクトは、ES6 で提案された非同期プログラミングの仕様です。非同期...

JavaScript を使用してページに動的な検証コードを実装する例

導入:現在、プログラム攻撃を防ぐために、ユーザーがログインまたは登録するときに多くの動的検証テクノロ...

Linuxのseqコマンドを使用して数字のシーケンスを生成します(推奨)

Linux の seq コマンドは、数字のリストを非常に高速に生成でき、使いやすく柔軟性に優れてい...

JavaScript Reduceの詳しい説明

目次地図フィルターいくつかの毎インデックスを検索パイプ参考回答1. パラメータを受け入れる関数を返す...

Linux コマンドラインのワイルドカードとエスケープ文字の実装

ハードディスクのファイル属性のバッチ表示など、特定の種類のファイルに対してバッチ操作を実行する場合、...

CSS3 を使用した背景ぼかし効果の 3 つの例

導入から始めず、いきなり本題に入りましょう。通常の背景ぼかし効果は次のとおりです。 プロパティを使用...

CSS コンテンツ属性を使用して、マウスホバープロンプト (ツールチップ) 効果を実現します。

なぜこのような効果を実現するのでしょうか。実は、この効果もタイトルプロンプトから派生したものですが、...

MySQLトリガーについて深く理解するための記事

目次1. SC テーブルを挿入または変更するときに、テスト スコアが 0 ~ 100 の範囲外の場合...

Linux システムにおける時間設定の概要

1. 時間の種類は次のように分けられます。 1. ネットワーク時間(タイムゾーンの設定、ntpサーバ...

遭遇したいくつかのブラウザ互換性の問題について簡単に説明します

背景ブラウザの互換性の問題を解決するのは非常に面倒なことです。高度な技術はそれほど必要ありませんが、...

Angularが予期しない例外エラーを処理する方法の詳細な説明

前面に書かれたコードがどれだけ適切に記述されていても、すべての可能性のある例外を完全に処理することは...

JS 手ぶれ補正機能の実装と使用シナリオ

目次1. 手ぶれ補正機能とは何ですか? 1. なぜ手ぶれ補正機能が必要なのでしょうか? 2. 手ぶれ...

CSS3 カウントダウン効果

成果を達成する実装コードhtml <div クラス = 'ラッパー'> ...

HTTP サーバーとクライアントのやり取りをシミュレートする Node.js+postman

目次1. NodeがHTTPサーバーを構築する2. HTTPサーバーがリクエストを取得する1. Po...

VMware 仮想マシンのインストール Linux システムのグラフィック チュートリアル

この記事では、LinuxシステムのVMwareインストールの具体的な手順を参考までに紹介します。具体...