首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
V2EX  ›  NGINX

怎么设置 nginx 日志不记录带参数的图片?

  •  
  •   z069 · 75 天前 · 772 次点击
    这是一个创建于 75 天前的主题,其中的信息可能已经有所发展或是发生改变。
    因为图片加了参数适配缩略图,导致日志中存在大量的图片的访问记录,怎么才能设置不记录这些带有参数的日志呢?

    比如这个:
    /pic.png&w=280&h=210&a=&zc=1


    我设置了:
    location ~ .*\.(png&w=280&h=210&a=&zc=1)$ {
    expires 30d;
    access_log off;
    }

    location ~ .*\.(png)$ {
    expires 30d;
    access_log off;
    }

    但是貌似没有效果,依然会记录,求教各位大佬,这个有什么办法设置么?
    4 回复  |  直到 2019-04-09 10:53:04 +08:00
        1
    ryd994   75 天前 via Android
    你这个 URL 合法吗?
    &是保留字符,用于分割 args
        2
    z069   75 天前
    @ryd994 刚才看了一下,确实不全,实际是 /thumbnail.php?src=https://www.domain.com/pic/pic.png&w=280&h=210&a=&zc=1
        3
    ryd994   75 天前 via Android
    location 只匹配 path 部分,不匹配整个 URL
    map $arg_src $log_filter {
    default 1;
    ~ .*\.(png)$ 0;
    }

    access_log 照抄原来的,官方 manual 里也能查到默认的。在最后加上 if=$log_filter

    思路就是这样,剩下的 rtfm:
    http://nginx.org/en/docs/http/ngx_http_log_module.html
    http://nginx.org/en/docs/http/ngx_http_map_module.html
        4
    z069   70 天前
    @ryd994 你好,感谢您的解答

    按照您的提示,我在 http 中添加了
    map $arg_src $log_filter {
    default 1;
    ~ .*\.(png)$ 0;
    }
    access_log /data/wwwlogs/domain.com.log combined if=$log_filter;
    测试提示[emerg] invalid number of the map parameters


    按照文档中的示例,
    添加在同一位置的:
    map $status $loggable {
    ~^[403] 0;
    default 1;
    }
    access_log /data/wwwlogs/domain.com.log combined if=$loggable;
    这个 nginx -t 后提示通过,麻烦看下,配置哪有问题吗?
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   992 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 19ms · UTC 18:42 · PVG 02:42 · LAX 11:42 · JFK 14:42
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1