Nginx 1.7版本新增的access_log的if指令

我已经忘了自己遇到或是被别人问到多少次类似的问题了: 如何根据一些条件来有选择的记录访问日志. 诸如不同的来源ip记录不同的日志, 某些状态码的请求不记录日志等等等等.

很多时候的解决方案是使用rewrite模块的if指令, 但是遗憾的是采用这个方法会导致出现很多意料之外的结果.

不过好消息是nginx的1.7版本中给日志模块access_log指令增加了if参数, 可以很方便解决上述问题. 这个新功能配合map或者nginx_lua相信可以满足绝大多数的需求了.

如果不想升级nginx的话, 可以直接替换一下对应的日志模块代码, 也是可以生效的.

Comments