Nginx: zezwól na dostęp tylko polecającemu, który pasuje do nazwy lokalizacji
Czy istnieje sposób, w nginx, zezwalający na dostęp do „lokalizacji” tylko klientom z odsyłaczem pasującym do nazwy bieżącej lokalizacji?
Oto scenariusz:
itd itd
Chcę, aby zawartość lokalizacji bar.org była dostępna tylko wtedy, gdy strona odsyłająca to bar.org. To samo dotyczy zeta.net
Wiem, że mogę to zrobić „statycznie”, ale jest wiele takich lokalizacji i muszę znaleźć sposób na to, aby zdefiniować tylko jedną „dynamiczną” lokalizację.
Przepraszam za mój zły język angielski.
ROZWIĄZANIE
Rozwiązałem w ten sposób:
location ~/([a-zA-Z0-9\.\-]*)/* {
set $match "$1::$http_referer";
if ($match !~* ^(.+)::http[s]*://[www]*[.]*\1.*$ ) {
return 403;
}
}