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