我的Nginx 1.17配置成功地将POST请求方法排除在日志记录之外
map $request_method $loggable {
default 1;
POST 0;
}
access_log /var/log/nginx/nginx_access.log main if=$loggable;
我尝试在下面的配置中排除记录单词"rsey“中与大小写不敏感的部分的任何URL,例如JerSey2018
map_hash_bucket_size 128;
map $request_uri $loggable {
(.*?)rsey(.*?) 0;
default 1;
}
map $request_method $loggable {
default 1;
POST 0;
}
access_log /var/log/nginx/nginx_access.log main if=$loggable;
但是有了这个配置,NGINX仍然从日志记录中排除POST请求,但仍然写入像http://example.com/ID-16409696108601-JerSey2018-report.html这样的日志地址,因此我的映射/正则表达式规则不能捕获必要的内容-日志示例->
example.com 88.256.54.27 - - [01/Aug/2019:06:52:00 -0500] "GET /ID-16409696108601-JerSey2018-report.html HTTP/1.1" 200 3366 "http://example.com/sitemap.xml" "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393"
对于try...may的任何提示和想法,有人可以指出上面配置中的一个错误吗?
*稍晚一点-使用Nginx地图太累了,使用这样的东西通过单词的一部分来捕捉位置似乎更好(尽管也不起作用)
location ~ /(.*)rsey(.*)/ {
access_log off;
}
现在我们来看看这行代码中Nginx中真正的通配符
location ~ /(.*)rsey(.*)/ {
发布于 2019-08-02 00:56:08
您不能从两个map
块控制同一变量。但是您可以使用第一个map
的值作为第二个use的默认值。
例如:
map $request_uri $loguri {
default 1;
~*rsey 0;
}
map $request_method $loggable {
default $loguri;
POST 0;
}
access_log /var/log/nginx/nginx_access.log main if=$loggable;
详情请参见this document。
https://stackoverflow.com/questions/57308909
复制相似问题