Re: Как работает / как отлючить директиву index

Maxim Dounin mdounin at mdounin.ru
Mon Sep 16 12:43:39 UTC 2013


Hello!

On Mon, Sep 16, 2013 at 04:00:47AM -0400, Yury Pavlovsky wrote:

> Спасибо, документацию читал.
> Повторюсь, исчерпывающего формального описания работы директивы там нет,
> передан лишь её смысл. Видимо, раз в документации никто до этого не написал,
> вряд ли мне стоит рассчитывать, что напишут тут, тем более что знают это
> только разработчики...

Повторюсь - прочитайте присланную ссылку ещё раз, внимательно.  В 
частности, со вот этот кусок:

: Обработка запроса “/” более сложная. Ему соответствует только 
: префиксный location “/”, поэтому запрос обрабатывается в нём. 
: Затем директива index проверяет существование индексных файлов 
: согласно своих параметров и директиве “root /data/www”. Если файл 
: /data/www/index.html не существует, а файл /data/www/index.php 
: : существует, то директива делает внутреннее перенаправление на 
: “/index.php” и nginx снова сопоставляет его с location’ами, как 
: если бы такой запрос был послан клиентом. Как мы видели ранее, 
: перенаправленный запрос будет в конечном итоге обработан сервером 
: FastCGI.

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

На заданный вами вопрос о порядке проверки индексных файлов и 
location'ов он совершенно однозначно отвечает.  Как разработчик 
могу также уверить вас, что знают это - не только разработчики.

> Если есть способ отключить директиву "наверняка", напишите, пожалуйста.
> Думал можно пересобрать nginx без модуля ngx_http_index_module, но мой
> `nginx -V` (оф дебиан-репозитарий) не содержит ngx_http_index_module. Видимо
> этот модуль вшили в ядро?

Модуль index не отключается и всегда обрабатывает запросы, 
оканчивающиеся слэшом, если обработка не перехвачена каким-либо из 
безусловных обработчиков (proxy_pass, fastcgi_pass и т.п.) и/или 
не прервана в процессе обриботки.  Если очень хочется, чтобы index 
не работал никогда, можно сделать так:

    location ~ /$ { return 403; }

Но я сомневаюсь, что такая конфигурация вас устроит, с учётом 
того, что обычно даже самый простой сайт требует index для 
корректной работы.  См. документацию выше.

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



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