7

我试图在 nginx access_log 中仅记录 java-script 文件请求。我尝试使用在此站点上找到的以下代码:

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

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

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

4

2 回答 2

14

将它放在服务器块中,并确保正确设置了“根”。它确实有效

工作示例:

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

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

于 2014-12-04T10:06:24.893 回答
1

或者,您可以将所有请求保留在单个中location,但与条件运算符一起使用access_logif禁用图像记录:

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;
}
于 2021-01-19T12:48:07.157 回答