nginx 위치 블록에서 기호 "@"은 무엇을 의미합니까?


20

이 구문을 사용하는 몇 가지 질문과 답변이 있습니다.

location @default {
  # ...
}

location /somewhere {
    try_files $uri @default;
}

Google에서 높고 낮은 것을 검색했는데 해당 문서를 찾을 수 없습니다. 그 의미는 무엇이며 실제적인 용도는 무엇입니까? 일종의 변수 선언 및 할당입니까? 초보자 질문 죄송합니다.

답변:


10

대답은 공식 문서에 있습니다.

“@”접두사는 명명 된 위치를 정의합니다. 이러한 위치는 일반 요청 처리에 사용되지 않고 요청 리디렉션에 사용됩니다. 중첩 될 수 없으며 중첩 된 위치를 포함 할 수 없습니다.


37
설명이 진행됨에 따라 이것은 아무 것도 말하지 않습니다.
Stefano Borini

그래서 이것은 내부에 일반 블록이있는 것과 특별히 다르지 않습니까?
James

14

귀하의 질문에 인용 한 예에서 :

location @default {
  # ...
}

location /somewhere {
  try_files $uri @default;
}

들어오는 요청이 http : // your-domain / somewhere 에서 수신 되면 위치는 / somewhere와 일치하며 try_files 지시문에 지정된대로 첫 번째 시도에 응답하여 순차적으로 두 곳에서 응답을 찾습니다.

  1. 먼저 / somewhere 위치에 파일이 있는지 테스트하고 파일이 있으면 응답으로 반환됩니다.
  2. 이 실패 할 경우는 호출되는 try_files 대체 옵션 @default, 시도 named_location을 . 이 named_location에 대한 응답 은 location @default지시문에 의해 지정됩니다 . named_location는 들어오는 요청과 일치하지 않습니다, 그리고 다른 위치 지시에 응답을 지정하는 기준으로 사용됩니다.

이러한 방식으로 if 문을 피할 수 있습니다 (파일이 존재하면이를 사용하고 그렇지 않으면 @default 지시문에 지정된대로 응답). 따라서 if 조건의 속기로 사용할 수 있습니다. "If"문은 nginx 작성자 ( 악한 경우 )에 의해 일부 "제한적 "으로 인해 " 제한된"것으로 예상되는 결과를 얻지 못할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.