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