Nginx使用map和regex从访问日志中排除URL,以捕获URL中单词的一部分
我有nginx1.17,配置成功地将POST-request方法从日志中排除Nginx使用map和regex从访问日志中排除URL,以捕获URL中单词的一部分,regex,nginx,pcre,Regex,Nginx,Pcre,我有nginx1.17,配置成功地将POST-request方法从日志中排除 map $request_method $loggable { default 1; POST 0; } access_log /var/log/nginx/nginx_access.log main if=$loggable; 我尝试在下面的config中排除任何URL,因为它是单词“rsey”的一部分,不区分大小写匹配,例如JerSey2018 map_hash_bucket_siz
map $request_method $loggable {
default 1;
POST 0;
}
access_log /var/log/nginx/nginx_access.log main if=$loggable;
我尝试在下面的config中排除任何URL,因为它是单词“rsey”的一部分,不区分大小写匹配,例如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请求,但仍然在类似URL的地方写入日志
因此,我的map/regex规则没有捕获必要的内容-日志示例->
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"
Thx的任何提示和想法尝试…可能有人可以告诉我一个错误的配置上面
***稍晚一点-厌倦了与Nginx地图抗争,似乎最好用类似的方式通过一个单词的一部分来捕捉位置(尽管不太管用)
那么现在thx有什么想法可以尝试在这一行中捕捉Nginx中真正的通配符
location ~ /(.*)rsey(.*)/ {
不能从两个
map
块控制同一变量。但是您可以使用第一个映射的值作为第二个映射的默认值
例如:
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;
有关详细信息,请参见。您无法从两个
映射
块控制同一变量。但是您可以使用第一个映射的值作为第二个映射的默认值
例如:
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;
详情请参阅。遗憾的是,我的工作不起作用,情况是一样的,我已经玩了所有可能的变化,但结果是一样的。你能给我举个例子吗?让我们只留下一个map regex来捕获单词的一部分并从日志中排除…thx in advanceI我只是注意到您试图匹配的文本包含大写的
s
。使用~rSey
或~*rSey
,遗憾的是没有用,情况是一样的,我玩了所有可能的变化,但结果都一样。你能给我举个例子吗?让我们只留下一个map regex来捕获单词的一部分并从日志中排除…thx in advanceI我只是注意到您试图匹配的文本包含大写的s
。使用~rSey
或~*rSey