目录
目录X
联系信息 首页 /正文内容

Nginx 解决 Request Header Or Cookie Too Large

AI摘要(BLUF)
报错状态码一般是 400 / 494,根源:请求头、cookie 超出 nginx header buffer 缓冲区大小。两个核心指令:client_header_buffer_size:普通请求头初始缓冲区large_client_header_buffers:超大请求头专用缓冲区1、修改 nginx.conf(http 全局段,不是 server 块)打开主配置 nginx.conf,在 http { } 里面添加 / 修改,不要写到 server {} 里面:nginxhttp{#默认一般4k,调大到16kclient_header_buffer_size16k;#格式:数量单块大小;……

报错状态码一般是 400 / 494,根源:请求头、cookie 超出 nginx header buffer 缓冲区大小。

两个核心指令:

  • client_header_buffer_size:普通请求头初始缓冲区

  • large_client_header_buffers:超大请求头专用缓冲区


1、修改 nginx.conf(http 全局段,不是 server 块)

打开主配置 nginx.conf,在 http { } 里面添加 / 修改,不要写到 server {} 里面: nginx

http {
    # 默认一般4k,调大到16k
    client_header_buffer_size 16k;
    # 格式:数量 单块大小;4块,每块16k,总上限64k
    large_client_header_buffers 4 16k;
    # 下面原有配置保留……
    include       mime.types;
    default_type  application/octet-stream;
    ......
}

参数参考:

  • 普通业务:client_header_buffer_size 16k; large_client_header_buffers 4 16k;

  • 如果 JWT、cookie 特别大,可以调到 32k

nginx

client_header_buffer_size 32k;
large_client_header_buffers 4 32k;


2、校验配置 + 重载 nginx(重要,避免配置写错导致服务挂掉)

# 检查配置语法是否正确
nginx -t
# 语法ok之后,平滑重载,不中断业务
nginx -s reload


3、注意坑点

  1. ❗这两个参数必须写在 http {} 层级,写在 server/location 不生效!

  2. nginx 不会无限制放大,不建议盲目开到上百 k,缓冲区越大内存消耗越高。

  3. 如果调大缓冲区依然报错:

    • 根本问题是 cookie/header 本身太大,优先业务侧优化:减少 cookie 内容、长 jwt 放请求 body,不要塞 header。

  4. 如果是反向代理到后端 tomcat/springboot:后端也要同步调大 header 上限,只改 nginx,后端依旧会报 400。


4、排查验证

浏览器 F12-Network,看请求头总大小; nginx 错误日志 error.log 会打印类似:client sent too big header while reading client request headers,确认就是这个问题。


【打印正文】 发布时间:2026-07-14 10:44:00 浏览次数: 作者: 来源:本站原创