如何使用nginx location限制对url的访问,以匹配带有字符串和数字的表达式?

如何使用nginx location限制对url的访问,以匹配带有字符串和数字的表达式?,nginx,reverse-proxy,nginx-location,Nginx,Reverse Proxy,Nginx Location,我有以下路径作为Nginx位置: /api/用户 我的用户访问的url是/api/users?id=109238717283223 问题是我不希望直接路径/api/用户是可访问的,目标是仅当url包含用户时才允许访问?id=数字(精确数字) 如何使用正则表达式实现这一点?可以使用$arg\ucode>变量前缀访问各个参数。可以使用if指令对正则表达式进行测试。例如,确保id参数正好是15位数字的精确匹配位置: location = /api/users { if ($arg_id ~ ^

我有以下路径作为Nginx位置:

/api/用户

我的用户访问的url是/api/users?id=109238717283223

问题是我不希望直接路径/api/用户是可访问的,目标是仅当url包含用户时才允许访问?id=数字(精确数字)


如何使用正则表达式实现这一点?

可以使用
$arg\ucode>变量前缀访问各个参数。可以使用
if
指令对正则表达式进行测试。例如,确保
id
参数正好是15位数字的精确匹配位置:

location = /api/users {
    if ($arg_id ~ ^\d{15}$) { return 403; }
    ...
}

使用
if
指令阅读有关限制的内容。

可以使用
$arg\uu
变量前缀访问各个参数。可以使用
if
指令对正则表达式进行测试。例如,确保
id
参数正好是15位数字的精确匹配位置:

location = /api/users {
    if ($arg_id ~ ^\d{15}$) { return 403; }
    ...
}

使用
if
指令阅读有关限制的内容。

您能否再添加一些具体示例,说明哪些是允许的,哪些是不允许的?从上面的描述中不太清楚。你能补充一些具体的例子来说明什么是允许的,什么是不允许的吗?从上面的描述中不太清楚。