nginx學習-ngx_http_rewrite_module模塊

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或其餘狀態碼。bash

rewrite 指令

rewrite 指令是一個經常使用的指令,根據訪問url定位真實地址cookie

Syntax:	rewrite regex replacement [flag];
Default: —
Context: server, location, if
複製代碼

下面表示當訪問地址以 .js 後綴開頭的時候ui

若是匹配正則表達式成功,就直接重寫到js目錄下。url

location ~ (.*).js$ {
    rewrite (.*) /js/$1 break;
}
複製代碼

注意這個js的目錄地址, 是相對於root指定的目錄爲根目錄尋找的。 rewrite第三個參數爲break,表示中斷,再也不繼續向下執行.spa

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;
}

複製代碼
相關文章
相關標籤/搜索