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

时间:2014-03-03 10:21:28

标签: 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过滤某个用户代理,但上面的代码在我的服务器上不起作用。

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

2 个答案:

答案 0 :(得分:5)

为了阻止特定用户代理,我将此代码包含在“server”块中:

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;
}

它按预期工作。

答案 1 :(得分:1)

If's are evil - 使用map指令。

请参阅Nginx Ultimate Bad Bot Blocker