因此,当我在我编写的应用程序中本地测试诸如 Ajax 之类的东西时,我经常喜欢使用sleep
语句在服务器端脚本中添加延迟。它有助于模拟慢速连接等。
有没有办法直接在 Nginx 配置中指定类似的延迟行为,以适用于它所服务的平面 HTML 文件?
我知道您可以在网络级别进行类似的延迟模拟(请参阅此处),但它看起来很混乱,而且对我来说从来没有很好地工作过。
更详细地解释如何使用 echo 模块:
如果您从基本配置开始,则加载静态文件和 PHP 文件,如下所示:
location ~ \.php$ {
include fastcgi.conf;
fastcgi_pass php;
}
Run Code Online (Sandbox Code Playgroud)
然后可以将其转换为类似的内容,以向静态和 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;
}
Run Code Online (Sandbox Code Playgroud)
这显然可以针对您想要的任何内容进行修改。基本上,将每个位置块移动到一个命名的@location 中。然后在原始位置块中使用echo_sleep
和echo_exec
。
我想补充一下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';
}
Run Code Online (Sandbox Code Playgroud)
(在 openresty/1.7.10.2 上测试)
归档时间: |
|
查看次数: |
26072 次 |
最近记录: |