История изменений
Исправление tiandrey, (текущая версия) :
Я убил на это час, но наконец-то понял, почему всё так, а не иначе.
Итак, почему эта конфигурация не работает так, как ты хочешь:
-
index
обрабатывает только те запросы, которые оканчиваются на/
-
try_files
проверяет наличие указанных файлов/директорий, если находит - отдаёт, при этом uri не переписывается, всё обрабатывается в контексте текущей локации -
try_files $uri $uri/ /;
- проверяет наличие такого файла или такой директории. Если nginx отдаёт ресурс, являющийся директорией, а uri не оканчивается на слеш, тоindex
не включается в работу, и nginx отдаёт редирект на uri директории + слеш в конце. -
$uri
дляtry_files
это проверка существования файла, а$uri/
- проверка существования директории (да в принципе любая строка, которая не оканчивается на слеш до раскрытия переменных - это проверка на файл, а которая оканчивается - проверка на директорию) - поведение, которое ты хочешь, достигается таким конфигом:
т.е. логику index надо в try_files засунуть.
location /testapp { root /home/vasyan/apps/; try_files $uri $uri/index.html $uri/index.htm /; }
Исправление tiandrey, :
Я убил на это час, но наконец-то понял, почему всё так, а не иначе.
Итак, почему эта конфигурация не работает так, как ты хочешь:
-
index
обрабатывает только те запросы, которые оканчиваются на/
-
try_files
проверяет наличие указанных файлов/директорий, если находит - отдаёт, при этом uri не переписывается, всё обрабатывается в контексте текущей локации -
try_files $uri $uri/ /;
- проверяет наличие такого файла или такой директории. Если nginx отдаёт ресурс, являющийся директорией, а uri не оканчивается на слеш, тоindex
не включается в работу, и nginx отдаёт редирект на uri директории + слеш в конце. -
$uri
дляtry_files
это проверка существования файла, а$uri/
- проверка существования директории - поведение, которое ты хочешь, достигается таким конфигом:
т.е. логику index надо в try_files засунуть.
location /testapp { root /home/vasyan/apps/; try_files $uri $uri/index.html $uri/index.htm /; }
Исправление tiandrey, :
Я убил на это час, но наконец-то понял, почему всё так, а не иначе.
Итак, почему эта конфигурация не работает так, как ты хочешь:
-
index
обрабатывает только те запросы, которые оканчиваются на/
-
try_files
проверяет наличие указанных файлов/директорий, если находит - отдаёт, при этом uri не переписывается, всё обрабатывается в контексте текущей локации -
try_files $uri $uri/ /;
- проверяет наличие такого файла или такой директории. Если nginx отдаёт ресурс, являющийся директорией, а uri не оканчивается на слеш, тоindex
не включается в работу, и nginx отдаёт редирект на uri директории + слеш в конце. - если uri не оканчивается на /, то
$uri
дляtry_files
это проверка существования файла, а$uri/
- проверка существования директории - поведение, которое ты хочешь, достигается таким конфигом:
т.е. логику index надо в try_files засунуть.
location /testapp { root /home/vasyan/apps/; try_files $uri $uri/index.html $uri/index.htm /; }
Исходная версия tiandrey, :
Я убил на это час, но наконец-то понял, почему всё так, а не иначе.
Итак, почему эта конфигурация не работает так, как ты хочешь:
-
index
обрабатывает только те запросы, которые оканчиваются на/
-
try_files
проверяет наличие указанных файлов/директорий, если находит - отдаёт, при этом uri не переписывается, всё обрабатывается в контексте текущей локации -
try_files $uri $uri/ /;
- проверяет наличие такого файла или такой директории. Если nginx отдаёт ресурс, являющийся директорией, а uri не оканчивается на слеш, тоindex
не включается в работу, и nginx отдаёт редирект на uri директории + слеш в конце. - поведение, которое ты хочешь, достигается таким конфигом:
т.е. логику index надо в try_files засунуть.
location /testapp { root /home/vasyan/apps/; try_files $uri $uri/index.html $uri/index.htm /; }