我已经成功设置了 IP 地址的速率限制,如下所示,
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
但我想知道是否可以对引荐来源做同样的事情?例如,如果某个网站被放置在第三方网站的 iframe 中,这会产生太多流量而无法处理。
我无法在任何地方找到任何针对引荐来源的 nginx 变量。
我不想完全阻止流量,只是想限制来自 iframe 的流量。
这可能吗?或者可以用其他方法解决?
谢谢。
答案1
@R1CH_TL
Twitter 上建议使用类似这样的方法:
map $http_referer $limit_ip_key {
default $binary_remote_addr;
"http://domain-to-limit.co.uk/" 1;
}
limit_req_zone $limit_ip_key zone=two:10m rate=1r/s;
这种方法有效吗?它会比 silasistefan 的解决方案更好吗?
答案2
您是否尝试过这样的事情?
location / {
error_page 410 = @ads;
# if referrer is invalid then limit
valid_referers none blocked www.domain.com;
if ($invalid_referer) {
return 410;
}
# if ?isAD=1 then limit
if ($arg_isAD = "1"){
return 410;
}
root /var/www;
}
location @ads {
limit_req zone=one burst=5;
}