遅い応答リクエストを記録して分析し、Web サイトの応答コンテンツを置き換えるように Nginx を構成する方法

王林
リリース: 2023-05-12 20:16:12
転載
2105 人が閲覧しました


1. モジュールのインストール
nginx サードパーティ モジュールのインストール方法はここでは省略します。
設定パラメータ

./configure --prefix=/usr/local/nginx-1.4.1 --with-http_stub_status_module \
 --add-module=../ngx_http_log_request_speed
ログイン後にコピー

2.命令log_request_speed
2.1 log_request_speed_filter
構文:

 log_request_speed_filter [on|off]
ログイン後にコピー

設定セクション:n/a
context:location 、server、http
モジュールを有効または無効にする
2.2 log_request_speed_filter_timeout
構文:

log_request_speed_filter_timeout [num sec]
ログイン後にコピー

デフォルト: 5 秒
構成セクション: location、server、http
これは実際のタイムアウトではありませんが、リクエストがここで指定された時間を超えると、nginx エラー ログに記録されることを意味します。リクエストが 5 未満の場合、デフォルト値は 5000 マイクロ秒 (5 秒) です。秒を超えると、このリクエストはログに記録されませんが、5 秒を超えると、リクエストは nginx エラー ログに記録されます
#3. 使用例3.1 nginx 設定

http{
   log_request_speed_filter on;
   log_request_speed_filter_timeout 3;
   ...
}
ログイン後にコピー

エラー ログに記録される遅いリクエストは次のとおりです


遅い応答リクエストを記録して分析し、Web サイトの応答コンテンツを置き換えるように Nginx を構成する方法

##3.2 ログ分析

cd /usr/local/nginx-1.4.1/logs
wget http://wiki.nginx.org/images/a/a8/log_analyzer.tar.gz
tar -xzvf log_analyzer.tar.gz
cd request_speed_log_analyzer
# cat ../error.log | grep 'process request'| ./analyzer.pl -r
ログイン後にコピー
post /wp-admin/admin-ajax.php http/1.1 --- avg ms: 1182, value count: 2
get /shmb/1145.html http/1.1 --- avg ms: 2976, value count: 1 <--- the winner
ログイン後にコピー
Fromログを見ると、ここには 2 つの遅いリクエストがあることがわかりました。最も遅いリクエストは /shmb/1145.html で、これも「勝者」とマークされています、作者、あなたの勝ちです。とてもユーモラスです。

3.3 スクリプト構文の分析

# ./analyzer.pl -h
ログイン後にコピー

    -h : このヘルプ メッセージ #ヘルプ メッセージの表示
  • -u : 上流でグループ化 # を押す上流のグループ化
  • -o : ホストごとにグループ化 #ホストごとにグループ化
  • #-r : リクエストごとにグループ化 #リクエストごとにグループ化、これをお勧めします
4. nginx テスト バージョン

現在、作成者は 0.6.35 と 0.7.64 でのみテストしており、それが可能であることは保証しません。他の環境でも使用されています。現在のテストバージョンは 1.4.1 で、現在は通常に使用しています。使用する前にテストしてください。

nginx は Web サイトの応答コンテンツ (ngx_http_sub_module) を置き換えます

ngx_http_sub_module モジュールは、Web サイトの応答コンテンツの文字列を変更するフィルターです。応答内容 'すべてを 'このサイト' に置き換えます。このモジュールは nginx に組み込まれていますが、デフォルトではインストールされません。インストールするには、構成パラメーターを追加する必要があります: --with-http_sub_module
1 . ディレクティブ
構文:

sub_filter string replacement;
ログイン後にコピー
デフォルト値: —

構成セクション: http, サーバー, location

設定では、説明文字列を使用して説明文字列を置き換える必要があります。置換される文字列。置換は新しい文字列であり、変数を含めることができます。
構文:

sub_filter_last_modified on | off;
ログイン後にコピー

デフォルト値: sub_filter_last_modified off;

設定セクション: http、server、location

このコマンドは nginx 1.5.1 で追加されました。このコマンドにはありません。 .
これにより、置換中に元の応答の「最終変更」ヘッダー フィールドを保存して、応答のキャッシュを容易にすることができます。
デフォルトでは、ヘッダー フィールドは応答の内容として削除されます。処理中に変更されました。
構文:

 sub_filter_once on | off;
ログイン後にコピー

デフォルト値: sub_filter_once on;

構成セクション: http、server、location

文字列を 1 回または複数回置換します。デフォルトは 1 回置換です。たとえば、応答コンテンツの jb51 を置き換えたい場合、このサイトでは、複数の jb51 が表示される場合、最初の jb51 のみが置き換えられます。オフの場合、すべての jb51 が置き換えられます。
Syntax:

 sub_filter_types mime-type ...;
ログイン後にコピー

デフォルト値: sub_filter_types text/html;

設定セクション: http、server、location

置換する必要がある MIME タイプを指定します。デフォルトは「text/html」です。* として指定した場合、次にすべて

2. nginx 置換文字列インスタンス
2.1 構成

server {
  listen    80;
  server_name www.jb51.net;
 
  root /data/site/www.jb51.net;  
 
  location / {
    sub_filter jb51 &#39;本站&#39;;
    sub_filter_types text/html;
    sub_filter_once on;
  }
}
ログイン後にコピー

2.2 テスト

内容は次のとおりです

# cat /data/site/www.jb51.net/2013/10/20131001_sub1.html
ログイン後にコピー
welcome to jb51!
jb51 team!
ログイン後にコピー
結果へのアクセス

# curl www.jb51.net/2013/10/20131001_sub1.html
ログイン後にコピー
ログイン後にコピー

welcome to 本站!
jb51 team!
ログイン後にコピー

置換では大文字と小文字が区別されず、jb51 は 1 回だけ置換されることがわかります。 sub_filter_once を on から off に変更してみました。

location / {
  sub_filter jb51 &#39;本站&#39;;
  sub_filter_once off;
}
ログイン後にコピー

その後、test

# curl www.jb51.net/2013/10/20131001_sub1.html
ログイン後にコピー
ログイン後にコピー
welcome to 本站!
本站 team!
ログイン後にコピー

jb51 が置き換えられたことがわかります。

たとえば、 の後に js を追加する場合、構成は次のようになります。次のように:

location / {
  sub_filter   </head> &#39;</head><script language="javascript" src="$script"></script>&#39;;
  sub_filter_once on;
}
ログイン後にコピー

以上が遅い応答リクエストを記録して分析し、Web サイトの応答コンテンツを置き換えるように Nginx を構成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!