break 는 rewrite 단계 에서 벗 어 나 일치 하지 않 고 출력 단계 에 들 어 갑 니 다.last 는 재 요청 과 유사 하기 때문에 다시 일치 합 니 다.

2267 단어
1. break 는 rewrite 단계 에서 벗 어 나 일치 하지 않 고 출력 단계 에 들 어 갑 니 다.last 는 재 요청 과 유사 하기 때문에 다시 일치 합 니 다.
2. 우 리 는 nginx 운행 이 11 개의 집행 단계 로 나 뉘 는 것 을 알 고 있 습 니 다. 위 에서 언급 한 ngxhttp_rewrite_mode, 그 중의 한 단계 - rewrite 단계 로 이해 할 수 있 습 니 다.​
typedef enum {
    NGX_HTTP_POST_READ_PHASE = 0,
    NGX_HTTP_SERVER_REWRITE_PHASE,
    NGX_HTTP_FIND_CONFIG_PHASE,
    NGX_HTTP_REWRITE_PHASE,           //rewrite     
    NGX_HTTP_POST_REWRITE_PHASE,
    NGX_HTTP_PREACCESS_PHASE,
    NGX_HTTP_ACCESS_PHASE,
    NGX_HTTP_POST_ACCESS_PHASE,
    NGX_HTTP_TRY_FILES_PHASE,
    NGX_HTTP_CONTENT_PHASE,
    NGX_HTTP_LOG_PHASE
} ngx_http_phases;

 
그래서 우 리 는 last 와 break 의 차 이 를 다시 이해 합 니 다. last: 현재 이 요청 을 중단 하고 rewrite 에 맞 는 규칙 에 따라 다시 요청 합 니 다.새 요청 은 첫 번 째 단계 부터 실 행 됩 니 다. break: last 에 비해 break 는 요청 을 다시 시작 하지 않 습 니 다. 현재 rewrite 단 계 를 건 너 뛰 고 이 요청 의 후속 실행 단 계 를 수행 합 니 다.
 
3. 우 리 는 예 를 하나 보 자.
server {
    listen 80 default_server;
    server_name dcshi.com;
    root www;

    location /break/ {
        rewrite ^/break/(.*) /test/$1 break;
        echo "break page";
    } 

    location /last/ {
         rewrite ^/last/(.*) /test/$1 last;
         echo "last page";
    }    

    location /test/ {
       echo "test page";
    }
}
  :http://dcshi.com/break/***
  : break page
  :        ,break        rewrite  ,             ,   ,  /foo    content       echo “break page”;

 (content  ,                ,            content  ;echo       content  ;


      /break/  echo     ,      /break/xx  404,         :  /break/xx     /test/xx,  break                  ,  nginx         /test/  location;


 echo         ,/break/  location     nginx   content  ,    /test/xx  html        ,   ,       ,    404   。

참고:https://www.cnblogs.com/swing07/p/5381772.html

좋은 웹페이지 즐겨찾기