Nginx location 설정 클래스 와 일치 하 는 우선 순위

3093 단어
위치 기능:
일치 하 는 ngnix 변수: $requesturi 역할: url 일치 모드 를 정의 합 니 다. 요청 uri 에 따라 해당 설정 파일 에 보통 여러 개의 location 이 있 는 지 판단 할 수 있 습 니 다. 서로 다른 일치 모드 를 정의 하고 서로 다른 uri 는 일치 하 는 결과 에 따라 서로 다른 설정 을 가 져 옵 니 다.
location 일치 모드:
location 의 매 칭 은 모두 접두사 가 일치 합 니 다.형식:
location [    | = | ~ | ~* | !~ | !~* ] /uri/ {}

3 가지 유형 으로 나 뉜 다.
  • 정확 한 모델: 정확 한 일치 (=)
  • 접두사 모드: 일반 일치 (빈 칸), 비정 규 직 일치 (^ ~)
  • 정규 모드: 대소 문자 민감 매 칭 (~), 대소 문자 민감 매 칭 (~ *), 대소 문자 민감 매 칭 (! ~), 대소 문자 민감 매 칭 (! ~ *)
  • 위치 일치 우선 순위:
  • 먼저 정확 한 모델 을 일치 시 키 고 정확 한 모델 을 명중 시 키 고 바로 돌아간다.그렇지 않 으 면 접두사 모드 와 계속 일치 합 니 다.
  • 접두사 모드 에서 최대 접두사 원칙 을 사용 하여 일반 일치 (빈 칸) 또는 비 정규 일치 (^ ~) 와 일치 하 는 최 장 location 을 선택 하 십시오.
  • 최 장 접두사 location 이 정규 가 아 닌 경우 (^ ~) 이 최 장 접두사 location 을 되 돌려 줍 니 다.그렇지 않 으 면 정규 모드 와 계속 일치 해 야 합 니 다.
  • 정규 모드 의 원칙 은 정규 location 정의 순서에 따라 일치 하고 첫 번 째 일치 하 는 location 은 정규 모드 결과 이다.
  • 정규 모드 가 일치 하면 정규 모드 결 과 를 되 돌려 줍 니 다.그렇지 않 으 면 접두사 모드 의 최 장 접두사 location 을 되 돌려 줍 니 다.
  • nginx 버 전 0.7.1 - 0.8.41 에서 접두사 모드 의 최 장 접두사 location 이 uri 와 정확하게 일치 하면 최 장 접두사 location 으로 돌아 갑 니 다.
  • if       
        return        
           = longest:     (  ) or      (^~)
    if                (^~)
        return       
    if       0.7.1 - 0.8.41 and        == uri:
        return       
           = first:        (~) or         (~*) or         (!~) or          (!~*)
    if       :
        return       
    else:
        return       
    

    예시
    location / {}
    

    접두사 모드 입 니 다. 모든 uri 와 일치 합 니 다. 최 단 일치 하기 때문에 이 location 는 바닥 location 입 니 다.다른 모든 location 이 일치 하지 않 을 때 이 location 을 명중 시 키 는 것 입 니 다.
    location = / {
        [    A ]
    }
    
    location / {
        [    B ]
    }
    
    location /documents/ {
        [    C ]
    }
    
    location ^~ /images/ {
        [    D ]
    }
    
    location ~* \.(gif|jpg|jpeg)$ {
        [    E ]
    }
    

    uri: "/" 정확 한 일치: 설정 A uri: "/ index. html" 주머니 일치: 설정 B uri: "/ documents / document. html" 최 장 위치 일치: 설정 C uri: "/ images / 1. gif" 비정규 일치: 설정 D uri: "/ documents / 1. jpg" 정규 일치: 설정 E
    내부 위치 (@)
    내부 location 은 외부 Client 에 접근 할 수 없고 방향 을 바 꾸 는 데 만 사용 할 수 있 습 니 다.그것 은 끼 워 넣 을 수도 없고, 끼 워 넣 은 location 도 포함 할 수 없다.형식:
    location @name {}
    

    예시:
    error_page 404 = @fallback
    location @fallback {
    }
    

    특수 처리 위치
    접두사 모드 location 이 슬 래 쉬 (/) 로 끝나 면 proxy 로 설정 을 요청 합 니 다.pass, fastcgi_pass, uwsgi_pass, scgi_pass 또는 memcachedpass 등 프로세서 로 처리 하면 이 프로세서 로 처리 합 니 다.그러나 끝 에 슬 래 쉬 가 없 는 uri 는 301 로 돌아 가 슬 래 쉬 가 있 는 uri 로 방향 을 바 꾸 고 이 location 과 일치 합 니 다.
    location /user/ {
        proxy_pass http://user.example.com;
    }
    

    uri: / user / 전송ttp://user.example.com uri: / user 는 301 을 되 돌려 주 고 / user / 로 방향 을 바 꾸 지 않 으 려 면 두 개의 위 치 를 정의 하고 서로 다른 설정 을 설정 할 수 있 습 니 다.
    location /user/ {
        proxy_pass http://user.example.com;
    }
    location = /user {
        proxy_pass http://login.example.com;
    }
    
    ```
    uri:/user/
       http://user.example.com;
    uri:/user
       http://login.example.com;

    좋은 웹페이지 즐겨찾기