위치 BLOCK 일치 규칙

4710 단어 nginxrewritelocation
#location    
location block  request url domain name  ip/port       ,        。
location optional_modifier location_match { . . . }

 
    location 수정자 와 연 결 된 location 는 다음 과 같이 해석 합 니 다.
 =  
요청 한 url 은 location 에서 지정 한 경로 와 엄 격 히 일치 해 야 합 니 다.
none
수정자 가 없 으 면 url 에 접두사 가 일치 합 니 다.
^~ 
가장 좋 은 비정규 표현 식 접두사 일치
~   
대소 문자 민감 한 정규 일치
~*
대소 문자 가 민감 하지 않 은 정규 일치
\ # location 일치 규칙
    · nginx 는 접두사 기반 의 모든 일치 성 을 검사 합 니 다. 완전한 요청 에 대해 nginx 는 모든 접두사 의 일치 성 을 검사 합 니 다.
    · 우선, nginx 는 정확 한 일치 하 는 것 을 찾 을 것 입 니 다.= modifier 에 일치 하면 일치 가 즉시 종 료 됩 니 다. 이 location 은 이 요청 을 처리 하 는 것 을 선택 합 니 다.
     · 정확 한 일치 (= modifier) 가 없 으 면 nginx 는 접두사 매 칭 을 계속 하고 주어진 url 에 대해 가장 긴 접 두 사 를 선택 하 십시오.그리고 다음 규칙 에 따라 계속 일치 합 니 다.
    ·  가장 긴 접두사 가 일치 하면 (^ ~ modifier) nginx 는 검색 을 즉시 끝내 고 이 location 을 선택 합 니 다.
    ·  ^ ~ modifier 가 없 으 면 검색 을 계속 할 수 있 도록 잠시 저 장 됩 니 다.
    ·  가장 긴 일치 가 저장 되면 nginx 는 정규 표현 식 과 계속 일치 합 니 다.nginx 는 location list 의 맨 위로 이동 한 다음 정규 표현 식 과 일치 하려 고 합 니 다. 첫 번 째 일치 하 는 정규 표현 식 은 즉시 처리 요청 을 선택 하여 일치 하 는 것 을 끝 냅 니 다.
    ·  정규 표현 식 이 일치 하지 않 으 면 이전에 저 장 된 최 장 location 이 요청 을 처리 하 는 데 사 용 됩 니 다.
    특히 이해 해 야 할 것:
    
    nginx 정규 일치 결 과 는 접두사 일치 보다 우선 합 니 다.하지만 접두사 가 먼저 일치 하 는 동시에 ^ ~ 와 = 을 통 해 이러한 추 세 를 바 꿀 수 있 습 니 다.
    접 두 사 는 일반적으로 가장 길 고 정확 한 매 칭 을 선택 하 며, 첫 번 째 매 칭 이 발견 되면 매 칭 이 종 료 됩 니 다.즉, 정규 일치 가 설정 파일 의 규칙 정의 위치 와 큰 관계 가 있다 는 것 이다.
    
\ # location 내부 점프 규칙
    · index 명령 어
    정확 한 결과 가 디 렉 터 리 라면 다른 location 으로 redirect 를 요청 합 니 다.
    / exact 에 정확하게 일치 하도록 요청 하면 이 location 은 index directive 를 기본적으로 계승 한 다음 내부 에서 두 번 째 location 으로 이동 합 니 다.

   
   
   
   
index index.html;

location = /exact {
}

location / {
}
· try_files
         nginx       ,      。           url,   nginx        。

   
   
   
   
root /var/www/main;
location / {
    try_files $uri $uri.html $uri/ /fallback/index.html;
}

location /fallback {
    root /var/www/another;
}

이 예 에서 요청 한 이름 이 / neojos 라면 nginx 는 root 에서 neojos 라 는 파일 을 찾 습 니 다. 찾 지 못 하면 neojos. html 파일 을 찾 습 니 다. 마지막 으로 root 에 neojos / 디 렉 터 리 가 존재 하 는 지 찾 습 니 다.모든 검색 에 실패 하면 / fallback / index. html 로 이동 하여 아래 location 처 리 를 촉발 합 니 다.

· rewrite
     rewrite   ,   last         ,nginx   rewrite    ,         location  。

   
   
   
   
root /var/www/main;
location / {
    rewrite ^/rewriteme/(.*)$ /$1 last;
    try_files $uri $uri.html $uri/ /fallback/index.html;
}

location /fallback {
    root /var/www/another;
}

요청 이 / rewriteme / hello 라면 첫 번 째 location 에서 / hello 로 재 작성 합 니 다.그리고 첫 번 째 location 의 tryfiles 처리, 찾 지 못 하면 / fallback / index. html 로 돌아 가 두 번 째 location 으로 처 리 됩 니 다.

    ·error_page
       301  302 code    ,   return directive      ,                。rewrite   redirect   permanent        ,      location search      ,                。

    error_page directive            ,    try_files。  try_files     , error_page          。

root /var/www/main;

location / {
    error_page 404 /another/whoops.html;
}

location /another {
    root /var/www;
}

좋은 웹페이지 즐겨찾기