网站制作学习网经验与学习→正文:nginx access日志400
字体:

nginx access日志400

经验与学习 2012/10/24 18:15:05  点击:不统计

%77w%77%2E%66%6F%72%61%73%70%2E%63%6E

在nginx使用中发现nginxaccess_log里面写入了大量的400日志,该日志是如何产生以及该怎么解决呢?

在同事们的指导中解决该问题。

首先看nginx写access_log 400日志的原因。
HTTP 400是请求无效,在nginx处理中发现请求的header头是空的,于是说该请求无效。这里的请求是从哪里来的,运维的同事说有一只监控该机器的一只在向服务器telnet,于是我们单独去telnet测试服务器看nginx是否写400日志到access_log里面。
http://www.forasp.cn
看我们端口 telnet 10.0.0.51 8119
在日志中就会有显示400 的错误日志。
"-" 400 0 -nginx access_log
"-" 400 0 -nginx access_log
"-" 400 0 -nginx access_log
"-" 400 0 -nginx access_log
"-" 400 0 -nginx access_log
"-" 400 0 -nginx access_log

我们找到了原因,然后做处理,处理很简单:网站制作学习网
分析当外部请求来到request,那么会从配置文件的server去找对应的server,我们找server就得用nginx获取的请求header头的host信息去匹配,如果nginx匹配到了那么就去对应的server服务。可是现在header头为空,我们拿不到服务的相关信息。也就是server_name为空了。
我们如果配置server_name 为空结局就是nginx的配置文件检测不过去。于是这个方法就被kill了。3w.foa($)sp.cn

我们继续,在 nginx的server配置中,如果配置了location所有的都会到这个配置项里,单不包括空的请求。如果我们关闭这里的日志,那就关闭了所有的nginx的access_log日志,行不通,我们必须将其打开。解决方法:于是我们将server里面location外面日志关闭,里面的nginx server里面的location的access_log日志打开即可。

我们于是修改了nginx的配置
 server
{
 listen  127.0.0.1:8119;
 server_name    "";
 index index.html index.htm;
 access_log off;//在server里面location外
  location /
  {..
  access_log ../logs/access.log main;//在location里面
  ..
  }
..
}
这样保持nginx的conf配置文件再次测试nginx access_log 的400 log
用telnet 不再记录400日志
用curl 请求一个页面 显示"GET /10k.html HTTP/1.1" 200 10564 MISS3w.foa($)sp.cn

这样就解决了nginx access_log 一直记录400日志的状况。
关键词:nginx日志报大量400错误。nginx access日志中400


学习www.网for站asp制.cn作

·上一篇:转-合格程序员每天每周每月每年应该做的事 >>    ·下一篇:Unable to save result set >>
推荐文章
最新文章