У прикладі, який ви цитуєте у своєму запитанні:
location @default {
# ...
}
location /somewhere {
try_files $uri @default;
}
Якщо вхідний запит отримано за адресою http: // your-domain /where , то місце розташування збігається / десь і воно намагається в двох місцях послідовно знайти відповідь, як визначено директивою try_files, відповідаючи на першу успішну спробу.
- спочатку він перевіряє, чи є файл у місці / десь, і якщо файл існує, він повертається у відповідь.
- якщо це не вдається, він намагається спробувати параметр try_files, @default, який називається name_location . Відповідь на це ім'я_локації визначається
location @default
директивою. Named_location ніколи не буде відповідати входить запитом, і використовується в якості посилання вказати відгук в інших директивах про місцезнаходження.
Таким чином, можна уникнути оператора if (якщо файл існує, тоді використовуйте його, інакше відповідайте як spec'd в директиві location @default). Тому його можна використовувати як скорочення для умови if. "Якщо" заяви безумовно "нахмурені" авторами nginx ( якщо це зло ), оскільки вони мають деякі обмеження і можуть не дати очікуваного результату.