请求头太大,400 之前发生了什么
用户登录后偶发 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;
但别无限调大,请求头是攻击面之一。