allow/deny and return

Maxim Dounin mdounin at mdounin.ru
Tue Oct 15 13:45:50 UTC 2013


Hello!

On Tue, Oct 15, 2013 at 03:59:53PM +0300, Gena Makhomed wrote:

> On 15.10.2013 15:45, Maxim Dounin wrote:
> 
> >>В такой конфигурации:
> >>
> >>location /closed {
> >>   allow 10.1.1.1;
> >>   deny all;
> >>   return 200 "secret\n";
> >>}
> >>
> >>allow/deny ни на что не влияют.
> >>
> >>IMHO стоит написать об этом в документации, момент не очевидный с первого взгляда.
> >
> >Если ты готов предолжить хороший способ написать об этом - мы с
> >удовольствием.
> >
> >Я, например, хорошего способа не знаю.  Потому что не с первого
> >взгляда - момент в общем-то очевидный (у прочитавших документацию
> >на модуль rewrite вопросов, как мне кажется, возникнуть не
> >должно), а как это корректно рассказать не читавшим...
> 
> в документации http://nginx.org/en/docs/http/ngx_http_access_module.html
> ничего не написано о том, что директивы allow и deny работают не всегда.
> 
> я прочитал http://nginx.org/en/docs/http/ngx_http_rewrite_module.html
> но так и не смог понять, почему allow и deny тут не будут работать.

Потому что директивы модуля rewrite - это фактически часть выбора 
конфигурации.  И именно от выбранной конфигурации зависит, что 
можно, а что - нельзя.

> это все похоже на BUG, потому что пользователи обычно подразумевают,
> что сначала работает access module и только потом - rewrite_module.
> 
> по крайней мере, в UNIX и даже в WINDOWS все работает именно так:
> если доступа к файлу нет, никаких операций с ним сделать нельзя.

В Антоном конфиге нет файла.  Есть инструкция "при выборе 
конфигурации для обработки запросов вернуть ответ с кодом 200".

(И да, я таки считаю, что возможность задавать тело ответа была 
добавлена в диркетиву return зря, не её это работа.  Надо было 
сделать отдельный модуль a la empty gif, подобных вопросов было бы 
меньше.  Но таки этот фарш уже поздно проворачивать назад.)

-- 
Maxim Dounin
http://nginx.org/en/donation.html



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