W celu uniknięcia spamu odsyłającego mój plik nginx.conf zawiera następującą sekcję:
if ($http_referer ~* spamdomain1\.com) {
return 444;
}
if ($http_referer ~* spamdomain2\.com) {
return 444;
}
if ($http_referer ~* spamdomain3\.com) {
return 444;
}
Reguły te mówią nginxowi, aby zamknął połączenie, jeśli użytkownik ma ustawione jedno z tych poleceń. Czy jest na to bardziej elegancki sposób? Czy mogę zdefiniować listę tych domen, a następnie powiedzieć coś takiego: „Jeśli polecający jest na tej liście, zwróć 444”?
Odpowiedzi:
Spróbowałbym
map
:Następnie użyj go w następujący sposób:
źródło
hostnames
i possiblelyinclude
osobnego pliku, w którym są notowane mógł łatwiej utrzymać.map
byłem zainteresowany, aby sprawdzić, czy można użyć wyrażenia regularnego, aby dopasować określone strony odsyłające, ponieważ OP wykonuje dopasowanie wyrażenia regularnego za pomocą~*
operatora, a nawet po prostu określając regułę mapy, tak jak"~*spamdomain4.com" 1;
to zrobi. Schludny!hostnames
opcji, byłoby to po prostu.spamdomain4.com 1;
Możesz użyć logiki,
OR
aby stworzyć jedną instrukcję wielokrotnego dopasowania, npEDYCJA na komentarz; usuwanie
break;
z blokuźródło
ngx_http_referer_module to inny sposób na zrobienie tego. Przykład z blokowania spamu przez osoby odsyłające :
źródło