Understand Nginx Redirect
ngx_http_rewrite_module
은 다음 과 같은 명령 을 포함한다.break if return rewrite rewrite_log set uninitialized_variable_warn
break
break 명령 은 현재 ngx 를 정지 하 는 데 사 용 됩 니 다.http_rewrite_module 명령 집합 (current set of ngx http rewrite module directives).
예 를 들 면:
if ($slow) {
limit_rate 10k;
break;
}
if
조건 판단, 조건 이 충족 되면 괄호 안의 명령 이 실 행 됩 니 다.조건 은:
변수 이름: true or false 비교 연산: = or! =정규 표현 식: ~ (대소 문자 매 칭 case - sensitive matching 구분) or ~ * (대소 문자 매 칭 case - insensitive matching 구분 하지 않 음) - f: 파일 이 존재 하 는 지 판단 - d: 파일, 폴 더, 기호 연결 이 존재 하 는 지 판단 - x: 파일 이 실행 가능 한 지 확인
예 를 들 면:
if ($http_user_agent ~ MSIE) {
rewrite ^(.*)$ /msie/$1 break;
}
if ($http_cookie ~* "id=([^;]+)(?:;|$)") {
set $id $1;
}
if ($request_method = POST) {
return 405;
}
if ($slow) {
limit_rate 10k;
}
if ($invalid_referer) {
return 403;
}
return
클 라 이언 트 에 게 특별한 http 코드 를 처리 하지 않 고 발휘 합 니 다.
return (301 | 302 | 303 | 307) url;
return (1xx | 2xx | 4xx | 5xx) ["text"];
rewrite
rewrite regex URL [flag];
요청 한 URI 가 regex 에 만족 하면 URI 가 교 체 됩 니 다.바 뀐 URI 가 http 또는 https 로 시작 하면 나중에 처리 하지 않 고 클 라 이언 트 에 게 되 돌려 줍 니 다.
flag
의 선택 값 은:last: 현재 ngx 멈 추기http_rewrite_module 명령 과 바 뀐 URI 로 새로운 location 을 찾 습 니 다.break: 현재 ngx 멈 추기http_rewrite_module 명령 * * * 집합 * * * *.redirect: 302. permanent: 영구적 인 퍼 가기: 301 code 를 되 돌려 줍 니 다.
메모:
last
명령 은 새로운 location 을 다시 찾 고 break 는 현재 location or if direct 에서 벗 어 납 니 다.따라서 location 내부 에 사용 할 때 last 는 튀 어 나 와 다시 일치 합 니 다.location /download/ {
rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 break;
rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra break;
return 403;
}
URL: / download / a / media / a. mp3 에 접근 하면.위 에 일치 합 니 다:
/download/a/mp3/a.mp3
.break 를 last 로 바 꾸 면:
location /download/ {
rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last;
rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra last;
return 403;
}
그러면 과정 은:
/download/a/media/a.mp3-->/download/a/mp3/a.mp3-->
/download/a/mp3/a.mp3-->403
set
변 수 를 설정 합 니 다.eg:
set $is_mobile "pc";
if ( $http_user_agent ~* "(Android|iPhone|iPod|Symbian|IEMobile|BlackBerry)"){
set $is_mobile "mobile";
}
활용 단어 참조
예: nginx blog:
server {
listen 80;
server_name www.old-name.com old-name.com;
return 301 $scheme://www.new-name.com$request_uri;
#return 301 $scheme://www.new-name.conm;
#rewrite ^ $scheme://www.new-name.com$request_uri permanent;
#rewrite ^/(.*)$ $scheme://www.new-name.com/$1 permanent;
}
add or remove www
# add 'www'
server {
listen 80;
listen 443 ssl;
server_name domain.com;
return 301 $scheme://www.domain.com$request_uri;
#rewrite ^(.*)$ $scheme://www.domain.com$1 permanent;
}
# remove 'www'
server {
listen 80;
listen 443 ssl;
server_name www.domain.com;
return 301 $scheme://domain.com$request_uri;
}
기본 퍼 가기:
server {
listen 80 default_server;
listen 443 ssl default_server;
server_name _;
return 301 $scheme://www.domain.com;
}
강제 HTTPS:
server {
listen 80;
server_name www.domain.com;
return 301 https://www.domain.com$request_uri;
}
또는:
# NOT RECOMMENDED
if ($scheme != "https") {
rewrite ^ https://www.mydomain.com$uri permanent;
}
이 건 추가 처리 가 필요 해서 추천 하지 않 습 니 다.
location / {
try_files $uri $uri/ /index.php?$args;
}
지원 되 지 않 는 파일 제거:
location ~ \.(aspx|php|jsp|cgi)$ {
return 410;
#deny all;
}
사용자 정의 경로:
rewrite ^/listings/(.*)$ /listing.html?listing=$1 last;
위 챗 공식 계 정: myersguo
참고 자료
https://www.nginx.com/blog/creating-nginx-rewrite-rules/ http://nginx.org/en/docs/http/ngx_http_rewrite_module.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.