我正在尝试根据 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;
}