如何在nginx中禁用日志记录图像但仍允许获取请求?

时间:2014-12-04 08:04:05

标签: http nginx access-log

我正在尝试仅在nginx access_log中记录java脚本文件请求。 我尝试使用我在本网站上找到的以下代码:

location ~* ^.+.(jpg|jpeg|gif|css|png|html|htm|ico|xml|svg)$ {
   access_log        off;
}

问题是它根本不允许获取请求,并且在尝试运行在浏览中执行js文件的html文件时出现404错误。

我希望一切都能正常工作,但访问日志只能记录js文件的请求。 我该怎么做?

2 个答案:

答案 0 :(得分:6)

将其放入服务器块并确保正确设置“root”。它确实有效

工作示例:

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
    expires    +60d;
    access_log off;
}

我在服务器块中有这个,而不是位置块。

答案 1 :(得分:1)

或者,您可以将所有请求保留在单个 location 内,但使用 access_log 和条件 if 运算符来禁用图像记录:

map $request_uri $is_loggable {
    ~* ^.+\.(jpg|jpeg|gif|css|png|html|htm|ico|xml|svg)$ 0;
    default                                             1;
}
server {
    location / {
        access_log /path/to/log/file combined if=$is_loggable;
        ...
    }
}

这里的 combined 是默认日志格式的名称。

你说你只想记录 java-script 文件,所以实际上你可以使用更简单的解决方案:

map $request_uri $is_loggable {
    ~* ^.+\.js$  1;
    default      0;
}