本文為您介紹EdgeScript指令碼中所有內建變數的含義和對應nginx原生變數。
內建變數名前的特殊符號($)是為了強調內建變數屬性,刪除後不影響使用。
內建變數不允許擔當左值,即內建變數不允許被賦值。
每條EdgeScript規則中最多支援200個變數,如果變數超過200個,您可以參考函數拆分樣本請將整體邏輯拆分為多個自訂函數,並且保證每個自訂函數中變數不超過200個。
EdgeScript內建變數。
內建變數名 | 含義 | 對應nginx原生變數 |
$arg_{name} |
| $arg_ 說明
|
$http_{name} | 要求標頭中的name值。 | $http_ 說明
|
$cookie_{name} | 請求cookie頭中的name值。 | $cookie_ 說明
|
$scheme | 協議類型。 | $scheme |
$server_protocol | 協議版本。 | $server_protocol |
$host | 原始host。 | $host |
$uri | 原始URI。 | 無 |
$args |
| $args |
$request_method | 要求方法。 | $request_method |
$request_uri |
| $request_uri |
$remote_addr | 客戶的IP地址(即x-forwarded-for要求標頭攜帶的第一個IP)。 | $remote_addr |
函數拆分樣本
當您的規則中變數超過200個時,需要您將整體邏輯拆分為多個自訂函數,並且保證每個自訂函數中變數不超過200個。
#如果變數超限制,可以這樣拆分
def judeg_arg() {
#參數判斷相關邏輯
x
x
}
def judeg_time() {
#時間判斷相關邏輯
x
x
}
def judeg_token() {
#加密判斷相關邏輯
x
x
}
judeg_arg()
judeg_time()
judeg_token()