http://localhost:8001/whatever
загружает /var/www/nginx.html
, но http://localhost:8001
загружает /var/www/index.html
Согласно результату grep, нет никаких комментариев index.html
, упомянутых вообще.
То, что я ожидаю, это загрузить nginx.html
и во втором случае.
Единственное, что я обнаружил, это когда я удаляю $uri/
из try_files
, он работает как положено.
Но в основном, где находится index.html
конфигурация? это поведение по умолчанию nginx?
Хорошо бы сказать, что index.php
не загружен. Я проверял много раз и уверен в файле.
Когда в других отношениях неуказанный, index
директива имеет подразумеваемое значение по умолчанию index.html
. Который присутствует в Вашем корне документа. (См. документацию, ниже которой я включал значения по умолчанию детализации и такой),
Если Вы хотите изменить то, что это служит своей индексной страницей, необходимо определить новое index
директива, такая, что Вы добавляете это к Вашему /
блок местоположения, или применяют его глобально, просто поместив его вне блоков местоположения, но все еще в Вашем блоке сервера:
index nginx.html;
Это говорит nginx вместо этого искать другой индексный файл.
Проблема, которую Вы видите, состоит в том потому что /
блок местоположения только применяется, если Вы имеете / указанный, и потому что Вы не позволяете autoindex
и потому что /whatever
Ваш URI, и это не существует или как файл или как каталог, он отступает к Вашей третьей опции, nginx.html
файл. Я знаю, что это парадоксально как пустой URI или a /
URI обычно означает, "Обрабатывают это на location / { }
блок, но более подразумевается в мире, что это берет Вас к домашней или индексной странице данного веб-сайта, и именно поэтому index
директива существует.
Необходимо сказать систему, что рассматривать как индексный файл для любой конфигурации. Вы не можете положиться только на try_files
в Вашем /
блок местоположения, необходимо сказать это, каков индексный файл должен быть. Я всегда определяю это, даже если значения по умолчанию хорошо работают для меня.
Обратите внимание на это, если Вы не определяете URI, try_files
отступает к index
директива, таким образом, запрос к http://foobarbaz.foo:8510
достигнет nginx блока сервера, слушающего на порте 8510 для имени сервера / $HOST
запись запроса foobarbaz.foo
, с пустым URI, и технически будет иметь nginx, внутренне, попытаться служить значению по умолчанию index.html
индексная страница из-за Вашей конфигурации, не указывающей другое index
служить для любого типа запроса.
Из связанной nginx документации index
директива:
Синтаксис:
index
file ...;
Значение по умолчанию:index index.html;
Контекст:http, server, location
Определяет файлы, которые будут использоваться в качестве индекса. Имя файла может содержать переменные. Файлы проверяются в указанном порядке. Последний элемент списка может быть файлом с полным путем. Пример:
index index.$geo.html index.0.html /index.html;
Нужно отметить, что использование индексного файла вызывает внутреннее перенаправление, и запрос может быть обработан в другом месте. Например, со следующей конфигурацией:
location = / { index index.html; } location / { ... }
... “/” запрос будет на самом деле обработан во втором месте как “/index.html”.