Welcome! Log In Create A New Profile

Advanced

Re: allow/deny and return

Maxim Dounin
October 16, 2013 11:22AM
Hello!

On Wed, Oct 16, 2013 at 04:59:55PM +0300, Gena Makhomed wrote:

> On 15.10.2013 19:57, Maxim Dounin wrote:
>
> >Все директивы модуля rewrite - это в той или иной степени выбор
> >конфигурации, даже если они unconditional. E.g., банальный set:
> >
> > set $file ".htpasswd";
> > auth_basic_user_file /path/to/$file;
> >
> >так или иначе определяет конфигурацию, которая будет в дальнейшем
> >использоваться для обработки запроса. Выполнять сначала
> >access-проверки, и только потом директивы модуля rewrite - ни разу
> >не вариант.
>
> а если выполнять сначала только set (внутри location и внутри if)
> потом access фазу и потом уже все остальные директивы модуля rewrite?
> тогда и обратная совместимость с set не сломается и access-проверки
> сработают всегда раньше, чем "опасные" директивы return и rewrite.

Я даже и не знаю, что сказать. Вот, например, конфиг для
размышлений:

set $file ".htpasswd";
if ($true_or_false) {
set $file ".htpasswd2";
}

auth_basic_user_file /path/to/$file;

Или так:

if ($evil) {
return 444;
}

set $file ".htpasswd";
auth_basic_user_file /path/to/$file;

> кстати, если добавить директиву handler, которая работает после фазы
> try_files, то можно будет писать конфиг nginx без лишней избыточности:
>
> location /admin {
> satisfy any;
> set $file ".htpasswd";
> auth_basic_user_file /path/to/$file;
> allow 10.1.1.1;
> deny all;
> handler @default;
> }

[...]

Можно добавить множество новых директив. Но, как показывает
практика, это не избавляет от старых проблем, а только добавляет
новых. Не надо умножать сущности без необходимости.

[...]

> >С якобы багом разобрались - отлично. Возвращаемся к исходному
> >разговору - если есть идеи, как _хорошо_ объяснить пользователям,
> >почему так - you are welcome.
>
> почему return/rewrite работает раньше access - я смог нормально понять
> только после того, как прочитал http://www.aosabook.org/en/nginx.html
> начиная со слов "Which brings us to the phases." причем, вот этой:
>
> ...the request goes through six phases:
>
> 1. server rewrite phase
> 2. location phase
> 3. location rewrite phase (which can bring the request back to the
> previous phase)
> 4. access control phase
> 5. try_files phase
> 6. log phase
>
> очень важной информации нет в официальной документации.

Эта информация - подробности реализации (неправильно и не
полностью описанные, кстати, на самом деле фаз 11). Вываливать
эти подробности на пользователей - плохая идея. Человекопонятная
и не зависящая от реализации часть этой информации - в заметных
объемах присутсвует в документации по rewrite и во водной статье
"Как nginx обрабатывает запросы" тут:

http://nginx.org/en/docs/http/request_processing.html

> >Аналогичный конфиг, кстати, рассматривается в подробностях тут:
> >
> >http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#internals
>
> весь остальной псевдокод после "match of regular expression" разве
> не должен быть с отступом в 4 пробела, таким же как и у "return 403" ?

Скорее нет, чем да.

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

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

allow/deny and return

Anton Yuzhaninov October 15, 2013 08:28AM

Re: allow/deny and return

Maxim Dounin October 15, 2013 08:46AM

Re: allow/deny and return

Ruslan Ermilov October 15, 2013 08:54AM

Re: allow/deny and return

Gena Makhomed October 15, 2013 09:00AM

Re: allow/deny and return

Maxim Dounin October 15, 2013 09:46AM

Re: allow/deny and return

Gena Makhomed October 15, 2013 12:16PM

Re: allow/deny and return

Maxim Dounin October 15, 2013 01:00PM

Re: allow/deny and return

Oleksandr V. Typlyns'kyi October 16, 2013 03:40AM

Re: allow/deny and return

Gena Makhomed October 16, 2013 10:02AM

Re: allow/deny and return

Maxim Dounin October 16, 2013 11:22AM

Re: allow/deny and return

Gena Makhomed October 16, 2013 12:58PM

Re: allow/deny and return

Maxim Dounin October 16, 2013 01:34PM

Re: allow/deny and return

Gena Makhomed October 16, 2013 02:30PM

Re: allow/deny and return

Maxim Dounin October 16, 2013 07:20PM

Re: allow/deny and return

Gena Makhomed October 17, 2013 08:56AM

Re: allow/deny and return

Maxim Dounin October 17, 2013 10:10AM

Re: allow/deny and return

Gena Makhomed October 17, 2013 02:14PM

Re: allow/deny and return

Maxim Dounin October 18, 2013 07:42AM

Re: allow/deny and return

Gena Makhomed October 18, 2013 09:20AM

Re: allow/deny and return

Maxim Dounin October 18, 2013 09:52AM

Re: allow/deny and return

Gena Makhomed October 20, 2013 09:28AM

Re: allow/deny and return

Maxim Dounin October 21, 2013 08:38AM

Re: allow/deny and return

Илья Шипицин October 21, 2013 09:02AM

Re: allow/deny and return

Maxim Dounin October 21, 2013 11:50AM

Re: allow/deny and return

Gena Makhomed October 21, 2013 01:46PM

Re: allow/deny and return

Maxim Dounin October 21, 2013 02:38PM

Re: allow/deny and return

Gena Makhomed October 21, 2013 05:46PM

Re: allow/deny and return

Maxim Dounin October 21, 2013 06:34PM

error_page 404 и ngx_http_index_module

Gena Makhomed August 22, 2014 03:12PM

Re: error_page 404 и ngx_http_index_module

Maxim Dounin August 25, 2014 08:48AM

Re: error_page 404 и ngx_http_index_modul e

Gena Makhomed August 26, 2014 03:24PM

Re: allow/deny and return

Anton Yuzhaninov October 16, 2013 05:14AM

Re: allow/deny and return

Ruslan Ermilov October 16, 2013 01:26PM

Re: allow/deny and return

Maxim Dounin October 16, 2013 02:20PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 300
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready