Nginx nginx 出现大量 400 Bad Request 错误

tiseheaini · 2013年04月17日 · 最后由 tiseheaini 回复于 2013年10月22日 · 17885 次阅读

nginx /access.log 里面出现大量 400 错误,基本上 90% 都是 400 错误。 有人说是浏览器的问题,也有人说是缓冲区的 Cookie 大小的问题,不知道由什么引起的,大家使用 nginx 时也是这种情况吗?? 服务器系统 ubuntu 12.04 64 位 部分日志

124.239.208.79 - - [16/Apr/2013:23:24:53 +0800] "GET / HTTP/1.1" 200 6989 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gec
124.239.208.79 - - [16/Apr/2013:23:24:54 +0800] "GET /assets/application-5121f2a04c2244e8cdffbb6b35120c39.js HTTP/1.1" 200 199800 "http://www.sh
124.239.208.79 - - [16/Apr/2013:23:25:05 +0800] "-" 400 0 "-" "-" 
124.239.208.79 - - [16/Apr/2013:23:25:05 +0800] "-" 400 0 "-" "-" 
124.239.208.79 - - [16/Apr/2013:23:25:05 +0800] "-" 400 0 "-" "-" 
124.239.208.79 - - [16/Apr/2013:23:25:07 +0800] "GET /topics/likeable?topic_id=50 HTTP/1.1" 200 79 "http://www.shiyueqingxin.com/" "Mozilla/5.0 
110.75.118.229 - - [16/Apr/2013:23:25:26 +0800] "-" 400 0 "-" "-" 
110.75.118.229 - - [16/Apr/2013:23:26:54 +0800] "-" 400 0 "-" "-" 
110.75.118.229 - - [16/Apr/2013:23:28:23 +0800] "-" 400 0 "-" "-" 
110.75.118.229 - - [16/Apr/2013:23:29:53 +0800] "-" 400 0 "-" "-" 
123.125.71.52 - - [16/Apr/2013:23:30:02 +0800] "GET /assets/application-c36ae6557b580cb101977db1500e623c.js HTTP/1.1" 404 446 "-" "Mozilla/5.0 (
110.75.118.229 - - [16/Apr/2013:23:31:22 +0800] "-" 400 0 "-" "-" 
110.75.118.230 - - [16/Apr/2013:23:32:51 +0800] "-" 400 0 "-" "-" 
110.75.167.211 - - [16/Apr/2013:23:33:29 +0800] "-" 400 0 "-" "-" 
110.75.118.230 - - [16/Apr/2013:23:34:20 +0800] "-" 400 0 "-" "-" 
110.75.118.230 - - [16/Apr/2013:23:35:50 +0800] "-" 400 0 "-" "-" 
110.75.167.212 - - [16/Apr/2013:23:36:26 +0800] "-" 400 0 "-" "-" 
110.75.118.230 - - [16/Apr/2013:23:37:19 +0800] "-" 400 0 "-" "-" 
110.75.118.230 - - [16/Apr/2013:23:38:48 +0800] "-" 400 0 "-" "-" 
110.75.118.230 - - [16/Apr/2013:23:40:18 +0800] "-" 400 0 "-" "-" 
110.75.118.229 - - [16/Apr/2013:23:41:47 +0800] "-" 400 0 "-" "-" 
110.75.118.230 - - [16/Apr/2013:23:43:16 +0800] "-" 400 0 "-" "-" 
110.75.118.230 - - [16/Apr/2013:23:46:08 +0800] "-" 400 0 "-" "-" 
110.75.118.229 - - [16/Apr/2013:23:47:37 +0800] "-" 400 0 "-" "-" 
110.75.167.212 - - [16/Apr/2013:23:48:29 +0800] "-" 400 0 "-" "-" 

看到你的问题我也发现我的 nginx 里有同样的 400 但是很少 大约 5% 求大牛@leopku 指导

#1 楼 @zj0713001 项目才上线几天,访问量很少,不过,400 会一直出现,然后会出来很多 access.log.1.gz access.log.2.gz 现在数字都到 20 几了

#2 楼 @tiseheaini 我圈的人是个大牛哈 坐等

#4 楼 @edokeh 问题找到了,可找不到解决的方法,很郁闷

nginx 的 log 日志开启到了 info 级别?关掉就可以了。

#5 楼 @tiseheaini 这根本就不是个问题嘛,你可以认为是 Chrome 的一个小 BUG

#7 楼 @edokeh #6 楼 @quakewang 如何关闭,我对 nginx 的配置不是很熟悉,能不能使 nginx 忽略掉 400,不记录 400 的信息

#1 楼 @zj0713001 哪敢当啊。我是来向大伙学习的。

#7 楼 @edokeh 这不仅仅是 chrome 的问题,跟 nginx 的配置也有关系,此类问题发生在 nginx 作应用代理的环境中。问题根源是 http 头太大(长),比如 cookie 里塞了太多的东西之类的。可以调整 nginx 配置或减少 cookie 的长度来解决这个问题。

#9 楼 @leopku 对,400 状态码有很多种情况,我文章说的只是其中一种比较诡异而且难查的

原来还有此一说,学习了

#9 楼 @leopku #10 楼 @edokeh 不知道什么原因,在我 10.04 32 位的 ubuntu 上面就没有 400 错误

@tiseheaini 你确定你的 400 产生原因跟我文章里面的一样吗?

#12 楼 @tiseheaini #13 楼 @edokeh

我上面已有提及,这种现象最常发生的环境是:nginx 作为 proxy,应用在 nginx 后面。 假设你用 chrome 直接访问 webrick 或 thin,是不会重现问题的。

#14 楼 @leopku 哦明白了,我试试

看看你的 nginx 是什么版本。

Changes with nginx 1.3.15 26 Mar 2013

*) Change: opening and closing a connection without sending any data in it is no longer logged to access_log with error code 400.

#16 楼 @Lax 我的一个同事告诉我了,这是一项配置出了问题,具体的哪项我想不起来了。谢谢你回答我的问题!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号