В примере, который вы цитируете в своем вопросе:
location @default {
# ...
}
location /somewhere {
try_files $uri @default;
}
Если входящий запрос получен по адресу http: // ваш-домен / где-то , то местоположение совпадает с / где-то, и он пытается в двух местах последовательно найти ответ, как указано в директиве try_files, отвечая первой успешной попыткой.
- сначала он проверяет, есть ли файл в этом месте или где-то, и если файл существует, он возвращается в ответе.
- если это не удается, он пытается использовать опцию try_files @default, которая называется named_location . Ответ для этого named_location указывается
location @default
директивой. Named_location никогда не будет соответствовать входящему запросу, и используется в качестве ссылки указать отклик в других директивах о местоположении.
Таким образом, можно избежать оператора if (если файл существует, то использовать его, иначе ответить как spec'd в директиве location @default). Так что это может быть использовано как сокращение для условия if. «Если» заявления определенно «осуждаются» авторами nginx ( если это зло ), так как они имеют некоторые ограничения и могут не дать ожидаемого результата.