我的应用程序上的一些 SQL 密集型 URL(例如/members
)正在受到僵尸网络的攻击。因此,我想禁止任何人发布到这些 URL,同时允许其他人获取它们。
我尝试制作如下嵌套循环:
if ($request_uri ~ .*members^) {
if ($request_method = POST ) {
return 444;
}
}
但是nginx不接受这一点。
我也尝试过这个指令
location ~ "^/members$" {
if ($request_method ~ ^(POST)$ ) {
return 444;
}
}
但是这个也拒绝GET。
所以我很困惑,感谢您的帮助。
答案1
尝试这个:
location ^~ /members {
limit_except GET {
deny all;
}
}
拒绝除 之外的所有请求GET
。