Re: access module и rewrite

Sergey Shepelev temotor at gmail.com
Thu Jun 25 00:26:53 MSD 2009


2009/6/24 Konstantin Belov <belov1985 at gmail.com>:
> Sergey Shepelev wrote:
>>
>> 2009/6/24 Konstantin Belov <belov1985 at gmail.com>:
>>
>>>
>>> Конструкция:
>>>
>>> location /registration {
>>>  deny all;
>>>
>>
>> -   rewrite ^/ /url last;
>>
>>>
>>> }
>>>
>>>
>>> в итоге реврайт срабатывает и ограничение доступа не работает :(
>>> как быть?
>>>
>>>
>>>
>>
>> Вам что надо - реврайт или deny?
>>
>
> И реврайт, и deny.
> Я думал, что реврайт не будет выполняться, если есть deny :-)
>
>

ENOSENSE (в этом нет смысла)
Если вам нужно безусловно (deny all) запретить доступ, то нужно
выкинуть строку rewrite.
Если вам нужно безусловно (rewrite ^) реврайтить, то нужно выкинуть строку deny.

Закрыть доступ для конкретных адресов более эффективно через файрвол.

Задача:
- открыть для всех, кроме нескольких адресов и реврайтить /foo* на что-то?

Лучше всего - файрволом.

- закрыть для всех, кроме нескольких адресов и реврайтить /foo* на что-то?

Лучше всего - файрволом.

- на урлы /registration* выдавать 403?

location /registration { return 403; }

- на урлах /registration* редиректить на другой урл, где выдавать 403?

location /registration { rewrite ^ /403 redirect; }
location = /403 { return 403; }

У вас одна из этих или другая задача?

P.S.: обратите внимание на звездочку. Если у вас один конкретный урл
/registration, то его лучше обрабатывать со знаком равно. Если нужно
обрабатывать урлы, которые начинаются на что-то, то 'равно' не
подходит.
location = /registration { #поймает только ровно /registration,
/registration/user не поймает


More information about the nginx-ru mailing list