try_files
Директива `try_files` пытается обслуживать файлы из указанных путей, при отсутствии файлов возвращаясь к заданному URI. — NGINX HTTP Core
Описание
Директива `try_files` используется в NGINX для указания списка путей к файлам, которые NGINX будет проверять на наличие по порядку, чтобы обслужить запрос. Она может принимать несколько аргументов, представляющих пути к файлам или URI, которые NGINX будет пытаться отдать по очереди. Если NGINX находит файл, существующий по одному из указанных путей, он отдаёт этот файл. Если ни один из указанных файлов не существует, NGINX может перейти к обслуживанию предопределённого URI, что полезно для маршрутизации запросов к другому обработчику. Синтаксис требует как минимум двух аргументов: списка путей для проверки и как минимум одного резервного URI. Директива будет последовательно проверять каждый путь, пока не найдёт существующий файл. Если ни один из указанных файлов не найден, используется последний аргумент, который должен быть URI. Это позволяет аккуратно обрабатывать отсутствующие файлы, переходя на страницы ошибок или перенаправляя на несуществующие маршруты, например, для SPA-фреймворка. Директива `try_files` особенно хорошо работает в locations, где распространена перезапись URL, например в одностраничных приложениях или при динамически управляемых файлах. Используя порядок файлов, передаваемых в `try_files`, разработчики могут создавать гибкие ответы в зависимости от доступности конкретных ресурсов на диске или указанных URI.
Пример конфига
location / {
try_files $uri $uri/ /index.php;
}Убедитесь, что задан fallback URI; в противном случае при отсутствии файлов может возникнуть ошибка 404.
Если используете регулярные выражения, будьте осторожны с порядком и сочетаниями директив сопоставления.
Обратите внимание, что `try_files` прекращает проверку, как только находит существующий файл, что может привести к неожиданным результатам, если пути указаны в неправильном порядке.