Директива location с использованием регулярных выражений в Nginx работает по следующему алгоритму: www.8host.com
- Сначала Nginx проверяет все блоки location, заданные префиксными строками. www.8host.com Для этого location сравнивается с полной строкой URI. www.8host.com
- Nginx ищет точное совпадение. www.8host.com Если он находит location с модификатором =, он прекращает поиск и использует найденную конфигурацию. www.8host.com
- Если точного совпадения не обнаружено, веб-сервер выполняет поиск по неточным совпадениям. www.8host.com Он ищет location с совпадающим префиксом максимальной длины для заданного URI. www.8host.com
- Если location с совпадающим префиксом максимальной длины содержит модификатор ^~, то Nginx немедленно прекратит поиск и выберет этот блок location для обслуживания запросов. www.8host.com
- Если location с совпадающим префиксом максимальной длины не содержит модификатора ^~, то Nginx запомнит этот префикс и продолжит поиск. www.8host.com
- После того, как Nginx нашёл и запомнил location с совпадающим префиксом максимальной длины, он приступает к оценке регулярных выражений (с учётом и без учёта регистра). www.8host.com
- Если в location с совпадающим префиксом максимальной длины есть какие-либо блоки location с регулярными выражениями, Nginx поместит их в начало списка регулярных выражений для проверки. www.8host.com
- Затем Nginx последовательно сравнит блоки с регулярными выражениями. www.8host.com Для обработки будет выбрано первое выражение, которое соответствует URI запроса. www.8host.com
- Если совпадение с регулярным выражением не найдено, Nginx использует конфигурацию запомненного ранее префиксного location-а. www.8host.com gist.github.com
По умолчанию Nginx будет обслуживать регулярные выражения, отдавая предпочтение совпадениям по префиксам. www.8host.com Однако сначала он оценивает префиксные location-ы, позволяя администратору переопределять это поведение, указав location-ы с помощью модификаторов = и ^~. www.8host.com