Nginx автоматически загружает index.html без указания

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 не загружен. Я проверял много раз и уверен в файле.

grep result

default config file

1
задан 23 November 2017 в 21:24

1 ответ

Когда в других отношениях неуказанный, 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 директива:

Синтаксис: indexfile ...;
Значение по умолчанию: index index.html;
Контекст: http, server, location

Определяет файлы, которые будут использоваться в качестве индекса. Имя файла может содержать переменные. Файлы проверяются в указанном порядке. Последний элемент списка может быть файлом с полным путем. Пример:

index index.$geo.html index.0.html /index.html;

Нужно отметить, что использование индексного файла вызывает внутреннее перенаправление, и запрос может быть обработан в другом месте. Например, со следующей конфигурацией:

location = / {
    index index.html;
}

location / {
    ...
}

... “/” запрос будет на самом деле обработан во втором месте как “/index.html”.

1
ответ дан 23 November 2017 в 21:24

Другие вопросы по тегам:

Похожие вопросы: