Re: Отрицание в valid_referers

Валентин Бартенев ne на vbart.ru
Пн Июл 9 18:45:03 UTC 2012


On Monday 09 July 2012 22:01:42 Sergey Kobzar wrote:
> On 07/09/12 20:43, Валентин Бартенев wrote:
> > On Monday 09 July 2012 20:50:58 Sergey Kobzar wrote:
> >> Необходимо сделать отрицание строки в valid_referers. Сейчас
> >> valid_referers выглядит так:
> >> 
> >> valid_referers none blocked server_names ~(?!domain);
> >> 
> >> 
> >> Но если реферером выступает домен domain-test.com? то блок
> >> 
> >> if ($invalid_referer) {
> >> 
> >>           rewrite ^ /block.php;
> >> 
> >> }
> >> 
> >> Не срабатывает.
> >> 
> >> Что не так?
> > 
> > domain-test.com присутствует в server_names или совпадает с одним из
> > регулярных выражений?
> 
> Я неполно описал задание:
> 
> Есть домен domain.com. Необходимо закрыть доступ, где реферером является
> domain<something>.tld или <something>domain.tld (tld может быть отличным
> от исходного). В server_names присутствует *.domain.com
> 
> Т.е. изначально я предполагал регекспом выделить запросы, где не
> встречается domain в имени сервера...
> 
> Надо бы его переписать, а то получается я полностью строку Referer
> проверяю, а не только server name....
> 

У вас вообще она не правильная. Должно быть как-то так: ^((?!domain)[^/])*/

--
Валентин Бартенев


Подробная информация о списке рассылки nginx-ru