Nginx 위치 우선 순위


186

위치 지시문은 어떤 순서로 실행됩니까?

답변:


352

로부터 HTTP 코어 모듈 문서 :

  1. 쿼리와 정확히 일치하는 "="접두사를 가진 지시문 발견되면 검색이 중지됩니다.
  2. 기존 문자열이있는 나머지 모든 지시문. 이 일치 항목이 "^ ~"접두사를 사용한 경우 검색이 중지됩니다.
  3. 구성 파일에 정의 된 순서대로 정규식.
  4. # 3이 일치하면 해당 결과가 사용됩니다. 그렇지 않으면 # 2의 일치 항목이 사용됩니다.

설명서의 예 :

location  = / {
  # matches the query / only.
  [ configuration A ] 
}
location  / {
  # matches any query, since all queries begin with /, but regular
  # expressions and any longer conventional blocks will be
  # matched first.
  [ configuration B ] 
}
location /documents/ {
  # matches any query beginning with /documents/ and continues searching,
  # so regular expressions will be checked. This will be matched only if
  # regular expressions don't find a match.
  [ configuration C ] 
}
location ^~ /images/ {
  # matches any query beginning with /images/ and halts searching,
  # so regular expressions will not be checked.
  [ configuration D ] 
}
location ~* \.(gif|jpg|jpeg)$ {
  # matches any request ending in gif, jpg, or jpeg. However, all
  # requests to the /images/ directory will be handled by
  # Configuration D.   
  [ configuration E ] 
}

여전히 혼란 스러우면 더 자세한 설명이 있습니다.


9
그것은 당신을 도울 수와 함께 :) github.com/detailyang/nginx-location-match-visible
user2228392

4
//documents/규칙 이 모두 request 와 일치 /documents/index.html하지만 후자의 규칙이 가장 긴 규칙이므로 우선합니다.
arrakis_sun

69

이 순서대로 실행됩니다.

  1. = (바로 그거죠)

    location = /path

  2. ^~ (앞으로 일치)

    location ^~ /path

  3. ~ (정규 표현 대소 문자 구분)

    location ~ /path/

  4. ~* (정규 표현식은 대소 문자를 구분하지 않습니다)

    location ~* .(jpg|png|bmp)

  5. /

    location /path


3
^ ~ (정방향 일치) 매우 중요
iwind

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