nginx 报400_nginx 400 Bad request 错误的原因和解决办法

当遇到nginx返回400 Bad Request错误时,通常原因是request header过大,特别是由于cookie值过大导致。通过调整nginx配置文件,在`nginx.conf`中增大`client_header_buffer_size`和`large_client_header_buffers`的值可以缓解问题。例如设置为128k。如果使用的是0.7.12之前的nginx版本,建议升级并添加默认虚拟主机配置来处理空请求头,避免400错误。

nginx 400 Bad request是request header过大所引起,request过大,通常是由于cookie中写入了较大的值所引起。

所幸在nginx中是有办法解决这个问题:

在nginx.conf中,将client_header_buffer_size和large_client_header_buffers都调大,可缓解此问题。

client_header_buffer_size:默认是1k,所以header小于1k的话是不会出现问题的。

large_client_header_buffers:该命令用于设置客户端请求的Header头缓冲区的大小,默认值为4KB。客户端请求行不能超过large_client_header_buffers指令设置的值,客户端请求的Header头信息不能大于large_client_header_buffers指令设置的缓冲区大小,否则会报“Request URL too large”(414)或者“Bad-request”(400)错误,如果客户端Cookie信息较大,则须增加缓冲区大小。

现在配置是:

代码如下

复制代码

client_header_buffer_size 128k;

large_client_header_buffers 4 128k;

去掉access日志中的400方法

0.7.12以前版本的nginx收到一个空请求,nginx不会去与任何虚拟主机匹配,直接返回400错误,

之后的新版本nginx可以用server_name _;匹配空请求头。

所以如果用的旧版本先升级到0.7.12以后的版本

升级之后添加如下默认虚拟主机server。

增加默认的server到配置文件,以下配置的解释看这里禁止未绑定域名访问

代码如下

复制代码

server {

listen 80 default_server;

server_name _;

return 404;

access_log off;

}

建议把上面这个server保存为default.conf,然后include到主配置文件nginx.conf

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值