Nginx 通过引荐来源限制速率?

Nginx 通过引荐来源限制速率?

我已经成功设置了 IP 地址的速率限制,如下所示,

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

但我想知道是否可以对引荐来源做同样的事情?例如,如果某个网站被放置在第三方网站的 iframe 中,这会产生太多流量而无法处理。

我无法在任何地方找到任何针对引荐来源的 nginx 变量。

我不想完全阻止流量,只是想限制来自 iframe 的流量。

这可能吗?或者可以用其他方法解决?

谢谢。

答案1

@R1CH_TLTwitter 上建议使用类似这样的方法:

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;
}

相关内容