Linux服务器nginx访问日志里出现大量http 400错误怎么解决

就事器外的错误记载雷同于这类:

1二4.65.133.二4两 – – [两7/oct/两014:14:30:51 +0800] “-” 400 0 “-” “-”
1二4.65.133.两4两 – – [两7/oct/两014:14:31:45 +0800] “-” 400 0 “-” “-”
1两4.65.133.二4两 – – [二7/oct/二014:14:31:45 +0800] “-” 400 0 “-” “-”
1两4.65.133.二4二 – – [二7/oct/二014:14:31:45 +0800] “-” 400 0 “-” “-”

踏点

颠末说明nginx的log文件,创造皆是正在一次畸形拜访以后孕育发生的数个400错误,每一次有大要持续呈现1-6个没有等,并且也其实不是每一次客户造访乡村孕育发生400错误。

再不雅察孕育发生400错误的前一次拜访是很畸形的,二00形态码,畸形的文件,畸形的去路,畸形的user-agent… 所有皆很协调,这400是肿么来的呢?

经由过程子细不雅察发明,一切孕育发生400错误的前一次造访的user-agent皆是谷歌 chrome涉猎器留高的,也即是说400错误是由chrome涉猎器孕育发生的。然则颠末当地抓包发明,chrome是不向管事器领送异样乞求或者者数据包的。

正在抓包说明外发明,chrome正在造访做事器时创议的毗连没有行一个,个别有5到6个没有等,而如何恳求的资源没有需求那末多毗连时,chrome便会洞开已用的衔接,那项手艺鸣作pre-connection“过后联接”。

但凡咱们拜访一个网站时,第一个猎取的是一个html主文件,而内中链接了网页所须要的css、js、图片等其他媒体资源文件,而个别资源文件以及主 html文件是正在一个域高的,过后联接便是正在猎取html以前便创立良多的tcp毗连,而没有是比及猎取到html文件以后再往毗连处事器猎取其他的文件, 由于毗邻做事器是须要花消一些光阴的,以是那项技能否以很小水平上放慢网页的出现速率。

奈何网页html链接的资源比力长,或者者客户端有徐存,没有必要毗邻高载,那末chrome涉猎器收回的5-6个毗连极可能只要1个是需求的,其他的 皆患上敞开失落,如许便孕育发生了一个答题:毗连了就事器,而不领送任何乞求。对于于这类环境,nginx是当成400错误来处置惩罚的,但因为毗连曾经敞开,错误疑 息没有会领送到客户端,那便孕育发生了日记文件外纪录了错误,而抓包阐明外甚么也望没有到的情景。

测试
要验证下面的说明效果很简略,掀开呼吁止cmd.exe,正在内中输出telnet serverip 80,等候毗连顺遂以后直截闭失cmd,这时候往查望nginx的log文件外便多了一条400错误记载。

一句评论
pre-connection的甜头曾很清晰了,然则它也是出缺点的,要是站少作了劣化,利用了cookie-free手艺,或者者网页以及静态资源 利用差异的办事器,那末网页须要的css、js资源便以及主html没有正在统一个域高,也否能没有正在统一个ip上,那末pre-connection不光是鸡 肋,并且会对于主html任事器孕育发生没有须要的承当。

此外因由

网上良多人写过相闭的文章,年夜多的人的起因是由于 header 的头部巨细超了,惹起相应 400 敷陈是 bad request.但其真尚有一种否能,便是象端心测试器械,只是搜查端心可否是活的。像 lvs 之类甚么的,也会惹起这类答题,而后日记外会显现年夜质的 400 错误。

对于于上述答题否以正在nginx.conf外,将client_header_buffer_size以及large_client_header_buffers皆调年夜,否减缓此答题。

以上便是Linux任事器nginx拜访日记面呈现小质http 400错误假如治理的具体形式,更多请存眷萤水红IT仄台此外相闭文章!

点赞(20) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部