echo_subrequest_async
`echo_subrequest_async` 指令会发起对指定 URI 的异步子请求。
nginx Echo module
·
locationif in location
语法echo_subrequest_async URI [args];
默认值none
上下文location, if in location
参数2+
说明
echo_subrequest_async 指令以异步方式启用子请求的处理,允许主请求在子请求在后台处理中时继续进行。此功能特别有助于通过处理诸如日志记录、分析或获取外部资源等任务来提高 NGINX 服务器的性能,而不会阻塞返回给客户端的响应。
该指令至少接受两个参数,首先是一个 URI,表示子请求的端点,后面可以跟可选参数。调用时,NGINX 会异步处理子请求,根据指定的 URI 发送所需的数据或参数,同时主请求独立地继续进行。该方法允许高效利用资源,实现并行处理并降低为客户端提供服务时的整体延迟。
需要确保子请求的 URL 在执行期间是有效且可访问的,因为无法访问的子请求不会阻塞主请求,但如果主请求依赖于子请求的输出,可能导致数据不一致。此功能显著增强了 NGINX 配置的灵活性,尤其适用于可能需要多个数据获取操作或不依赖于这些子请求立即响应的复杂应用。
配置示例
location /request_async {
echo "Starting async subrequest";
echo_subrequest_async /async_endpoint arg1=value1 arg2=value2;
echo "Async subrequest initiated!";
}⚠
确保 subrequest URI 正确且可访问,以避免出现意外行为。
⚠
如果 subrequest 导致错误,它不会阻塞 main request,但如果未正确处理,可能会导致应用状态不一致。
⚠
请记住,echo_subrequest_async 应在异步处理有益时使用,不当使用可能会使调试变得复杂。
⚠
该指令不保证相对于周围指令的执行或完成顺序。