nginx不同的请求所记录到的日志文件问题

配置了一个nginx在location下有配置access_log字段记录到指定文件,该配置也生效了,但是在故障排查时候发现有部分400日志未记录到access_log所指定的文件,而是记录到了默认的access.log,请大神帮助解答一下。

另外发现有时候nginx的异常日志(比如未匹配到upstream的502日志)只记录到error.log access.log里无记录,有的却在access.log和error.log里都有记录,是跟nginx版本有关系吗?

邀请回答
提问于 2020-08-28 16:31
358 次浏览
共1个回答

发表评论
  • 陶辉
    2020-08-28 17:17

    Nginx在匹配location之前,以下3步中都可能产生400错误码:

    1、接收、解析URL和header时,请求格式错误会导致400错误;

    2、preread阶段的HTTP模块产生的错误;

    3、server_rewrite重定时出现的错误;

    猜测你应当是出现了请求格式非法问题,此时URL不值得信任,因此location匹配也不会做,location {access_log xxx; }自然也不会生效。具体可以参考我的这篇文章:https://www.nginx-cn.net/article/69

    1
    回复
    举报
    • 夜雨 2020-08-28 17:35
      谢谢老师的解答,另外问下请求格式非法的话不会记录error日志吗,在error.log里没有见到相关的异常。
      0
      回复
      举报
    • 陶辉 2020-08-28 17:37
      会,但是级别未必的ERROR的,你可以把级别调到info看看
      0
      回复
      举报
提问者

夜雨

暂无个人介绍

  • 0

    文章

  • 1

    粉丝

  • 0

    被赞

夜雨
按Enter键发送
您已邀请位用户
版权所有©F5 Networks,Inc.保留所有权利。京ICP备16013763号-5