nginx 에서 location 설정 의 우선 순위

6327 단어 기업 부분
본문https://blog.csdn.net/LJFPHP/article/details/71642977자기가 정리 하려 고 했 는데 남 들 이 더 잘 썼 다 고 생각해 서 옮 겨 썼어 요.
location 표현 식 형식
  • ~ 정규 일치, 대소 문 자 를 구분 하 는 것 을 표시 합 니 다.
  • ~ * 는 정규 일치, 대소 문 자 를 구분 하지 않 음 을 표시 합 니 다.
  • ^ ~ 보통 문자 가 일치 함 을 표시 합 니 다.접두사 일치 사용.일치 에 성공 하면 다른 위치 와 일치 하지 않 습 니 다.
  • = 일반 문 자 를 정확하게 일치 시 킵 니 다.완전히 일치 하 는 것 이다.
  • @ 이름 을 가 진 location 를 정의 합 니 다. 내부 방향 으로 사용 할 때 예 를 들 어 errorpage, try_files;

  • location 우선 순위 설명
    nginx 의 location 과 설정 에서 location 의 순 서 는 큰 관계 가 없습니다.location 표현 식 의 형식 과 관계 가 있 습 니 다.같은 형식의 표현 식 입 니 다. 문자열 이 길 면 우선 일치 합 니 다.다음은 우선 순위 에 따라 설명 한다.
  • 등호 유형 (=) 의 우선 순위 가 가장 높다.일치 가 성공 하면 다른 일치 하 는 항목 을 찾 지 않 습 니 다.
  • ^ ~ 형식 표현 식.일치 가 성공 하면 다른 일치 하 는 항목 을 찾 지 않 습 니 다.
  • 정규 표현 식 형식 (~ *) 의 우선 순위 입 니 다.여러 location 의 정규 가 일치 할 수 있다 면 정규 표현 식 이 가장 긴 것 을 사용 하 십시오.
  • 일반적인 문자열 일치 형식 입 니 다.접두사 에 따라 일치 합 니 다.

  • location 우선 순위 예제
    location = / {
        #        /
        [ configuration A ]
    }
    location / {
        #       /      。
        #                ,         。
        #             ,          。
        [ configuration B ]
    }
    location /documents/ {
        #       /documents/      。
        #                ,         。
        #             ,          。
        [ configuration C ]
    }
    location ^~ /images/ {
        #       /images/       ,      ,       。
        #   ,           location,      
        [ configuration D ]
    }
    location ~* \.(gif|jpg|jpeg)$ {
        #       gif jpg jpeg     。
        #      /images/     ,    Configuration D
        [ configuration E ]
    }

    요청 일치 예시
    / -> configuration A
    /index.html -> configuration B
    /documents/index.html -> configuration C
    /images/1.gif -> configuration D
    /documents/1.jpg -> configuration E

    이상 의 일치 성 은 설정 파일 에서 정 의 된 순서 와 무관 합 니 다.
    location 정규 쓰기
    location  = / {
      #      / ,             
      [ configuration A ] 
    }
    location  / {
      #           /   ,              
      #                
      [ configuration B ] 
    }
    location /documents/ {
      #       /documents/      ,      ,        
      #                 ,          
      [ configuration C ] 
    }
    location ~ /documents/Abc {
      #       /documents/      ,      ,        
      #                 ,          
      [ configuration CC ] 
    }
    location ^~ /images/ {
      #       /images/      ,      ,        ,     。
      [ configuration D ] 
    }
    location ~* \.(gif|jpg|jpeg)$ {
      #       gif,jpg jpeg      
      #   ,     /images/        config D   ,   ^~          
      [ configuration E ] 
    }
    location /images/ {
      #       /images/,    ,    ^~   
      [ configuration F ] 
    }
    location /images/abc {
      #         /images/abc,    ,    ^~   
      # F G           
      [ configuration G ] 
    }
    location ~ /images/abc/ {
      #      config D    :      config G      ,      ,        ,  
        [ configuration H ] 
    }

    = 첫 번 째 는 정확하게 일치 합 니 다. 예 를 들 어 A 에서 루트 디 렉 터 리 의 끝 에 만 일치 하 는 요청 은 뒤에 문자열 을 가 져 갈 수 없습니다. ^ ~시작 은 uri 가 정규 문자열 로 시작 하 는 것 이 아니 라 정규 문자열 로 시작 하 는 것 을 나타 낸다.시작 은 대소 문 자 를 구분 하 는 정규 일치 임 을 나타 낸다. ~ *대소 문 자 를 구분 하지 않 는 정규 일치 로 시작 합 니 다. /일반적인 일치, 다른 일치 가 없 으 면 모든 요청 이 일치 합 니 다.
    순서 가 우선 순위 와 같 지 않 음: (location =) > (location 전체 경로) > (location ^ ~ 경로) > (location ~ / ~ * 정규 순서) > (location 부분 시작 경로) > (/)
    위의 location 쓰기 에 따라 다음 과 같은 일치 하 는 예제 가 성립 됩 니 다.
    / - > config A 가 정확하게 일치 합 니 다. / index. html 도 일치 하지 않 습 니 다.
    / downloads / download. html - > config B 가 B 와 일치 한 후 아래 에 일치 하지 않 습 니 다. B 를 사용 합 니 다.
    / images / 1. gif - > configuration D 는 F 에 일치 하고, 아래로 D 에 일치 하 며, 아래로 멈 춥 니 다.
    / images / abc / def - > config D 는 G 와 가장 길 게 일치 합 니 다. D 와 아래로 일치 합 니 다. 아래 를 멈 추 면 / images / 로 시작 하 는 모든 것 이 최종 적 으로 D 와 일치 하고 멈 추 는 것 을 볼 수 있 습 니 다. FG 는 여기에 쓰 여 있 는 것 은 아무런 의미 가 없습니다. H 는 영원히 돌아 가지 않 습 니 다. 여 기 는 일치 하 는 순 서 를 설명 하기 위해 서 입 니 다.
    / documents / document. html - > config C 가 C 에 일치 합 니 다. 아래 에는 일치 하지 않 습 니 다. C 를 사용 합 니 다.
    / documents / 1. jpg - > configuration E 가 C 에 일치 하고 아래 정규 가 E 에 일치 합 니 다.
    / documents / Abc. jpg - > config CC 는 C 까지 최 장 일치 하 며, 아래 정규 순 서 는 CC 까지 일치 하 며, E 까지 내 려 가지 않 습 니 다.
    실제 사용 제안
    #       ,              ,         ,     。
    #                ,          
    #        
    location = / {
        proxy_pass http://tomcat:8080/index
    }
    #                 ,  nginx  http      
    #        ,         ,         
    location ^~ /static/ {
        root /webroot/static/;
    }
    location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
        root /webroot/res/;
    }
    #            ,                
    #                ,        
    #             , .php,.jsp        
    location / {
        proxy_pass http://tomcat:8080/
    }

    좋은 웹페이지 즐겨찾기