背景
如果因为某种原因,需要过滤来自某个IP的请求(如垃圾请求IP地址)或者来自某些user-agent的请求(如某些爬虫),应该如何操作?

实现
经过搜寻,nginx提供了强大的if判断机制,我们完全可以通过读取$remote_addr来判断来源IP地址,通过读取$http_user_agent来判断user-agent信息,并进行额外处理。模板如下,直接把下面的内容放在server节或location节都是可以的。

server {

    ......

    # 防止特定IP的请求
    if ($remote_addr = 255.255.255.255) {
        return 403;
    }

    # 防止特定user-agent的请求
    if ($http_user_agent ~* "Chrome/00.0.0000.00") {
        rewrite 403;
    }

    ......

}

这里的操作是直接返回403错误,可以替换成其他任何操作

文档更新时间: 2022-10-09 01:40   作者:月影鹏鹏
IT运维支持-AIWALY-月影工作室