1、nginx rewrite規則相關指令:
功能:實現url的重寫,通過rewrite規則,可以實現規範的url,根據變數來做url轉向及選擇配置。
作用範圍:server{},location{},if{}
優先順序:
執行server塊的rewrite指令 > 執行location匹配 >執行選定的location中的rewrite指令。
nginx rewrite規則相關指令有if、rewrite、set、return、break等,其中rewrite是最關鍵的指令。
1.1)break指令
語法:break
預設值:none
使用環境:server,location,if
作用:break 終止匹配, 不再匹配後面的規則
eg:
if (slow)1.2)if指令語法:if(condition)
預設值:none
使用環境:server,location
作用:該指令用於檢測乙個條件是否符合,如果條件符合,則執行大括號內的語句。if指令不支援巢狀,不支援多個條件&&和||處理。
以下資訊可以被指定為條件:
(1)變數名,錯誤的值包括:空字串「」,或者任何以0開始的字串。
(2)變數比較可以使用「=」和「!=」(等於和不等於)運算子
(3)正規表示式模式匹配可以使用「~」和「~*」符號
(4)~ 為區分大小寫匹配
(5)~* 為不區分大小寫匹配
(6)!~和!~*分別為區分大小寫不匹配及不區分大小寫不匹配
(7)-f和!-f用來判斷是否存在檔案
(8)-d和!-d用來判斷是否存在目錄
(9)-e和!-e用來判斷是否存在檔案或目錄
(10)-x和!-x用來判斷檔案是否可執行
1.3)return指定:
語法:return code
預設值:none
使用環境:server,location,if
作用:該指令用於結束規則的執行並返回狀態碼給客戶端。狀態碼可以使用這些值:204、400、402-406、408、410、411、413、416、500-504.此外,非標準狀態碼444將以不傳送任何header頭的方式結束連線:
eg:訪問url以.sh和。bash結束,返回狀態碼403.
location `.*\.(sh|bash)?$1.4)rewrite指令:語法: rewrite regex replacement flag
預設值:none
使用環境:server,location,if
作用:該指令根據變大時來重定向url,或者修改字串,指令根據配置檔案中的順序來執行。
rewrite指令的最後一下引數為flag標記,支援的flag標記有:
last 相當於apache裡的[l]標記,表示完成rewrite
break 本條規則匹配完成之後,終止匹配,不再匹配後面的規則。
redirect 返回302臨時重定向 位址列會顯示跳轉後的位址
permanent 返回301永久重定向 位址列會顯示跳轉後的位址
1.5)set指令:
語法:set variable value
預設值:none
使用環境:server,location,if
作用:該指令用於定義乙個變數,並給變數賦值,變數的值可以為文字,變數及文字變數的聯合。
eg:set $varname 'hello'
1.6) uninitalized_variable_warn指令:
語法:unitialized_variable_warn onloff
預設值:unitialized_variable_warn on
使用環境:http、server、location、if
作用:該指令用於開啟或者關閉未初始化變數的警告資訊,預設值為開啟。
1.7)nginx rewrite可以用到的全域性變數:
$args : #這個變數等於請求行中的引數,同$query_string
$content_length : 請求頭中的content-length欄位。
$content_type : 請求頭中的content-type欄位。
$document_root : 當前請求在root指令中指定的值。
$host : 請求主機頭欄位,否則為伺服器名稱。
$http_user_agent : 客戶端agent資訊
$http_cookie : 客戶端cookie資訊
$limit_rate : 這個變數可以限制連線速率。
$request_method : 客戶端請求的動作,通常為get或post。
$remote_port : 客戶端的埠。
$remote_user : 已經經過auth basic module驗證的使用者名稱。
$request_filename : 當前請求的檔案路徑,由root或alias指令與uri請求生成。
$scheme : http方法(如http,https)。
$server_protocol : 請求使用的協議,通常是http/1.0或http/1.1。
$server_name : 伺服器名稱。
$server_port : 請求到達伺服器的埠號。
$request_uri : 包含請求引數的原始uri,不包含主機名,如:」/foo/bar.php?arg=baz」。
$uri : 不帶請求引數的當前uri,$uri不包含主機名,如」/foo/bar.html」。
$document_uri : 與$uri相同。
Nginx 二 nginx的安裝
使用命令 tar zxvf pcre 8.37.tar.gz 進入pcre目錄 cd pcre 8.37 執行命令 configure 掃瞄依賴建立依賴 make 安裝 make install 檢視版本 pcre config version 成功 8.37 為版本號 執行命令 yum y ins...
nginx 二 nginx的安裝
把原始碼解壓縮之後,在終端裡執行如下命令 configure make make install 預設情況下,nginx 會被安裝在 usr local nginx。通過設定編譯選項,你可以改變這個設定 乙個寫好了的編譯選項 nginx的使用比較簡單,就是幾條命令。常用到的命令如下 nginx s ...
Nginx 實戰 nginx的日誌配置
nginx的錯誤日誌 nginx錯誤日誌平時不用太關注,但是一旦出了問題,就需要借助錯誤日誌來判斷問題所在。配置引數格式 error log path to log level nginx錯誤日誌級別 常見的錯誤日誌級別有debug info notice warn error crit alert...