Plainnotes

请求头太大,400 之前发生了什么

2024-09-09 · 3 分钟部署

用户登录后偶发 400,清 cookie 就好,很快又复现。八成是请求头超限。

nginx 有两个限制:large_client_header_buffers(默认 4 8k)和 client_header_buffer_size(默认 1k)。请求行或单个头超过缓冲区,返回 400 或 414。

看日志:

2024/09/09 10:12:03 [error] client sent too long header line

处理方向:调大缓冲,或者——更根本的——减少 cookie 数量。一个域下挂的 cookie 会全部带上,第三方脚本、埋点、A/B 测试各写一个,很快就几 KB。

调参:

large_client_header_buffers 4 16k;

但别无限调大,请求头是攻击面之一。