004_Nginx의 rewrtie 네 개의 플래그

Nginx에의 rewrtie 네 개의 플래그

의 nginx 재 작성 명령을 사용하여, 스티어링 플래그 네 가지 rewrtie를 들어, URL을 달성 할 수있다, 각각, 리디렉션, 영구, 휴식과 마지막. 이는 처음 두 플래그의 점프 형이고, 후자의 두 에이전트 유형이다. 점프 유형이 새 주소를 다시 요청에 클라이언트 브라우저를 가지고 의미, 프록시의 유형은 내부 웹 서버에서 점프를 달성하는 것입니다.

재 : (302) 후면 rewrtie 주소로 이동합니다.

영구 : 후면 rewrtie 주소 (301)의 영구 조정, 현재 주소가 영구적으로 일반적으로 친화적 인 엔진을 검색, 새 주소로 이동되었습니다.

마지막 : 서버의 주소를 다시 수행 라벨을 다시 작성합니다.

휴식 : 주소 재 작성 후 현재 위치 라벨에 다시이 - 실행.

Proxy_pass 루트 또는 지정된 소스를 사용, 마지막 휴식이 될 수 있지만, 결과는 나중에 예와 다를 수 있습니다; 별명이 소스를 지정하는 데 사용됩니다, 마지막으로해야합니다. 다음과 같은 구성하는 경우 :

location / {
    root   /var/www/html;
    index  index.html index.htm;
    rewrite "/x/t.html" /y/t.html break;
}
location /y/ {
    root  /var/www/html/other;
}

/x/t.html, 다시 쓰기 규칙 준수 요청하는 경우, 즉 조정은 BREAK를 사용하여 플래그 이후, /y/t.html에 만들어진 있도록 주소를, 그래서 "/ 위치"에서 / VAR의 결과를 뛰어 /www/html/y/t.html. 마지막에 대한 플래그, 다음 /y/t.html 서버 탭에 "위치 / y로 /"다시 실행할 경우, 점프는이 시간, 그래서 "위치 / Y /"때문에 라벨에 재 할당 그래서 결과는 /var/www/html/other/y/t.html.

참고 : 잘못 구성된 경우 사용 마지막으로, 당신은 무한 루프가 발생할 수 있습니다. 예를 들면 :

location /x/ {
    proxy_pass http://my_proxy;
    rewrite "^/x/(.*)\.html$" /x/1.html last;
}

재 인쇄 기사의 소스를 표시하시기 바랍니다, 감사합니다! :에서 재판 http://www.netingcn.com/nginx-rewrite-flag.html


Nginx에 中 마지막으로, 휴식, 영구 리디렉션

1. 지난 和 휴식

  • 위치 외부

마지막 때와 휴식 위치 밖에서 발생 모두 동일한 효과없이 차분 경우. 그들은 자신의 일치하는 위치를 선택, 자신의 재 작성 모듈 명령 다음에 모두를 건너 뛸 수 있다는 사실에주의.

Example:

rewrite url1 url2 last; ①
rewrite url3 url4 last; ②
rewrite url5 url6 last; ③

location ~  url2   ④
location ~  url4   ⑤
location ~  url6   ⑥

이 재 작성 규칙 멀리 직접 위치의 선택 뒤에 생략 된 판단을하지 않습니다 뒤에 효과 ①, ②와 ③을 취하면, 의심의 여지가있을 수 있습니다 그 명령의 입력 재 작성 모듈 명령이 그? 자신을 nginx를 사용하는 경우, 당신은 쿼리의 공식 웹 사이트로 이동합니다. 당신이 tengine를 사용하는 경우, 당신은 tengine -V를 사용할 수 있습니다. 정보 나열된 원하는 것입니다.

  • 내 위치

위치 안에있을 때 때 마지막 구분하고, 둘 사이의 차이가있다.
마지막 : 사용 마지막 명령은 다시 한번의 동작을 재개 그냥 다시 쓰기 위치 범위 후 이동합니다
사용이 중단 명령을 재 작성 후 위치의 범위 밖으로 이동하지 않습니다 휴식. 또한이 세상의 끝의 위치입니다.

Example:

rewrite xxx1 yyy last; ⑦
rewrite xxx2 yyy last; ⑧
rewrite xxx3 yyy last; ⑨
rewrite xxx4 yyy last; ⑩

location ~  url1
{
    rewrite url1 url2 last; ①
}

location ~  url2
{
    rewrite url3 url4 break; ②
    fastcgi_pass 127.0.0.1:9000;
}

이러한 예 :
재기록 지시 처리의 제 1 위치가 완료된 후, 위치를 나타되며, 다음 새롭게 판정 재기록 7-9 규칙,
위치 결정 처리의 제 다시 쓰기 명령이 완료된 후, 재하는 위치하지 이동되지 규칙을 분석하는 것은 ~ 9 7을 다시 작성합니다. 그러나 단지 fastcgi_pass 명령의 뒷면 또는 proxy_pass 등으로 정보를 전달하는

2. 영구적 리디렉션

영구 : 영구 리디렉션. 로그인 요청 상태 코드 (301)

재 : 임시 리디렉션. 로그인 요청 상태 코드 (302)

관점에서 영구적 인 기능의 실현을보고 같은 리디렉션합니다. 아무것도 성능 문제가 존재; 나쁜 좋은,이없는 곳. (아니면 바이두 사이트 크롤 경우)하지만, SEO를. 이런 식으로 뭔가, 당신은 결국 관심의 영구적 또는 일시적으로 재 지정 재 지정됩니다. 이해할 수없는, 깊이있는, 그것을 구글이 필요합니다.

영구 리디렉션 VS 3. 마지막으로, 휴식

상태 코드 (301, 302)과 영구 리디렉션을 말한다 액세스 로그를위한 요청 상태 코드 (200)에 대하여 다음 마지막 파단

키워드의 이러한 두 가지 유형, 눈을 우리가 볼 수있는 차이는? 내가 당신에게 그것의 예를 들어 보겠습니다 :

  • 웹 페이지를 열고 디버그 모드를 열 때 행동 (301)와 케이스 (302)을 찾을 수 있습니다. 첫 번째 요청 (301) 또는 (302) 후, 브라우저 새로운 URL, 새로운 URL이됩니다 다시 방문을 재 획득. 영구와 리디렉션을 구성 할 때, 서버에 땅에 URL 요청을 방문은 2 배 이상이다.

  • 마지막 또는 휴식을 구성 할 때 최종 URL을 확정 한 후, URL을 브라우저에 반환되지 않습니다,하지만 다루는 fastcgi_pass 또는 proxy_pass 지침을 던졌다. URL을 요청, 수는 서버 시간을 1로 떨어졌다.

재 인쇄 기사의 소스를 표시하시기 바랍니다, 감사합니다! 전송 : http://blog.51cto.com/unixman/1711943

추천

출처www.cnblogs.com/cy-8593/p/12333623.html