如何编写一个合适的nginx日志正则表达式



$request是log_format的一个属性,其格式类似于:

GET /stocks?pattern=1a2b3c&isauto=1&associate=0&userid=4d5e6f&pl=g&isrealcode=1 HTTP/1.1

或者像这样:

GET /stocks?pattern=1a2b3c&field=5 HTTP/1.1

我想写一个正则表达式来截取中间的字符串,并将其格式更改为以下形式:

pattern=1a2b3c&...=...&...=... => pattern:1a2b3c,...:...,...:...

使用以下表达式提取中间字符串:

if ($request ~* "GET /stocks?(.*) HTTP/1.1$"){
set $custom $1;
}

提取的字符串如下所示:

pattern=1a2b3c&field=5&...=...

如何替换这些符号:

'=' => ':' '$'=>','

最新更新