Как стать автором
Обновить

Комментарии 10

нам вполне подходит модуль ngx_http_try_files_module и его директива try_files

try_files описана в ngx_http_core_module
Документация устарела. По факту сейчас (для версии 1.21):
$ grep -rnF 'ngx_string("try_files")' ./nginx-1.21.0/src/
./nginx-1.21.0/src/http/modules/ngx_http_try_files_module.c:36:    { ngx_string("try_files"),

Для старых версий действительно:
$ grep -rnF 'ngx_string("try_files")' ./nginx-1.11.5/src/
./nginx-1.11.5/src/http/ngx_http_core_module.c:637:    { ngx_string("try_files"),

От слова "update'ить" у меня глаз дёргается, есть такое слово "обновлять".

Извините, не сдержался...

У меня от финальной фразы "На сим всё." тоже глаз дернулся))

Всегда думал, что ту два варианта, либо "На этом всё", либо "За сим всё".

Я наверное чего-то не понимаю.. но по какой причине в локейшене pay возникает 404?

Откуда взялась установка что такого каталога не существует?

Встречный вопрос: «Почему он должен быть?»
Описание местоположения не подразумевает создание каталога или файла.
Возможно, этот момент стоило указать явно, но в данном случае отдача контента осуществляется директивой return, поэтому наличие каталога не требуется (а точнее, наоборот, вредит).

Я все еще не понимаю.

Откуда смелое предположение что такого каталога не существует? Я возможно заблуждаюсь, но при наличии оного вся эта изящная схема работает несколько не так как предполагается?

Именно это мне и не нравится - использование сущности предназначенной несколько для иного.

Откуда смелое предположение что такого каталога не существует?/blockquote>

Почему предположение? Мы намеренно создаём рабочую для нас конфигурацию с отдачей контента на этапе NGX_HTTP_SERVER_REWRITE_PHASE. Каталоги/файлы для этого нам не нужны. Задача ведь в том, чтобы отдать контент как можно раньше, не дергая fpm, базу и т.д.

Я возможно заблуждаюсь, но при наличии оного вся эта изящная схема работает несколько не так как предполагается?

При наличии каталога данная схема и не должна работать, но наличие каталога "/pay" (в соответствующем «root») говорит о том, что мы хотим формировать контент «задействовав» данную директорию. То есть речь идёт о фазе NGX_HTTP_CONTENT_PHASE, следовательно описанная проблема уже и так не возникает, так как мы перешагнули этап NGX_HTTP_PREACCESS_PHASE.
Тут помимо сказанного есть ещё и второй момент.
Если не делать дальнейшую постобработку 503-х, то данное решение может быть даже во вред. По сути здесь мы (частично) заменили отдачу 402-х на отдачу 503-х.
При этом 402-е мы отдавали в четвертой фазе, а 503-е будем отдавать сначала поднявшись до 9-й, опустившись до 4-й и снова поднявшись до 6-й. Да, это микросекунды, но решение получается абсурдным если отдача 402-х не предполагает существенно большего контента чем 503-е или если дальше не делать анализ логов на наличие 503-х, с перманентной блокировкой ботов и т.п.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории