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

推薦する

Next.js 入門チュートリアル

目次導入Next.jsプロジェクトを作成するNext.js プロジェクトを手動で作成するcreact...

ffmpeg 中国語パラメータの詳細な説明

FFMPEG 3.4.1 バージョンパラメータの詳細使用方法: ffmpeg [オプション] [[入...

Linux で ss コマンドと zabbix を組み合わせてソケットを監視する方法の詳細な説明

目次序文1. ssコマンド2. Zabbix監視マシンの全体的なソケットステータス2.1. スクリプ...

プロジェクトにaxiosをカプセル化する実際のプロセス

目次序文axiosカプセル化の利点パッケージのアイデア設定の優先順位axiosインスタンス構成1. ...

デザイン理論:人間中心のグリーンデザイン

「人間中心」と「グリーンデザイン」という2つの視点から考える——デザイン業界の同僚とも議論する2つの...

MySQL マルチテーブルクエリの具体例

1. SELECT句を使用して複数のテーブルをクエリするSELECT フィールド名 FROM tab...

MySQL 5.7 解凍版のインストール、アンインストール、および文字化けしたコードの問題のグラフィック解決

1. 解凍版のインストール(1)圧縮パッケージをダウンロードし、ディスクの場所に解凍します。圧縮パッ...

CSS3 のフィルタプロパティの使用に関する詳細な説明

最近、イントラネットポータルを修正していたときに、フィルターを使用する必要がある箇所に遭遇しました。...

ウェブデザイナーのための超便利なツール 50 選

ウェブデザイナーになるのは簡単ではありません。デザインやアーキテクチャを考慮するだけでなく、さまざま...

Red Hat Enterprise Linux 8 をベースにした CentOS 8 が正式にリリースされました

CentOS プロジェクトは、Red Hat の再配布要件に完全に準拠した、Red Hat Ente...

Vue+tsx のスロット使用の問題が置き換えられない

目次序文問題を見つける解決する追記序文最近、 UIコンポーネントを作成する予定で、 vue 2.xと...

nginxフォワードプロキシとリバースプロキシの詳細な説明

目次フォワードプロキシnginx リバースプロキシnginx リバースプロキシ 02リバースプロキシ...

Echarts バー水平棒グラフのサンプルコード

目次横棒グラフデータとスタイルを動的に更新するeChartsの幅と高さの適応の問題を解決する縦棒グラ...

JavaScript ES6 モジュールの詳細な説明

目次0. モジュールとは何か1.モジュールの読み込み1.1 方法1 1.2 方法2 2. 輸出と輸入...

docker ログが取得できない問題の解決方法

毎日サービスをチェックしているときに、portainer からコンテナ ログを確認しようとしたところ...