我正在运行 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;
}
...
}