Nginx が各ユーザーリクエストを処理するとき、設定ファイル内の順序ではなく、いくつかの異なるフェーズに従って順番に処理します。
Nginxリクエスト処理のプロセスは、
post-read、server-rewrite、find-config、rewrite、post-rewrite、preaccess、access、post-access、try-filesの11段階に分かれています。 、コンテンツ、ログ。
- 読後:
リクエストコンテンツの読み取りフェーズ
Nginx はリクエストヘッダーを読み取って解析した後、すぐに実行を開始します
たとえば、ngx_realip モジュールは読み取り後の段階でハンドラーを登録します。その機能は、Nginx に現在のリクエストのソース アドレスが指定されたリクエスト ヘッダーの値であると認識させることです。
- サーバー書き換え
サーバーリクエストアドレス書き換えフェーズ
ngx_rewrite モジュールの set 構成命令がサーバー構成ブロックに直接書かれている場合、それらは基本的にサーバー書き換えステージで実行されます
- find-config
構成検索フェーズ
この段階では、Nginx モジュール登録ハンドラーはサポートされていません。代わりに、Nginx コアが現在のリクエストとロケーション構成ブロックの間の照合を完了します。
- 書き直す
位置情報リクエストアドレス書き換えフェーズ
ngx_rewrite モジュールのディレクティブが location ブロックで使用される場合、それらはこの書き換えフェーズで実行されます。
さらに、ngx_set_misc (set md5、encode_base64 など) モジュールの命令、ngx_lua モジュールの set_by_lua 命令および rewrite_by_lua 命令もこの段階にあります。
- リライト後
アドレス書き換えリクエストの送信フェーズ
書き換えフェーズでそのような要件がある場合、Nginx コアは書き換えフェーズで必要な「内部ジャンプ」操作を完了します。
- プリアクセス
アクセス許可チェック準備フェーズ
標準モジュール ngx_limit_req と ngx_limit_zone はこの段階で実行され、前者はリクエストのアクセス頻度を制御でき、後者はアクセスの同時実行を制限できます。
- アクセス
アクセス許可チェックフェーズ
標準モジュール ngx_access、サードパーティ モジュール ngx_auth_request、およびサードパーティ モジュール ngx_lua の access_by_lua ディレクティブがこの段階で実行されます。
構成命令は主に、ユーザーのアクセス権の確認やユーザーの送信元 IP アドレスが正当であるかどうかの確認などのアクセス制御タスクを実行するために使用されます
- アクセス後
アクセス許可チェックの提出フェーズ
これは主に、アクセス ステージと連携して、標準の ngx_http_core モジュールによって提供される構成命令の満足機能を実装するために使用されます。
すべて(関係)を満たす
何か(または関係)を満たす
- ファイルを試す
構成アイテム try_files 処理ステージ
特に標準設定ディレクティブ try_files の機能を実装するために使用されます
最初の N-1 個のパラメーターに対応するファイル システム オブジェクトが存在しない場合、ファイルの試行フェーズでは、最後のパラメーター (つまり、N 番目のパラメーター) で指定された URI への「内部ジャンプ」が直ちに開始されます。
コンテンツ生成段階
Nginx のコンテンツ フェーズは、すべてのリクエスト処理フェーズの中で最も重要です。これは、このフェーズで実行される構成命令が一般に「コンテンツ」の生成を担当するためです -
そしてHTTPレスポンスミッションを出力します。
ログ
ログモジュールの処理段階
レコードログ-
').addClass('事前番号付け').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i ').text(i));
};
$numbering.fadeIn(1700);
});
});
上記では、Nginx と Lua の実行シーケンスを、関連する内容も含めて紹介しています。PHP チュートリアルに興味のある友人の参考になれば幸いです。