Gena Makhomed
October 18, 2013 09:20AM
On 18.10.2013 14:41, Maxim Dounin wrote:

>>> Как уже и предлагалось - методом правильного документирования того
>>> факта, что директивы модуля rewrite - это часть процесса выбора
>>> конфигурации. И всяческие директивы allow/deny/whatever -
>>> применяются уже после того, как оный выбор случился.

>> а что делать, если необходимо, чтобы директивы модуля
>> rewrite отработали после проверок allow/deny/whatever?

> То же самое, что и в других подобных ситуациях - использовать
> другие механизмы.

а из других механизмов у нас в наличии есть только try_files.
и в этом случае добавление try_files решило проблему с if'ом.

>>> Повторяю: добавление try_files не решило проблем с if'ом. В
>>> результате как раз с проблемами if'а - ничего не было сделано, а
>>> вместо этого усилия были потрачены на try_files и борьбу с его
>>> проблемами. Если бы вместо добавления try_files соответствующие
>>> усилия были потрачены именно на _решение_ проблем - было бы лучше.

>> никто и не обещал, что try_files решит все проблемы с if.
>>
>> но многие случаи написания конфигурации try_files упрощает.
>>
>> причем это вне зависимости от того, есть у if проблемы или их нет.
>>
>> и во многих случаях можно обойтись try_files без использования if.

> Да-да, именно так. И в сухом остатке мы имеем больше проблем, чем
> их было до введения директивы try_files.

если считать только количество записей в багтрекере, тогда да,
действительно так и будет: "в сухом остатке мы имеем больше
проблем, чем их было до введения директивы try_files".

если же посмотреть со стороны пользователей - в большинстве случаев
написание конфигурации стало проще, удобнее и безглючнее, потому что
вместо фигурного выпиливания лобзиком работающей конфигурации
на основе директив if + return + error_page
+ recursive_error_pages + proxy_intercept_errors
+ fastcgi_intercept_errors + scgi_intercept_errors
+ uwsgi_intercept_errors + ...
можно взять директиву try_files с простой и понятной логикой работы,
которая подходит для большинства наиболее частоиспользуемых случаев.

даже если бы директива if всегда работала бы идеально - добавление
try_files всеравно имеет смысл из-за значительного упрощения конфига.

для решения всех проблем с if ресурсов надо потратить в десятки,
а то и в сотни раз больше, чем их было потрачено на добавление
новой директивы try_files и еще одной фазы обработки запроса.

если смотреть с точки зрения минимизации количества не закрытых
багов в багтрекере, тогда следовало бы сначала исправить все глюки
в работе директивы if и только потом уже добавлять директиву try_files

если смотреть с точки зрения максимизации удобства работы пользователей,
то имеет смысл сначала добавить директиву try_files, и только после
этого уже браться за более сложную задачу исправления всех ошибок в
работе диркетивы if. (вообще не уверен, что эта задача имеет решение)

>>> И это общая проблема всех подобных попыток "уменьшить количество
>>> случаев" вместо реального решения проблемы. Решать проблему всё
>>> равно рано или поздно придётся, и откладывание этого решения -
>>> лишь ухудшает ситуацию.
>>
>> что в таком случае можно считать рельным решением проблем директивы if,
>> - чтобы не осталось ни одного глюка из http://wiki.nginx.org/IfIsEvil ?
>>
>> про проблемы директивы if говорится очень давно, но видимо эти проблемы
>> нетривиальные, раз до сих пор никому так и не удалось их реально решить
>
> Я описал правильное с моей точки зрения решение ещё при создании
> этой статьи на wiki:
>
> http://wiki.nginx.org/IfIsEvil#Why_this_happens_and_still_not_fixed
>
> : Looks like the only correct fix would be to disable non-rewrite
> : directives inside if completely. It would break many configuration
> : out there though, so wasn't done yet.
>
> Возможно, хорошим альтернативным вариантом будет вычищение всех
> проблем, которые возникают при использовании неявных location'ов.

"вычищение всех проблем, которые возникают при использовании
неявных location'ов" - это будет очень нетривиальная задача.

кстати, если проблемы с директивой if решать способом
"disable non-rewrite directives inside if completely"

тогда точно таким же способом можно решить и все проблемы c try_files,
сказав что эта директива не совместима с директивой alias, нужен root.

--
Best regards,
Gena

_______________________________________________
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: 141
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