静的リソースファイルのアクセスログをフィルタリングする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コマンドを使用してデータベース内のすべてのテーブルを素早くクリアします

推薦する

Vueはカウンターのシンプルな生成を実装します

この記事では、Vueカウンターの簡単な実装コードを例として紹介します。具体的な内容は以下のとおりです...

MySQLのダウンロードとインストールのプロセスの詳細な説明

1: MySqlをダウンロードする公式サイトのダウンロードアドレス: https://dev.mys...

formData 形式タイプを使用してファイルをアップロードする Vue の例

Vue では、一般的にフロントエンドとバックエンドを分離したプロジェクトがあり、データ操作を実装する...

CSS でフロートとマージンを混合するサンプルコード

最近の勉強で、GitHub でレイアウトの練習をいくつか見つけたのですが、レイアウトにまったく慣れて...

Linuxのlocateコマンドの使い方

01. コマンドの概要実際には、locate コマンドは find -name の別の書き方ですが、...

Vueの監視プロパティの詳細な説明

目次Vue モニターのプロパティリスナープロパティとは何ですか?リスニングプロパティと計算プロパティ...

Vue の DOM の非同期更新の簡単な分析

目次Vue が DOM を非同期更新する原理1 実際の DOM 要素を取得できるのはいつですか? 2...

Vant+postcss-pxtoremはブラウザ適応機能を実装します

Remレイアウトの適応Vant のスタイルでは、デフォルトで px を単位として使用します。rem ...

jQuery における Ajax の関連知識ポイントのまとめ

序文JavaScriptを学ぶ学生は、 AJAX (非同期JavaScriptとxml) 変換は非同...

CentOS ベースの OpenStack 環境の展開に関する詳細なチュートリアル (OpenStack のインストール)

エフェクト表示: 環境準備コントローラーノード: 6GB 4時間60GB/30GB/30GB計算ノー...

docker runとstartの違い

docker における実行と開始の違いDocker run はミラーイメージを指定します。そしてdo...

Vueリストデータを削除した後、ページを自動的に更新する方法と更新方法の詳細な説明

問題の説明:フロントエンドがデータの一部を削除したり、新しいデータを追加したりすると、バックエンドの...

Reactの新バージョンのライフサイクルフック機能と使用方法の詳細な説明

旧ライフサイクルと比較して 3つのフックが廃止され、2つの新しいフックが追加されましたReact16...

VUEのデータプロキシとイベントの詳細な説明

目次Object.defineProperty メソッドのレビューデータブローカーとは何ですか? V...

シンプルな虫眼鏡効果を実現するJavaScript

大きな箱の中に写真があります。マウスをその上に置くと、半透明のマスク レイヤーが表示されます。マウス...