记一次微服务因URI太长或者request header过大时会报414 Request URI too large或400 bad request错误。

解决方案

1、修改 Nginx 配置

修改两个参数

参数一:

#client_header_buffer_size:客户端请求头缓冲区大小,
client_header_buffer_size 128k; #如果请求头总长度大于小于128k,则使用此缓冲区

参数二:

#large_client_header_buffers:请求头总长度大于128k时使用large_client_header_buffers设置的缓存区

large_client_header_buffers 4 128k;

#large_client_header_buffers 指令参数4为个数,128k为大小,默认是8k。申请4个128k。
2、修改 Gateway 和下游服务 配置

修改了Nginx后发现,还是会出现 413 错误,后来想了想是不是微服务网关也会限制请求头的长度呢,于是百度资料,果然有人遇到这个问题,原因是 spring cloud gateway 使用JWT请求时Netty限制header大小导致请求400 bad Request;按其方式修改后,访问正常

源码里面默认gateway上面的netty的默认消息头大小是8KB

修改Gateway消息头限制大小

server:
  # 设置webflux netty的请求头大小为100kb
  max-http-header-size: 102400

修改下游微服务的消息头限制大小

server:
  # 设置spring mvc servlet的请求头大小为100kb
  max-http-header-size: 102400

https://blog.csdn.net/weixin_34326179/article/details/89795003
https://blog.csdn.net/fuck487/article/details/105283752

作者:Jeebiz  创建时间:2023-02-25 01:45
最后编辑:Jeebiz  更新时间:2023-02-25 01:45