报错状态码通常是 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、把稳坑点
?这两个参数必须写在 http {} 层级,,,,,,,写在 server/location 不生效!
nginx 不会无限度放大,,,,,,,不建议盲目开到上百 k,,,,,,,缓冲区越大内存亏损越高。。。。。。
若是调大缓冲区依然报错:
底子问题是 cookie/header 自身太大,,,,,,,优先业务侧优化:削减 cookie 内容、长 jwt 放要求 body,,,,,,,不要塞 header。。。。。。
若是是反向代理到后端 tomcat/springboot:后端也要同措施大 header 上限,,,,,,,只改 nginx,,,,,,,后端仍旧会报 400。。。。。。
4、排检验证
浏览器 F12-Network,,,,,,,看要求头总大。。。。。;;;;;
nginx 谬误日志 error.log 会打印类似:client sent too big header while reading client request headers,,,,,,,确认就是这个问题。。。。。。