したがって、私が書いているアプリでAjaxなどをローカルでテストしているとき、sleep
ステートメントを使用してサーバー側スクリプトに遅延を追加することがよくあります。遅い接続などをシミュレートするのに役立ちます。
Nginx configで同様の遅延動作を直接指定する方法はありますか?それは提供しているフラットなHTMLファイルで動作しますか?
ネットワークレベルで同様の遅延シミュレーションを実行できることは承知しています(こちらを参照)
したがって、私が書いているアプリでAjaxなどをローカルでテストしているとき、sleep
ステートメントを使用してサーバー側スクリプトに遅延を追加することがよくあります。遅い接続などをシミュレートするのに役立ちます。
Nginx configで同様の遅延動作を直接指定する方法はありますか?それは提供しているフラットなHTMLファイルで動作しますか?
ネットワークレベルで同様の遅延シミュレーションを実行できることは承知しています(こちらを参照)
回答:
astlockの答えに追加したいのは、プレーンで返信したい場合return
は注意が必要であることに注意してください:echo
標準return
ディレクティブではなくecho_sleep
、次のように遅延して応答した後に使用する必要があります:
location = /slow-reply {
echo_sleep 5.0;
#return 200 'this response would NOT be delayed!';
echo 'this text will come in response body with HTTP 200 after 5 seconds';
}
(openresty / 1.7.10.2でテスト済み)
echoモジュールの使用方法の詳細を説明します。
基本的な設定から開始する場合、静的ファイルとPHPファイルをロードします。次のようなものがあります。
location ~ \.php$ {
include fastcgi.conf;
fastcgi_pass php;
}
次に、これを次のように変換して、静的要求とPHP要求の両方に遅延を追加できます。
# Static files
location / {
echo_sleep 5;
echo_exec @default;
}
location @default {}
// PHP files
location ~ \.php$ {
echo_sleep 5;
echo_exec @php;
}
location @php {
include fastcgi.conf;
fastcgi_pass php;
}
これは、必要に応じて変更できます。基本的に、各ロケーションブロックを名前付きの@locationに移動します。次に、echo_sleep
とecho_exec
を元のロケーションブロックで使用します。
リクエストを受信するようにバックエンドサーバーを設定してから、サーバーでの応答を遅らせることができます。Nginxはリクエストをバックエンドサーバーにプロキシします。