O que significa o sinal de arroba “@” nos blocos de localização do nginx?

13

Encontrei algumas perguntas e respostas aqui que usam esta sintaxe:

location @default {
  # ...
}

location /somewhere {
    try_files $uri @default;
}

Pesquisei alto e baixo no Google e não consigo encontrar nenhuma documentação dele. O que significa e quais são alguns de seus usos práticos? É algum tipo de declaração e atribuição variável? Desculpem esta questão de novato.

    
por ccnokes 23.11.2015 / 22:34

2 respostas

7

A resposta está na documentação oficial .

The “@” prefix defines a named location. Such a location is not used for a regular request processing, but instead used for request redirection. They cannot be nested, and cannot contain nested locations.

    
por 23.11.2015 / 22:41
8

No exemplo que você cita em sua pergunta:

location @default {
  # ...
}

location /somewhere {
  try_files $uri @default;
}

Se a solicitação recebida for recebida no link , a localização será correspondida / em algum lugar e ela tentará sequencialmente encontrar, em dois lugares, uma resposta. conforme especificado pela diretiva try_files, respondendo com a primeira tentativa bem-sucedida.

  1. primeiro testa se há um arquivo no local / em algum lugar e, se o arquivo existir, ele será retornado na resposta.
  2. se isso falhar, tente a opção de fallback try_files, @default, que é chamada de named_location . A resposta para este named_location é especificada pela diretiva location @default . Um named_location nunca corresponderá a uma solicitação recebida e será usado por referência para especificar a resposta em outras diretivas de local.

Desta forma, uma instrução if pode ser evitada (se o arquivo existir, então use-o, senão responda como especificado na diretiva @default do local). Por isso, pode ser usado como uma abreviação para uma condição if. "Se" declarações são definitivamente "desaprovadas" pelos autores nginx ( se é mal ), pois têm algumas limitações e podem não dar o resultado esperado.

    
por 23.01.2018 / 19:26

Tags