如何使用 nginx 获取字符串的子字符串

如何使用 nginx 获取字符串的子字符串

假设我从 cookie 中获取了一个值

$cookie_MY_COOKIE

包含64个字符。

如何删除 nginx 配置中的前 60 个字符?

答案1

map指令允许您根据另一个变量的值定义一个新变量。您可以使用正则表达式来捕获最后四个字符。

该块需要在块内(块外部)map定义,因此新变量的名称必须是全局唯一的。httpserver

这个文件了解详情。

例如:

map $cookie_MY_COOKIE $my_value {
    default                    "";
    "~^.{60}(?<suffix>.{4})$"  $suffix;
}

server {
    ...
}

正则表达式只会匹配长度正好为 64 个字符的值,否则将返回空字符串。

我们使用命名捕获,因为每次 Nginx 在您的配置中的其他地方评估正则表达式时,数字捕获都会被覆盖。

使用变量$my_value从中获取最后四个字符$cookie_MY_COOKIE

相关内容