始终针对 IP 集使用特定响应进行响应

始终针对 IP 集使用特定响应进行响应

我正在运行 nginx 服务器,并且收到大量请求/admin.php文件的机器人,尽管我从未安装过 PHP。因此,我决定,与其简单地阻止这些机器人,不如为它们设置一个惊喜。我已经真的我向每个请求(例如,,.php等等)发送一个大的 gzip 压缩文件。.aspx/admin

    location ~ (admin)|(wp-admin)|(\.php)|(.aspx) {
            proxy_pass              http://localhost:8085;

            proxy_set_header        X-Real-IP       $remote_addr;
            proxy_set_header        X-Forwarded-Protocol    $scheme;
    }

(我有一个正在运行的服务器:8085,它只发送大的压缩块。)

现在,我发现一个来自巴拿马的 IP 地址不断向我发送 SQL 注入。他们这样做非常频繁,以至于他们一直占据着我日志中客户端请求的顶部。

我可以阻止他们,但那并不好玩。我如何始终代理传递来自特定 IP 的所有请求?无论目标资源或主机名是什么。

答案1

您可以使用map块和特殊内部的位置(仅在内部 URI 重写后才可访问):

map $remote_addr $block {
    A.B.C.D  1;
    E.F.G.H  1;
    ...
}
server {
    ...
    if ($block) {
        rewrite ^ /surprise last;
    }
    rewrite (admin|wp-admin|\.php|\.aspx) /surprise last;
    location = /surprise {
        internal;
        proxy_pass              http://localhost:8085;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-Protocol    $scheme;
    }
    ...
}

相关内容