Re: Синтаксис конфигурационного файла

Gena Makhomed gmm at csdoc.com
Mon Mar 16 23:52:57 MSK 2009


On Monday, March 16, 2009 at 21:11:52, Denis V. Roghnovskiy wrote:

DVR> Мне потребовалось реализовать в конфиге nginx проверку реферала,
DVR> все хорошо, но вот не найду нигде как оформить синтаксис.

http://sysoev.ru/nginx/docs/http/ngx_http_referer_module.html

?

DVR> Сейчас все выглядит так:

DVR>                 if ($http_referer ~ .some_value.){
DVR>                     return 403;
DVR>                 }
DVR>                 if ($http_referer ~ .some_value_2.){
DVR>                     return 403;
DVR>                 }
DVR>                 if ($http_referer ~ .some_value_3.){
DVR>                     return 403;
DVR>                 }

DVR> В итоге количество вхождений увеличивается ровно на количество
DVR> if`ов, возможна ли реализация "в одну строку" и проверкой
DVR> в одном if`е но с оператором подобным 'or' ?

если надо блокировать только адреса из определенного списка
в referer - подозреваю, что проверку можно написать так:

if ( $invalid_referer = 0 ) {
     return 403;
}

PS можно было бы слегка доработать напильником модуль
   http_referer, добавив директиву invalid_referers,
   когда все остальные referers будут считаться valid,
   а только для referes из даного списка $invalid_referer
   будет не равно 0. одновременное присутствие в конфиге
   директив valid_referers и invalid_referers - это ошибка,
   потому что может быть задана только какая-то одна директива.

-- 
Best regards,
 Gena






More information about the nginx-ru mailing list