如何在nginx config中阻止特定的用户代理

如何在nginx config中阻止特定的用户代理,nginx,Nginx,如何使用nginx阻止用户代理。 到目前为止,我有这样的想法: if ($http_user_agent = "Mozilla/5.0 (Linux; Android 4.2.2; SGH-M919 Build/JDQ39) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.169 Mobile Safari/537.22") { return 403;} 这是来自此堆栈溢出上的类似线程 我将nginx作为cherrypy服务器的反

如何使用nginx阻止用户代理。 到目前为止,我有这样的想法:

if ($http_user_agent = "Mozilla/5.0 (Linux; Android 4.2.2; SGH-M919 Build/JDQ39) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.169 Mobile Safari/537.22") {
return 403;}
这是来自此堆栈溢出上的类似线程

我将nginx作为cherrypy服务器的反向代理运行。我打算单独使用nginx过滤某个用户代理,但上面的代码在我的服务器上不起作用

这是正确的方法吗?
它没有包含在nginx配置的任何块中。我应该将其添加到“http”块还是“服务器”块

以阻止特定的用户代理我在“服务器”块中包含了以下代码:

它的工作原理与预期一样。

-使用
map
指令


请参见

您在哪里尝试的?你说它不起作用。我已经编辑了这篇文章,以包含你想要的信息。谢谢。根据文档,如果
if
上下文位于位置或服务器内部,请尝试将其添加到服务器块内部,如果希望
if
仅发生在特定位置,请将其添加到位置内部。您的建议有效。把它放在“服务器”块中似乎是可行的,我使用的“如果”条件语法是错误的,很高兴你能弄明白这是
map
ping:1的一个很好的例子。如果在位置上下文中是唯一邪恶的。此处不适用,这是在服务器级别。2.即使在位置上下文中,返回403也是100%安全的。所以这显然是if的一种非邪恶用法。引入依赖可能比偶尔小心地使用一些棘手的东西更邪恶。尤其是一些如此巨大和复杂却不为人所知的东西。11个步骤中的那些“简单配置指令”似乎一点也不容易。@geira我想知道这些ifs是否可以在“http”块中使用,而不是在“服务器”块中使用,这样我就可以全局实现这些ifs(规则),而不是通过主机实现。请解释更多。上面的用户代理看起来如何,将403返回到那些?考虑返回444。这是一个自定义的nginx代码,可以在没有响应的情况下断开连接。
if ($http_user_agent = "Mozilla/5.0 (Linux; Android 4.2.2; SGH-M919 Build/JDQ39) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.169 Mobile Safari/537.22"){
    return 403;
}