nginx – 有一种优雅的方法可以同时阻止一堆引用者吗?

为了防止引用垃圾邮件,我的nginx.conf包含这样的部分:

if ($http_referer ~* spamdomain1\.com) {
    return 444;
}
if ($http_referer ~* spamdomain2\.com) {
    return 444;
}
if ($http_referer ~* spamdomain3\.com) {
    return 444;
}

如果用户设置了其中一个引用,这些规则会告诉nginx关闭连接.有没有更优雅的方式来做到这一点?我可以定义这些域的列表,然后说出“如果引用者在此列表中然后返回444”吗?

最佳答案
我会尝试map

map $http_referer $bad_referer {
    default                  0;
    "~spamdomain1.com"       1;
    "~spamdomain2.com"       1;
    "~spamdomain3.com"       1;
}

然后像这样使用它:

if ($bad_referer) {
    return 444;
}

转载注明原文:nginx – 有一种优雅的方法可以同时阻止一堆引用者吗? - 代码日志