return 指令
我們看官方手冊的說明:
Syntax: return code [text];
return code URL;
return URL;
Default: —
Context: server, location, if
複製程式碼
location ~ (.*).js$ {
return 500; #返回500狀態碼
}
location ~ (.*).js$ {
return 500 "error"; #返回500狀態碼 同時列印error
}
location ~ (.*).js$ {
return 302 http://www.baidu.com; # 302狀態碼,跳轉到百度
}
複製程式碼
注意當使用 return url 指令操作的時候,只能使用302(臨時重定向) 301(永久重定向) 類似跳轉,而不能使用500或其他狀態碼。
rewrite 指令
rewrite 指令是一個常用的指令,根據訪問url定位真實地址
Syntax: rewrite regex replacement [flag];
Default: —
Context: server, location, if
複製程式碼
下面表示當訪問地址以 .js 字尾開頭的時候
如果匹配正規表示式成功,就直接重寫到js目錄下。
location ~ (.*).js$ {
rewrite (.*) /js/$1 break;
}
複製程式碼
注意這個js的目錄地址, 是相對於root指定的目錄為根目錄尋找的。 rewrite第三個引數為break,表示中斷,不再繼續向下執行.
rewrite第三個引數取值:
last
使用了last 指令,rewrite 後會跳出location
break
使用break直接終止繼續進行匹配
redirect
表示302臨時重定向
permanent
表示301永久重定向
複製程式碼
是否記錄 rewrite_log
Syntax: rewrite_log on | off;
Default: rewrite_log off;
Context:http, server, location, if
複製程式碼
if條件判斷
Syntax: if (condition) { ... }
Default: —
Context: server, location
複製程式碼
下面是一些常用的判斷示例
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;
}
複製程式碼