$content_length

变量 $content_length 包含客户端发送的 'Content-Length' HTTP 头的值,表示请求体的字节大小。 — NGINX Core (HTTP)

$content_length NGINX Core (HTTP)

说明

NGINX 中的 $content_length 变量提供包含在 'Content-Length' HTTP 头中的请求体长度。只有在该头存在的请求(通常为 POST 和 PUT 方法)中才会设置该变量。如果客户端未发送 'Content-Length' 头,该变量将为空。该变量主要用于处理已知内容大小的请求,允许基于传入数据大小执行条件逻辑。 在处理请求时,NGINX 在解析入站请求头后设置 $content_length。如果指定了 'Content-Length' 头,它将保存该数值;但是如果该头缺失或格式不正确,$content_length 将不会反映有效的大小。实际上,该变量的有效值严格为非负整数,表示请求体的字节数。开发者通常使用该变量来施加大小限制、记录请求大小,或更高效地有条件地处理大载荷。

配置示例

http {
    server {
        listen 80;

        location /upload {
            if ($content_length > 10000) {
                return 413;  # Request entity too large
            }
        }
    }
}

子系统

http

可缓存

上下文

http, server, location, if

确保 'Content-Length' 头部确实存在;否则,$content_length 将为空。

$content_length 仅对通常带有主体的方法(例如 POST 和 PUT)有用;对于 GET 请求,它将不会被设置。

并非所有客户端都正确使用 'Content-Length' 头部,这可能导致意外结果。缺失时,该变量不会返回大小。