Nginx location 명령 일치 규칙

3784 단어 Linux
Nginx location 명령 일치 규칙
지식 을 준비 하 다
위치 일치 명령
  • ~ \ # 파도 선, 정규 일치, 대소 문자 구분
  • ~ * \ # 파도 선 + 별표, 정규 일치, 대소 문자 구분 없 음
  • ^ ~ \ # ^ ~ 는 일반 문자 가 일치 함 을 나타 내 며, 현재 일치 하면 현재 항목 만 일치 하고, 다른 옵션 은 계속 일치 하지 않 음
  • = \ # 일반 문자 정확하게 일치
  • @ \ # "@" 은 이름 을 가 진 location 을 정의 합 니 다. 내부 방향 으로 사용 할 때
  • location 일치 우선 순위 (location 설정 파일 의 위치 와 무관)
  • = \ # 정확 한 매 칭 은 첫 번 째 로 처리 되 며, 매 칭 항목 이 있 으 면 다른 location 과 일치 하지 않 습 니 다
  • ^ ~ \ # 일치 하 는 항목 이 있 으 면 다른 location 과 일치 하지 않 습 니 다
  • ~ 와 ~ * \ # 일치 하 는 것 을 찾 으 면 다른 location 과 일치 하지 않 습 니 다. 정규 일치 하 는 것 은 설정 파일 의 위치 에 따라 선후 로 일치 합 니 다
  • 전체적으로 말 하면 정확 한 일치 (=) 와 일반 문자 의 정확 한 일치 (^ ~), 정확 한 일치 (=) 와 일반 문자 의 정확 한 일치 (^ ~) 는 모두 요구 에 가장 길 게 일치 하 는 요청 입 니 다.정규 표현 식 의 일치 (~ and ~ *) 는 설정 파일 의 위치 에 따라 정규 표현 식 에 첫 번 째 일치 가 나타 나 면 다른 정규 일치 가 계속 되 지 않 습 니 다. 일치 하 는 항목 이 없 으 면 미리 기 록 된 접두사 일치 (즉 일반 문자 일치) 가 일치 하 는 결 과 를 사용 합 니 다.구체 적 인 규칙 은 Wiki nginx 공식 문서 의 설명 을 참조 할 수 있 습 니 다.
    Syntax:   location [ = | ~ | ~* | ^~ ] uri { ... }
    location @name { ... }
    Default:  —
    Context:  server, location

    Sets configuration depending on a request URI.
    The matching is performed against a normalized URI, after decoding the text encoded in the “%XX” form, resolving references to relative path components “.” and “..”, and possible compression of two or more adjacent slashes into a single slash.
    A location can either be defined by a prefix string, or by a regular expression. Regular expressions are specified with the preceding “~*” modifier (for case-insensitive matching), or the “~” modifier (for case-sensitive matching). To find location matching a given request, nginx first checks locations defined using the prefix strings (prefix locations). Among them, the location with the longest matching prefix is selected and remembered. Then regular expressions are checked, in the order of their appearance in the configuration file. The search of regular expressions terminates on the first match, and the corresponding configuration is used. If no match with a regular expression is found then the configuration of the prefix location remembered earlier is used.
    location blocks can be nested, with some exceptions mentioned below.
    For case-insensitive operating systems such as Mac OS X and Cygwin, matching with prefix strings ignores a case (0.7.7). However, comparison is limited to one-byte locales.
    Regular expressions can contain captures (0.7.40) that can later be used in other directives.
    If the longest matching prefix location has the “^~” modifier then regular expressions are not checked.
    Also, using the “=” modifier it is possible to define an exact match of URI and location. If an exact match is found, the search terminates. For example, if a “/” request happens frequently, defining “location = /” will speed up the processing of these requests, as search terminates right after the first comparison. Such a location cannot obviously contain nested locations.
    예시
    location  = / {
      #    "/".
      [ configuration A ] 
    }
    location  / {
      # "/"  
      #                       
      [ configuration B ] 
    }
    location ^~ /images/ {
      #       /images/      ,        location
      [ configuration C ] 
    }
    location ~* .(gif|jpg|jpeg)$ {
      #     gif, jpg, or jpeg     . 
      #      /images/         [Configuration C]  .   
      [ configuration D ] 
    }

    좋은 웹페이지 즐겨찾기