재인쇄: http://blog.sina.com.cn/s/blog_5d73ba76010145rr.html
먼저 nginx 301 302 점프에 대한 전체 코드 예제를 살펴보세요.
301 점프 설정:
server {
listen 80;
server_name 123.com;
rewrite ^/(.*) http://456.com / $1 영구;
access_log off;
}
302 점프 설정:
서버 {
듣기 80;
server_name 123.com;
다시 쓰기 ^ /(.*) http://456.com/$1 리디렉션;
access_log off;
}
nginx 301 302 점프에 대한 자세한 문서 보기
서버 {
server_name test.com;
rewrite ^/(.*) http://www.test1.com/$1 영구;
}
last – 기본적으로 모두 이 플래그를 사용합니다.
break - 재작성을 중단하고 더 이상 일치를 계속하지 않음
redirect - 임시 리디렉션의 HTTP 상태 302 반환
permanent - 영구 리디렉션의 HTTP 상태 301 반환
Nginx 리디렉션은 Nginx HttpRewriteModule을 사용합니다. 다음은 사용 방법에 대한 간략한 설명입니다.
rewrite 명령
nginx의 rewrite는 apache의 rewriterule과 동일합니다(대부분의 경우 원래 apache의 rewrite 규칙에 직접 따옴표를 추가할 수 있음). 서버, 위치 및 IF 조건 판단 블록에서 사용할 수 있습니다. 명령 형식은 다음과 같습니다.
rewrite 정규식 대체 대상 플래그 태그
플래그 태그는 다음 형식을 사용할 수 있습니다.
last - 기본 이 플래그를 사용합니다. 모든 것에.
break - Rewirte를 중단하고 더 이상 일치를 계속하지 않습니다.
redirect - 임시 리디렉션의 HTTP 상태 302를 반환합니다.
permanent - 영구 리디렉션의 HTTP 상태 301을 반환합니다.
특별 주의:
last 및 break는 URL 재작성을 구현하는 데 사용됩니다. 브라우저 주소 표시줄의 URL 주소는 변경되지 않지만 서버 측에서 액세스하는 경로는 변경됩니다.
redirect 및 영구는 URL 점프 및 영구를 구현하는 데 사용됩니다. 탐색 후 URL 주소는 브라우저 주소 표시줄에 표시됩니다.
예를 들어, 다음 단락은 특정 디렉터리 아래의 파일을 다른 디렉터리로 리디렉션하도록 nginx를 설정합니다. $2는 두 번째 디렉터리에 해당합니다. 대괄호(. *) 해당 문자열:
location /download/ {
rewrite ^(/download/.*)/m/(.*)..*$ $1/nginx-rewrite/$2.gzbreak;
}
nginx 리디렉션의 IF 조건 판단
서버 상황과 위치 상황 모두 nginx의 IF 조건 판단을 사용할 수 있습니다.
정규 표현식
예:
일치 판단
~은 대소문자를 구분하는 일치를 의미하고, !~는 대소문자를 구분하지 않는 것을 의미합니다.
~*는 대소문자를 구분하지 않는 일치를 의미하고, !~*는 대소문자를 구분하지 않는 일치를 의미합니다. 🎜> 예를 들어 다음 설정 nginx는 사용자가 ie를 사용할 때 /nginx-ie 디렉터리로 리디렉션됩니다.
if ($http_user_agent ~ MSIE) {
rewrite ^(.*)$ /nginx-ie /$1 break;
}
파일 및 디렉터리 판단
-f 및 !-f 파일 존재 여부 판단
-d 및 !-d 디렉터리 존재 여부 판단
-e 및 !-e 파일이나 디렉터리가 존재하는지 확인
-x 및 !-x는 파일이 실행 가능한지 확인
예를 들어, 다음은 파일이나 디렉터리가 존재하지 않을 때 리디렉션하도록 nginx를 설정합니다.
if (!- e $request_filename) {
proxy_pass http://127.0.0.1;
}
return
http 코드 반환(예: nginx 안티 핫링크 설정: