Поэтому, когда я локально тестирую такие вещи, как Ajax, в написанных мной приложениях, мне часто нравится добавлять задержку в скриптах на стороне сервера, используя sleep
заявление. Это помогает имитировать медленное соединение и т. Д.
Есть ли способ указать аналогичное поведение задержки непосредственно в конфигурации Nginx, которое будет работать для плоских файлов HTML, которые он обслуживает?
Я знаю, что вы можете сделать аналогичное моделирование задержки на сетевом уровне (см. Вот), но это кажется довольно беспорядочным и никогда не помогало мне.
Вам следует попробовать эхо-модуль.
Я хотел бы добавить к Ответ астлока что если вы хотите ответить простым 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 отправляет запрос на бэкэнд-сервер.
Нет способа (IHMO) задержать ответ от nginx. Вы должны переделать свое приложение, а не свой веб-сервер, чтобы включить эту функцию.