最新要闻

广告

手机

光庭信息跌4.57% 2021上市超募11亿2022扣非降74% 时快讯

光庭信息跌4.57% 2021上市超募11亿2022扣非降74% 时快讯

搜狐汽车全球快讯 | 大众汽车最新专利曝光:仪表支持拆卸 可用手机、平板替代-环球关注

搜狐汽车全球快讯 | 大众汽车最新专利曝光:仪表支持拆卸 可用手机、平板替代-环球关注

家电

全球最资讯丨nginx访问日志过滤(多条件)

来源:博客园


(资料图)

nginx的access_log的过滤网上有很多文章。是通过map定义一个变量,然后把那个变量配置到access_log的if即可。

比如:

map $status $loggable {    ~^[23]  0;    default 1;}access_log /path/to/access.log combined if=$loggable;

定义一个变量loggable,http状态码是2XX、3XX的返回0,其他情况返回1。然后access_log当loggable为0时就不记录。

但是我现在有两条件,一个是固定url,一个是负载均衡的心跳检测。

对于组合条件,这里的if不支持运算。

最后是在mpa定义变量时default用上一个变量的值解决的。配置如下:

map $http_user_agent $health {    default 1;    ELB-HealthChecker/2.0 0; } map $uri $loggable {    default $health;    ~^/spicalURI* 0; } access_log  /var/log/nginx/access.log  main if=$loggable;

定义$loggable时用 default $health 达到了“或”的效果。

这样nginx 的访问日志里就排除的这些访问量特别大又没啥信息量的项,避免日志过大。

关键词: