태그 보관물: nginx

nginx

nginx 위치 블록에서 기호 “@”은 무엇을 의미합니까? 질문과 답변이 있습니다. location @default

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

location @default {
  # ...
}

location /somewhere {
    try_files $uri @default;
}

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



답변

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

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


답변

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

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 작성자 ( 악한 경우 )에 의해 일부 “제한적 “으로 인해 ” 제한된”것으로 예상되는 결과를 얻지 못할 수 있습니다.


답변