Re: Как написать такой try files. Или как заблокировать логгирование 403?

Ruslan Ermilov ru на nginx.com
Вс Ноя 6 05:53:45 UTC 2011


On Sat, Nov 05, 2011 at 07:57:11PM -0400, Balancer wrote:
> Есть такая задача. По полученной ссылке
> нужно сперва обработать привычным
> образом ссылку прямо, ссылку в виде
> индексного файла по умолчанию, и если
> таких нет — то обработать фреймворком.
> 
> Делаю так:
> try_files   $uri $uri/ @bors =404;

Последним аргументом может идти либо URI,
либо named @location, либо =код, но не
так как написано.

> Всё работает прекрасно до того момента,
> пока не окажется существующим каталог
> $uri/ без индексного файла. В этом случае
> (autoindex, понятно, выключен) вылетает 403-я
> ошибка. А это вполне обычная ситуация —
> например, ссылка обрабатывается
> фреймворком, но внутри лежат обычные
> файлы.
> 
> Вылечить не сложно:
> error_page 403 = @bors;
> и всё работает. Кроме черпака дёгтя —
> после этого логи забиты 403-й ошибкой.
> 
> Собственно, вопрос. Можно ли как-то
> избежать этой проблемы при try_files (не
> генерировать 403-й ошибкой, если
> выключен autoindex, а проверка в середине),
> либо хотя бы скрыть вывод 403-й ошибки в
> лог-файл (остальные ошибки выводить
> нужно).

А что мешает явно в try_files проверять
индексные файлы?

try_files   $uri $uri/index.html @bors;

Ну то есть прямо как в документации:

http://nginx.org/en/docs/http/ngx_http_core_module.html#try_files



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