nginx“以...开头”正则表达式

nginx“以...开头”正则表达式

我正在尝试根据 HTTP 用户代理名称的字符串匹配来阻止/允许对特定虚拟主机的访问。

HTTP 用户代理中应用程序的版本号发生变化,例如

My%20App/1.55.01 CFNetwork/711.5.6 Darwin/14.0.0
My%20App/1.49.03 CFNetwork/711.5.6 Darwin/14.0.0
My%20App/1.35.02 CFNetwork/711.5.6 Darwin/14.0.0

我想匹配以My%20App/- 开头的所有内容都应该允许访问,其他任何内容都应该获得 HTTP 403。

我不想每次应用程序有新版本时都必须更新 nginx 配置。

以下操作正常:

if ($http_user_agent !~* "My%20App/1.55.01 CFNetwork/711.5.6 Darwin/14.0.0") {
    return 403;
}

我想我需要一个涉及 hat( ^) 表示“开头为”的解决方案,但我无法让 nginx 接受我尝试过的任何内容。

提前致谢。

答案1

事实证明,以下操作有效。

if ($http_user_agent !~* "My%20App/*") {
    return 403;
}

相关内容