400 Bad Request是一种HTTP错误状态码。HTTP/1.1对400 Bad Request的定义主要是:1、语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求。2、请求参数有误。 在这段时间笔者遇到了好几次生产问题Nginx报400异常,且原因细究下来各不相同,有些甚至在网上没有搜到类似案例。遂产生了兴趣,做了本次梳理,希望会对大家有一定帮助!
1. 一般导致400异常的场景
1.1 请求头过大
1.1 空请求
2. 特殊问题场景一:URLConnection发起HTTPS请求经过代理400异常
3. 特殊问题场景二:网络传输丢包导致的400异常
4. 参考文献
1. 一般导致400异常的场景
一般使用Nginx在以下场景会报400 Bad Request:
1.1 请求头过大
nginx 400 Bad request是request header过大所引起,request过大,通常是由于cookie中写入了较大的值所引起。在nginx.conf中,调整client_header_buffer_size和large_client_header_buffer参数大小可以解决问题(ps,网上很多博客只片面强调调大两个参数的值,并未研究参数区别和用法,真正大规模应用明显是不合适的)。 那么这两个参数是如何定义的呢?
Syntax: client_header_buffer_size size;
Default: client_head
|