すべてのプロダクト
Search
ドキュメントセンター

Edge Security Acceleration:リクエスト処理関数

最終更新日:Jun 18, 2026

このトピックでは、リクエスト処理関数の構文、説明、パラメーター、戻り値について説明します。また、これらの関数の例も示します。

add_req_header

この関数の詳細を次の表に示します。
項目説明
構文add_req_header(name, value [, append])
説明リクエストがオリジンサーバーにリダイレクトされる前に、リクエストヘッダーを追加します。
パラメーター
  • name:追加するリクエストヘッダーの名前。データの型:文字列。
  • value:追加するリクエストヘッダーの値。データの型:文字列。
  • append:同じ名前のリクエストヘッダーが既に存在する場合に、指定した value のリクエストヘッダーを追加するかどうかを指定します。有効な値:true と false。デフォルト値:false。データの型:ブール値。このパラメーターを false に設定すると、指定した値が既存のリクエストヘッダーの値を上書きします。
戻り値デフォルトでは true を返し、指定されたリクエストヘッダーが無効な場合は false を返します。
add_req_header('USER-DEFINED-REQ-1', '1')
add_req_header('USER-DEFINED-REQ-1', 'x', true)
add_req_header('USER-DEFINED-REQ-2', '2')
del_req_header('USER-DEFINED-REQ-2')

注:次のリクエストヘッダーが追加されます:
USER-DEFINED-REQ-1: 1
USER-DEFINED-REQ-1: x

USER-DEFINED-REQ-2 ヘッダーは追加された後に削除されます。したがって、USER-DEFINED-REQ-2 リクエストヘッダーは、オリジンサーバーにリダイレクトされるリクエストには含まれません。

del_req_header

この関数の詳細を次の表に示します。
項目説明
構文del_req_header(name)
説明リクエストがオリジンサーバーにリダイレクトされる前に、リクエストからリクエストヘッダーを削除します。
パラメーターname:削除するリクエストヘッダーの名前。データの型:文字列。
戻り値デフォルトでは true を返し、指定されたリクエストヘッダーが無効な場合は false を返します。
add_req_header('USER-DEFINED-REQ-1', '1')
add_req_header('USER-DEFINED-REQ-1', 'x', true)
add_req_header('USER-DEFINED-REQ-2', '2')
del_req_header('USER-DEFINED-REQ-2')

注:次のリクエストヘッダーが追加されます:
USER-DEFINED-REQ-1: 1
USER-DEFINED-REQ-1: x

USER-DEFINED-REQ-2 ヘッダーは追加された後に削除されます。したがって、USER-DEFINED-REQ-2 リクエストヘッダーは、オリジンサーバーにリダイレクトされるリクエストには含まれません。

add_rsp_header

この関数の詳細を次の表に示します。
項目説明
構文add_rsp_header(name, value [, append])
説明レスポンスヘッダーを追加します。
パラメーター
  • name:追加するレスポンスヘッダーの名前。データの型:文字列。
  • value:追加するレスポンスヘッダーの値。データの型:文字列。
    value パラメーターに次のいずれかの式を指定して、応答フェーズで値を動的に置き換えることができます:
    • ${x}:ngx.var.x の値に置き換えられます。
    • @{y}:response header y の値に置き換えられます。
  • append:同じ名前のレスポンスヘッダーが既に存在する場合に、指定した value のレスポンスヘッダーを追加するかどうかを指定します。有効な値:true と false。デフォルト値:false。データの型:ブール値。このパラメーターを false に設定すると、指定した値が既存のレスポンスヘッダーの値を上書きします。
戻り値デフォルトでは true を返し、指定されたレスポンスヘッダーが無効な場合は false を返します。
add_rsp_header('USER-DEFINED-RSP-1', '1')
add_rsp_header('USER-DEFINED-RSP-1', 'x', true)
add_rsp_header('USER-DEFINED-RSP-2', '2')
del_rsp_header('USER-DEFINED-RSP-2')

注:次のレスポンスヘッダーが追加されます:
USER-DEFINED-RSP-1: 1
USER-DEFINED-RSP-1: x

USER-DEFINED-RSP-2 ヘッダーは追加された後に削除されます。したがって、USER-DEFINED-RSP-2 ヘッダーはレスポンスに含まれません。

del_rsp_header

この関数の詳細を次の表に示します。
項目説明
構文del_rsp_header(name)
説明レスポンスヘッダーを削除します。
パラメーターname:削除するレスポンスヘッダーの名前。データの型:文字列。
戻り値デフォルトでは true を返し、指定されたレスポンスヘッダーが無効な場合は false を返します。
add_rsp_header('USER-DEFINED-RSP-1', '1')
add_rsp_header('USER-DEFINED-RSP-1', 'x', true)
add_rsp_header('USER-DEFINED-RSP-2', '2')
del_rsp_header('USER-DEFINED-RSP-2')

次のレスポンスヘッダーが追加されます:
USER-DEFINED-RSP-1: 1
USER-DEFINED-RSP-1: x

USER-DEFINED-RSP-2 ヘッダーは追加された後に削除されます。したがって、USER-DEFINED-RSP-2 ヘッダーはレスポンスに含まれません。

encode_args

この関数の詳細を次の表に示します。
項目説明
構文encode_args(d)
説明d で指定された辞書内の k/v ペアを、k1=v1&k2=v2 のフォーマットで URI エンコードされた文字列に変換します。
パラメーターd:変換する辞書。
戻り値URI エンコードされた文字列を返します。
my_args = []
set(my_args, 'signature', 'da9dc4b7-87ae-4330-aaaf-e5454e2c2af1')
set(my_args, 'algo', 'private sign1')
my_args_str = encode_args(my_args)
add_rsp_header('X-DSL-ENCODE-ARGS', my_args_str)

to_args = decode_args(my_args_str)
if get(to_args, 'algo') {
    add_rsp_header('X-DSL-DECODE-ARGS-ALGO', get(to_args, 'algo'))
}
if get(to_args, 'signature') {
    add_rsp_header('X-DSL-DECODE-ARGS-SIGN', get(to_args, 'signature'))
}

出力:次のレスポンスヘッダーが追加されます:
X-DSL-ENCODE-ARGS: signature=da9dc4b7-87ae-4330-aaaf-e5454e2c2af1&algo=private%20sign1
X-DSL-DECODE-ARGS-ALGO: private sign1
X-DSL-DECODE-ARGS-SIGN: da9dc4b7-87ae-4330-aaaf-e5454e2c2af1

decode_args

この関数の詳細を次の表に示します。
項目説明
構文decode_args(s)
説明k1=v1&k2=v2 のフォーマットの URI エンコードされた文字列を、辞書型の文字列に変換します。
パラメーターs:変換する文字列。
戻り値指定された文字列から変換された辞書オブジェクトを返します。
my_args = []
set(my_args, 'signature', 'da9dc4b7-87ae-4330-aaaf-e5454e2c2af1')
set(my_args, 'algo', 'private sign1')
my_args_str = encode_args(my_args)
add_rsp_header('X-DSL-ENCODE-ARGS', my_args_str)

to_args = decode_args(my_args_str)
if get(to_args, 'algo') {
    add_rsp_header('X-DSL-DECODE-ARGS-ALGO', get(to_args, 'algo'))
}
if get(to_args, 'signature') {
    add_rsp_header('X-DSL-DECODE-ARGS-SIGN', get(to_args, 'signature'))
}

出力:次のレスポンスヘッダーが追加されます:
X-DSL-ENCODE-ARGS: signature=da9dc4b7-87ae-4330-aaaf-e5454e2c2af1&algo=private%20sign1
X-DSL-DECODE-ARGS-ALGO: private sign1
X-DSL-DECODE-ARGS-SIGN: da9dc4b7-87ae-4330-aaaf-e5454e2c2af1

rewrite

項目説明
構文rewrite(url, flag, code)
説明URI の書き換えまたはリダイレクトを実行します。
パラメーター
  • url (文字列):操作のターゲット URL。
    • flagredirect または break の場合、URI パスのみが書き換えられます。url パラメーターは新しいターゲット URI を指定します。
    • flagenhance_redirect または enhance_break の場合、URI 全体 (パスとクエリパラメーター) が置き換えられます。url パラメーターは新しいターゲット URI とそのパラメーターを指定します。
  • (文字列):書き換えモード。
    • code: 元のクエリパラメーターを保持したまま、URI パスのみを書き換えてリダイレクトを実行します。デフォルトでは、302 HTTP ステータスコードを使用します。パラメーターを使用して、別のコード (301、303、307、または 308) を指定できます。
    • : 元のクエリパラメーターを保持しながら、URI パスを指定された URL に書き換えます。
    • redirect: リダイレクトと同様ですが、パスとクエリパラメーターを含む URI 全体を変更します。
    • break: 中断と同様ですが、パスとクエリパラメーターを含む URI 全体を変更します。
  • code (数値、任意):リダイレクトに使用する HTTP ステータスコード。このパラメーターは、flagredirect または enhance_redirect の場合にのみ適用されます。

戻り値
  • true は、書き換え操作 (, ) の場合に関数から返されます。
  • リダイレクト操作 (redirectenhance_redirect) の場合、関数は現在のリクエスト処理を終了し、値を返しません。
if and($arg_mode, eq($arg_mode, 'rewrite:enhance_break')) {
  rewrite('/a/example/examplefile.txt?k=v', 'enhance_break')
}
// オリジンリクエストとキャッシュキーの URI とクエリパラメーターを /a/example/examplefile.txt?k=v に書き換えます。

if and($arg_mode, eq($arg_mode, 'rewrite:enhance_redirect')) {
  rewrite('/a/example/examplefile.txt?k=v', 'enhance_redirect')
}
if and($arg_mode, eq($arg_mode, 'rewrite:enhance_redirect_301')) {
  rewrite('/a/example/examplefile.txt?k=v', 'enhance_redirect', 301)
}
// 302 または 301 の HTTP ステータスコードで、クライアントを /a/example/examplefile.txt?k=v にリダイレクトします。

if and($arg_mode, eq($arg_mode, 'rewrite:break')) {
  rewrite('/a/example/examplefile.txt', 'break')
}
// オリジンリクエストとキャッシュキーの URI パスを /a/example/examplefile.txt に書き換え、元のクエリパラメーターを保持します。

if and($arg_mode, eq($arg_mode, 'rewrite:redirect')) {
  rewrite('/a/example/examplefile.txt', 'redirect')
}
if and($arg_mode, eq($arg_mode, 'rewrite:redirect_301')) {
  rewrite('/a/example/examplefile.txt', 'redirect', 301)
}
// 302 または 301 の HTTP ステータスコードで、クライアントを /a/example/examplefile.txt にリダイレクトし、元のクエリパラメーターを保持します。

say

この関数の詳細を次の表に示します。
項目説明
構文say(arg)
説明レスポンスボディを出力し、出力の末尾に改行文字を追加します。
パラメーターarg:レスポンスボディのコンテンツ。データの型:任意。
戻り値なし。
say('hello')
print('byebye')
print('byebye')

出力:
hello
byebyebyebye

print

この関数の詳細を次の表に示します。
項目説明
構文print(arg)
説明レスポンスボディを出力します。この関数は say() 関数とは異なり、出力の末尾に改行文字を追加しません。
パラメーターarg:レスポンスボディのコンテンツ。データの型:任意。
戻り値なし。
say('hello')
print('byebye')
print('byebye')

出力:
hello
byebyebyebye

exit

この関数の詳細を次の表に示します。
項目説明
構文exit(code [, body])
説明指定された code で現在のリクエストを終了します。body パラメーターも設定した場合、指定されたレスポンスボディを含むレスポンスが返されます。
パラメーター
  • code:返す HTTP ステータスコード。
  • body:レスポンスボディ。
戻り値なし。
  • 例 1
    if not($arg_key) {
        exit(403)
    }
    注:リクエストに key パラメーターが含まれていない場合、リクエストは拒否され、HTTP 403 ステータスコードが返されます。
    
    if not($cookie_user) {
        exit(403, 'not cookie user')
    }
    注:リクエストに cookie_user が含まれていない場合、リクエストは拒否され、「not cookie user」というボディを含むレスポンスが HTTP 403 ステータスコードとともに返されます。
    
    if not(0) {
        exit(403)
    }
    注:not(0) 関数は false の値を返します。
    
    if not(false) {
        exit(403)
    }
    注:not(false) 関数は true の値を返します。
  • 例 2
    pcs = capture_re($request_uri,'^/([^/]+)/([^/]+)([^?]+)\?(.*)')
    sec1 = get(pcs, 1)
    sec2 = get(pcs, 2)
    sec3 = get(pcs, 3)
    if or(not(sec1), not(sec2), not(sec3)) {
       add_rsp_header('X-TENGINE-ERROR', 'auth failed - missing necessary uri set')
       exit(403)
    }
    digest = md5(concat(sec1, sec3))
    if ne(digest, sec2) {
        add_rsp_header('X-TENGINE-ERROR', 'auth failed - invalid digest')
        exit(403)
    }

get_rsp_header

この関数の詳細を次の表に示します。
項目説明
構文get_rsp_header(str)
説明レスポンスヘッダーを取得します。
パラメーターstr:取得するレスポンスヘッダー。データの型:文字列。
戻り値指定されたレスポンスヘッダーを文字列、数値、辞書、またはブール値のデータ型で返します。
  • 指定されたレスポンスヘッダーが存在する場合、そのレスポンスヘッダーが返されます。レスポンスヘッダーのデータの型は辞書または文字列です。
  • 指定されたレスポンスヘッダーが存在しない場合、false の値が返されます。
ct = get_rsp_header('content-type')
if ct {
    add_rsp_header('origin-content-type', 'is')
} else {
      add_rsp_header('origin-content-type', 'no')
}

add_rsp_cookie

この関数の詳細を次の表に示します。
項目説明
構文add_rsp_cookie(k, v [,properties])
説明レスポンス Cookie を設定します。この関数が呼び出されるたびに、新しい Set-Cookie レスポンスヘッダーが生成されます。
パラメーター
  • k:Cookie の名前。
  • v:Cookie の値。
  • properties:Cookie のプロパティ。このパラメーターは任意です。詳細については、「Set-Cookie」をご参照ください。
戻り値指定された Cookie が設定された場合は true の値が返され、設定に失敗した場合は false の値が返されます。
add_rsp_cookie('user', 'edgescript')

add_rsp_cookie('login_time', tostring(now()), [
    'path' = '/'
])

expires = cookie_time(time())
add_rsp_cookie('psid', 'SDF93745HFSDF2934JKHG', [
    'path' = '/play',
    'domain' = 'foo.com',
    'secure' = true,
    'httponly' = true,
    'expires' = expires,
    'max_age' = 100,
    'samesite' = 'Strict',
    'extension' = 'xxt3s'
])
レスポンス:
Set-Cookie: user=edgescript
Set-Cookie: login_time=1582538968.912; Path=/
Set-Cookie: psid=SDF93745HFSDF2934JKHG; Expires=Mon, 24-Feb-20 10:09:28 GMT; Max-Age=100; Domain=foo.com; Path=/play; Secure; HttpOnly; SameSite=Strict; xxt3s