Bir grup yönlendiriciyi aynı anda engellemenin zarif bir yolu var mı?


21

Yönlendiren spam’ı önlemek için, nginx.conf'um şunun gibi bir bölüm içerir:

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

Bu kurallar, kullanıcı bu yönlendirenlerden birine sahipse nginx'e yalnızca bağlantıyı kapatmasını söyler. Bunu yapmanın daha zarif bir yolu var mı? Bu alan adlarının bir listesini tanımlayabilir ve “Yönlendirici bu listede ise 444'e dönebilir” gibi bir şey söyleyebilir miyim?


Örneklemdeki gibi oldukça büyük bir dosya oluşturun ve gerektiğinde dosya olarak kullanın.
Hrvoje Špoljar

Yanıtlar:


31

Bir deneyeceğim map:

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

Sonra böyle kullanın:

if ($bad_referer) {
    return 444;
}

1
Harita bir karma tablo kullandığından, bu yaklaşım bir dizi bireysel kontrolden daha iyi sonuç verecektir. Kullanılabilecek seçenekler için dokümanları okuyun, listelenir hostnamesve muhtemelen includelistelendikleri ayrı bir dosyaya bakmak, bakımı daha kolaylaştırabilir.
Brian

İlgili dokümanları okumak, mapbir ~*operatörün regex kullanarak belirli referansları eşleştirmek için regex kullanıp kullanamayacağını görmekle ilgiliydi, çünkü OP operatörü kullanarak regex eşleştirmesi yapıyor ve gerçekten de basitçe "~*spamdomain4.com" 1;hile yapacağınız gibi harita kuralını belirtmek gibi . Temiz!
Hrvoje Špoljar

Haklısın ve bunun yine de onu kullanması gerekiyor.
Michael Hampton

hostnamesSeçeneği kullanarak basit olurdu.spamdomain4.com 1;
Brian

4
@Bari Başvuru alanı sadece bir ana bilgisayar adı değil, tam bir URL'dir. Yani bu işe yaramaz.
Michael Hampton

13

ORÖrneğin, bir çoklu eşleşme ifadesi oluşturmak için mantıksal kullanabilirsiniz.

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

Yorum başına EDIT ; break;bloktan çıkarma


2
Break yönergesine asla ulaşılmayacaktır, çünkü geri dönüş mevcut isteğin işlenmesini durdurur.
Xavier Lucas

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.