nginx rewrite基礎配置

2021-10-24 12:08:29 字數 3272 閱讀 4670

rewirte主要的功能就是實現url的跳轉

為指定變數設定乙個值。該值可以包含文字、變數及其組合。

syntax:	set

$variable value;

default: —

context: server, location, if

syntax:	if

(condition)

default: —

context: server, location

可判斷的條件:

▪ 變數名字。如果變數的值為空字串或"0",則返回false。

▪ 使用"="和"!="運算子將變數與字串進行比較。

▪ 使用"~"(區分大小寫的匹配)和"~*"(不區分大小寫的匹配)運算子將變數或者字串與正規表示式進行匹配。

正規表示式可以包含捕獲,這些捕獲可用於以後在$1

..$9變數中呼叫。

也可以使用負運算子"!~"和"!~*",即取反。

如果正規表示式包含"}"或":"字元,則整個表示式應用單引號或雙引號引起來。

▪ 使用"-f"和"! -f"運算子檢查檔案是否存在1。

▪ 使用"-d"和"!-d"運算子檢查目錄是否存在。

▪ 使用"-e"和"!-e"運算子檢查檔案、目錄或符號鏈結是否存在。

▪ 使用"-x"和"!-x"算符檢查可執行檔案。

示例:

# 判斷$http_user_agent(即客戶端瀏覽器相關資訊)的值是否包含msie。if(

# 雙引號中括號內的內容即捕獲的內容,乙個括號代表乙個捕獲,後面可以按順序使用$1..$9變數進行呼叫。

# 判斷$http_cookie(即客戶端cookie資訊)id是否符合後面正規表示式規律,符合則設定乙個$id變數,並將$1的值賦值給它。if(

)# 判斷$request_method(即http請求方法)的值是否等於post,如果等於則返回405狀態碼。if(

$request_method

= post)

# 判斷$slow(自行設定的變數)的值是否不為空或者不等於0,成立則限制向客戶端傳輸資料的速率為10km每秒。if(

$slow

)# 判斷$invalid_referer(使用valid_referers自行設定的變數)的值是否不為空或者不等於0,成立則返回403狀態碼。if(

$invalid_referer

)

停止處理並將指定的**返回給客戶端,code代表狀態碼。

syntax:	return code [text]

;return code url;

return url;

default: —

context: server, location, if

示例:

server 

} location /test2

} location /test3

}}

注意:如果寫成這樣"return www.baidu.com;「會報錯,要麼寫成"return 要麼寫成"return 302 www.baidu.com;"。

如果指定的正規表示式與請求uri匹配,則uri將按照替換字串中的指定的值進行更改。

syntax:	rewrite regex replacement [flag]

;default: —

context: server, location, if

flag標記:

last:如果在location內部,遇到last,則本location內後續指令都不再執行,會跳出本location,重新在server中尋找匹配的location。

break:如果在location內部遇到了break,則本location內以及後面的所有的location內的指令都不在執行。

示例:

server 

location /2.html

location /3.html

}

redirect:給客戶端返回帶有302狀態碼的臨時重定向,如果replacement(即替換的字串)的值不是以"http://"和"https://"開頭的情況下,可以使用這個臨時重定向。關閉nginx,就不會跳轉了。

permanent:給客戶端返回帶有301狀態碼的永久重定向。關閉nginx,仍然可以跳轉,除非清除瀏覽器快取。

server if(

#判斷$ip變數是否等於0,如果等於直接跳轉到維護頁面。if(

$ip= 0)

location /

}

當然這裡只是使用rewrite方式演示,實際使用訪問限制模組更加方便高效。

server 

#訪問受限會返回403狀態碼

error_page 403 = @error;

location @error

server 

location /admin

#判斷$ip變數是否等於0,如果等於直接跳轉到維護頁面。if(

$ip= 0)

}}

nginx rewrite 重寫規則

1注意點 在重寫的時候,一定要注意,if 和後面的括號是要有乙個空格的 if host com 2.在重寫的時候,需要使用正規表示式 host 代表網域名稱,首先判斷網域名稱,來看這個正則 rewrite de permanent 代表網域名稱下面的 com de 這個路徑下面的,重寫為 其中 1代...

nginx Rewrite語法詳解

重寫中用到的指令 if 條件 設定條件,再進行重寫 set 設定變數 return 返回狀態碼 break 跳出rewrite rewrite 重寫 跳轉的話url都變了,變成重新http請求404.html,而內部rewrite,上下文沒變,就是說 fastcgi script name 仍然是 ...

Nginx Rewrite規則初探

nginx rewrite nginx url位址重寫 rewrite 主要的功能就是實現url的重寫,nginx的rewrite規則採用pcre,perl相容正規表示式的語法規則匹配,如果需要nginx的rewrite功能,在編譯nginx之前,需要編譯安裝pcre庫。通過rewrite規則,可以...