最近,我的网站收到许多来自使用不同域名的垃圾邮件引荐来源的点击,它们都是.ru
域名。我在服务器上使用 Nginx。
目前,我正在使用以下代码来阻止流行的垃圾邮件引荐来源,例如 Semalt,但我无法插入每个.ru
域名,因为他们总是会提出新的域名。
if ($http_referer ~ "7makemoneyonline\.com|semalt\.com|Get-Free-Traffic-Now\.com) {
return 403;
}
我的问题是:如何阻止来自任何.ru
域名的所有请求,而不干扰ru
名称中包含字母的其他域名,例如:d汝格斯网?
答案1
匹配域名的正则表达式应该使用 token 锚定到行尾$
。例如,要匹配www.example.org
,example.com
您.net
可以使用:
if ($http_referer ~* (www\.example\.org|example\.com|\.net)$ ) { ... }
这是多个候选字符,用|
括号分隔并括起来。最后一个$
字符将其固定在行尾。