$request_length

变量 $request_length 返回客户端请求主体的总大小(以字节为单位)。 — NGINX Core (HTTP)

$request_length NGINX Core (HTTP)

说明

$request_length 变量在 NGINX 中保存客户端请求主体的字节数,该字节数包含头部以及客户端作为请求一部分发送的任何数据(通常出现在 POST 请求中)。这个变量对于监控传入请求的大小以及基于请求大小应用速率限制特别有用。 NGINX 在解析传入请求时设置 $request_length 的值。通常在处理请求的 server 和 location 上下文中填充。记录的大小是请求的总长度,以字节为单位计数。该变量的典型值会根据应用的性质大相径庭;常见的大小可能从 0 字节(对于没有主体的简单 GET 请求)到包含表单或文件上传的复杂 POST 请求的几千字节不等。 当您希望实施安全措施以拒绝过大的请求主体或跟踪客户端请求所消耗的带宽时,此变量很有帮助。因此管理员可以基于此变量设置限制以优化服务器性能并有效管理资源。

配置示例

http {
    server {
        listen 80;
        location /upload {
            client_max_body_size 1M;
            if ($request_length > 1048576) {
                return 413;
            }
        }
    }
}

子系统

http

可缓存

上下文

http, server, location, if

$request_length 变量仅适用于 POST 请求;对于 GET 请求,通常返回 0。

对该变量的误解可能导致在没有请求主体的情况下,错误地基于 GET 方法施加限制。