Nginx——如果是referer,则将(x-forwarded-for)ip添加到黑名单中

Nginx——如果是referer,则将(x-forwarded-for)ip添加到黑名单中,nginx,redirect,http-status-code-301,Nginx,Redirect,Http Status Code 301,我已经编写了一个基本的http referer重定向程序,如下所示: if ($http_referer ~* (google|yahoo|bing|duckduckgo)) { return 301 https://altavista.com; } 我的目标是这样的 if ($http_referer ~* (google|yahoo|bing|duckduckgo)) { add $x-forwarded-for bad_ips.txt; <-- this line is

我已经编写了一个基本的http referer重定向程序,如下所示:

if ($http_referer ~* (google|yahoo|bing|duckduckgo)) {  return 301 https://altavista.com; }
我的目标是这样的

if ($http_referer ~* (google|yahoo|bing|duckduckgo)) {
    add $x-forwarded-for bad_ips.txt; <-- this line is the question (x-forwarded-for because it's behind cloudflare)
    return 301 https://altavista.com; 
}
if ($bad_ip) { 
    return 301 https://altavista.com; 
}
if($http|u referer~*(谷歌|雅虎|必应| duckduckgo)){

添加$x-forwarded-for bad_ips.txt;,直到我记得没有直接的方法来执行此操作

根据博客,付费选项可以使用Nginx Plus

除此之外,我现在可以看到两个选项:

  • 与LUA模块一起使用。您需要做的是

  • 在每次请求时,将IP写入文件
  • 在从文件读取的每个请求上,如果存在IP,则301重定向
  • 如果您不想使用OpenResty,那么您也可以

    [我现在担心的是效率。这种方法可能会增加性能开销,因为每次请求都必须解析文件。]

  • 与Nginx一起使用Fail2Ban


  • 我想在评论中添加这一点,但我没有足够的声誉发表评论。

    为什么不使用
    fail2ban
    ?我可以使用fail2ban,但如果可能的话,我真的希望它链接到上面的指令。