首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Nginx从访问日志中排除URL使用map和regex捕获URL中单词的一部分

Nginx从访问日志中排除URL使用map和regex捕获URL中单词的一部分
EN

Stack Overflow用户
提问于 2019-08-01 20:19:28
回答 1查看 895关注 0票数 1

我的Nginx 1.17配置成功地将POST请求方法排除在日志记录之外

代码语言:javascript
运行
复制
map $request_method $loggable {
default       1;
POST          0;
}
access_log /var/log/nginx/nginx_access.log main if=$loggable;

我尝试在下面的配置中排除记录单词"rsey“中与大小写不敏感的部分的任何URL,例如JerSey2018

代码语言:javascript
运行
复制
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这样的日志地址,因此我的映射/正则表达式规则不能捕获必要的内容-日志示例->

代码语言:javascript
运行
复制
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地图太累了,使用这样的东西通过单词的一部分来捕捉位置似乎更好(尽管也不起作用)

代码语言:javascript
运行
复制
location ~ /(.*)rsey(.*)/ {
    access_log off;
 }

现在我们来看看这行代码中Nginx中真正的通配符

代码语言:javascript
运行
复制
location ~ /(.*)rsey(.*)/ {
EN

回答 1

Stack Overflow用户

发布于 2019-08-02 00:56:08

您不能从两个map块控制同一变量。但是您可以使用第一个map的值作为第二个use的默认值。

例如:

代码语言:javascript
运行
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57308909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档