Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Синтаксис конфигурационного файла
- To: "Denis V. Roghnovskiy" <nginx-ru@xxxxxxxxx>
- Subject: Re: Синтаксис конфигурационного файла
- From: Gena Makhomed <gmm@xxxxxxxxx>
- Date: Mon, 16 Mar 2009 22:52:57 +0200
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=csdoc.com; s=dkim; t=1237236790; bh=qoGv3NW63/2Y4KuA8TRrP8BxxreRXH6hcVK1W0LfauM=; h=Date:From:X-Mailer:X-Priority:Message-ID:To:Subject:In-Reply-To: References:MIME-Version:Content-Type:Content-Transfer-Encoding; b=g+9iTgSc49hV3oEEP3IgQalzwLehleOxyrT+VOP7hyx5ZagqKNolZLkq6IYwp/9Sw lbRtT4/1ILiiZHQoc1dQ5YmlqDsTGfA/CuUUKfDzMq/glAdEZ+2aloblg7fjL7wogeY f0RZG46xDOXVg+SjsEwlfwBHRKB8jhtxoA2UOpk=
- In-reply-to: <1608793199.20090317001152@xxxxxxxxxx>
- References: <1608793199.20090317001152@xxxxxxxxxx>
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
|