上次在nginx的日志里发现很多400 408错误,分析之后估计是chrome和firefox的预加载技术导致,所以基本上只能忽略。但这次又发生了400错误,而且情况不同。
上次的400有个特点,在nginx日志里是连成片的,而且是在GET的时候,但浏览器并不会报错。而这次则是产生单条记录,而且是在POST的时候,浏览器也会提示错误,更特别的是,只有opera会出现。
所以经过排查,发现只有在开启了spdy的网页上post才会发生,搜索知道其实是opera 12的bug,http://trac.nginx.org/nginx/ticket/337,opera会在post的时候发送错误的content-length header。所以只要关闭opera的spdy就行。
在opera:config中关闭UseSpdy2和UseSpdy3就行。
不知道新版opera会不会有这个问题。