All Products
Search
Document Center

Edge Security Acceleration:Fungsi pemrosesan permintaan

Last Updated:Jun 17, 2026

Topik ini menjelaskan sintaks, deskripsi, parameter, dan nilai kembali dari fungsi pemrosesan permintaan, serta menyediakan contoh penggunaannya.

add_req_header

Tabel berikut menjelaskan detail fungsi ini.
ItemDeskripsi
Sintaksadd_req_header(name, value [, append])
DeskripsiMenambahkan header permintaan ke permintaan sebelum dialihkan ke origin server.
Parameter
  • name: nama header permintaan yang ingin Anda tambahkan. Tipe data: string.
  • value: nilai header permintaan yang ingin Anda tambahkan. Tipe data: string.
  • append: menentukan apakah akan menambahkan header permintaan dengan value yang ditentukan jika header permintaan dengan nama yang sama sudah ada. Nilai yang valid: true dan false. Nilai default: false. Tipe data: Boolean. Jika parameter ini diatur ke false, nilai yang ditentukan akan menimpa nilai header permintaan yang sudah ada.
Nilai kembaliMengembalikan true secara default dan mengembalikan false jika header permintaan yang ditentukan tidak valid.
Contoh
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')

Catatan: Header permintaan berikut ditambahkan:
USER-DEFINED-REQ-1: 1
USER-DEFINED-REQ-1: x

Header USER-DEFINED-REQ-2 ditambahkan lalu dihapus. Oleh karena itu, header permintaan USER-DEFINED-REQ-2 tidak disertakan dalam permintaan yang dialihkan ke origin server.

del_req_header

Tabel berikut menjelaskan detail fungsi ini.
ItemDeskripsi
Sintaksdel_req_header(name)
DeskripsiMenghapus header permintaan dari permintaan sebelum dialihkan ke origin server.
Parametername: nama header permintaan yang ingin Anda hapus. Tipe data: string.
Nilai kembaliMengembalikan true secara default dan mengembalikan false jika header permintaan yang ditentukan tidak valid.
Contoh
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')

Catatan: Header permintaan berikut ditambahkan:
USER-DEFINED-REQ-1: 1
USER-DEFINED-REQ-1: x

Header USER-DEFINED-REQ-2 ditambahkan lalu dihapus. Oleh karena itu, header permintaan USER-DEFINED-REQ-2 tidak disertakan dalam permintaan yang dialihkan ke origin server.

add_rsp_header

Tabel berikut menjelaskan detail fungsi ini.
ItemDeskripsi
Sintaksadd_rsp_header(name, value [, append])
DeskripsiMenambahkan header respons.
Parameter
  • name: nama header respons yang ingin Anda tambahkan. Tipe data: string.
  • value: nilai header respons yang ingin Anda tambahkan. Tipe data: string.
    Anda dapat menentukan salah satu ekspresi berikut untuk parameter value agar nilainya dapat diganti secara dinamis pada fase respons:
    • ${x}: diganti dengan nilai ngx.var.x.
    • @{y}: diganti dengan nilai response header y.
  • append: menentukan apakah akan menambahkan header respons dengan value yang ditentukan jika header respons dengan nama yang sama sudah ada. Nilai yang valid: true dan false. Nilai default: false. Tipe data: Boolean. Jika parameter ini diatur ke false, nilai yang ditentukan akan menimpa nilai header respons yang sudah ada.
Nilai kembaliMengembalikan true secara default dan mengembalikan false jika header respons yang ditentukan tidak valid.
Contoh
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')

Catatan: Header respons berikut ditambahkan:
USER-DEFINED-RSP-1: 1
USER-DEFINED-RSP-1: x

Header USER-DEFINED-RSP-2 ditambahkan lalu dihapus. Oleh karena itu, header USER-DEFINED-RSP-2 tidak disertakan dalam respons.

del_rsp_header

Tabel berikut menjelaskan detail fungsi ini.
ItemDeskripsi
Sintaksdel_rsp_header(name)
DeskripsiMenghapus header respons.
Parametername: nama header respons yang ingin Anda hapus. Tipe data: string.
Nilai kembaliMengembalikan true secara default dan mengembalikan false jika header respons yang ditentukan tidak valid.
Contoh
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')

Header respons berikut ditambahkan:
USER-DEFINED-RSP-1: 1
USER-DEFINED-RSP-1: x

Header USER-DEFINED-RSP-2 ditambahkan lalu dihapus. Oleh karena itu, header USER-DEFINED-RSP-2 tidak disertakan dalam respons.

encode_args

Tabel berikut menjelaskan detail fungsi ini.
ItemDeskripsi
Sintaksencode_args(d)
DeskripsiMengonversi pasangan k/v dalam kamus yang ditentukan oleh d menjadi string yang di-encode URI dalam format k1=v1&k2=v2.
Parameterd: kamus yang ingin Anda konversi.
Nilai kembaliMengembalikan string yang di-encode URI.
Contoh
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'))
}

Output: Header respons berikut ditambahkan:
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

Tabel berikut menjelaskan detail fungsi ini.
ItemDeskripsi
Sintaksdecode_args(s)
DeskripsiMengonversi string yang di-encode URI dalam format k1=v1&k2=v2 menjadi objek kamus.
Parameters: string yang ingin Anda konversi.
Nilai kembaliMengembalikan objek kamus yang dikonversi dari string yang ditentukan.
Contoh
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'))
}

Output: Header respons berikut ditambahkan:
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

ItemDeskripsi
sintaksrewrite(url, flag, code)
deskripsiMelakukan penulisan ulang URI atau pengalihan (redirect).
parameter
  • url (string): URL target untuk operasi.
    • Ketika flag adalah redirect atau break, hanya path URI yang ditulis ulang. Parameter url menentukan URI target baru.
    • Ketika flag adalah enhance_redirect atau enhance_break, seluruh URI (path dan parameter kueri) diganti. Parameter url menentukan URI target baru beserta parameternya.
  • (string): Mode penulisan ulang.
    • code: Hanya menulis ulang path URI dan melakukan redirect, mempertahankan parameter kueri asli. Secara default, menggunakan kode status HTTP 302. Anda dapat menentukan kode berbeda (301, 303, 307, atau 308) melalui parameter .
    • : Menulis ulang path URI ke url yang ditentukan, mempertahankan parameter kueri asli.
    • redirect: Mirip dengan redirect, tetapi memodifikasi seluruh URI, termasuk path dan parameter kueri.
    • break: Mirip dengan break, tetapi memodifikasi seluruh URI, termasuk path dan parameter kueri.
  • code (number, opsional): Kode status HTTP yang digunakan untuk redirect. Parameter ini hanya berlaku ketika flag adalah redirect atau enhance_redirect.

nilai kembali
  • trueUntuk operasi penulisan ulang (, ), fungsi mengembalikan .
  • Untuk operasi redirect (redirect, enhance_redirect), fungsi menghentikan pemrosesan permintaan saat ini dan tidak mengembalikan nilai.
Contoh
if and($arg_mode, eq($arg_mode, 'rewrite:enhance_break')) {
  rewrite('/a/example/examplefile.txt?k=v', 'enhance_break')
}
// Menulis ulang URI dan parameter kueri untuk permintaan asal dan kunci cache menjadi /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)
}
// Mengalihkan klien ke /a/example/examplefile.txt?k=v dengan kode status HTTP 302 atau 301.

if and($arg_mode, eq($arg_mode, 'rewrite:break')) {
  rewrite('/a/example/examplefile.txt', 'break')
}
// Menulis ulang path URI untuk permintaan asal dan kunci cache menjadi /a/example/examplefile.txt, mempertahankan parameter kueri asli.

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)
}
// Mengalihkan klien ke /a/example/examplefile.txt dengan kode status HTTP 302 atau 301, mempertahankan parameter kueri asli.

say

Tabel berikut menjelaskan detail fungsi ini.
ItemDeskripsi
Sintakssay(arg)
DeskripsiMencetak badan respons dan menambahkan karakter baris baru di akhir output.
Parameterarg: konten badan respons. Tipe data: tipe apa pun.
Nilai kembaliTidak ada.
Contoh
say('hello')
print('byebye')
print('byebye')

Output:
hello
byebyebyebye

print

Tabel berikut menjelaskan detail fungsi ini.
ItemDeskripsi
Sintaksprint(arg)
DeskripsiMencetak badan respons. Fungsi ini berbeda dari fungsi say(). Fungsi ini tidak menambahkan baris baru di akhir output.
Parameterarg: konten badan respons. Tipe data: tipe apa pun.
Nilai kembaliTidak ada.
Contoh
say('hello')
print('byebye')
print('byebye')

Output:
hello
byebyebyebye

exit

Tabel berikut menjelaskan detail fungsi ini.
ItemDeskripsi
Sintaksexit(code [, body])
DeskripsiMengakhiri permintaan saat ini dengan code yang ditentukan. Jika Anda juga mengatur parameter body, respons yang mencakup badan respons yang ditentukan akan dikembalikan.
Parameter
  • code: kode status HTTP yang akan dikembalikan.
  • body: badan respons.
Nilai kembaliTidak ada.
Contoh
  • Contoh 1
    if not($arg_key) {
        exit(403)
    }
    Catatan: Jika permintaan tidak menyertakan parameter key, permintaan ditolak dan kode status HTTP 403 dikembalikan. 
    
    if not($cookie_user) {
        exit(403, 'not cookie user')
    }
    Catatan: Jika permintaan tidak menyertakan cookie_user, permintaan ditolak dan respons yang berisi badan "not cookie user" dikembalikan dengan kode status HTTP 403.
    
    if not(0) {
        exit(403)
    }
    Catatan: Fungsi not(0) mengembalikan nilai false.
    
    if not(false) {
        exit(403)
    }
    Catatan: Fungsi not(false) mengembalikan nilai true.
  • Contoh 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

Tabel berikut menjelaskan detail fungsi ini.
ItemDeskripsi
Sintaksget_rsp_header(str)
DeskripsiMendapatkan header respons.
Parameterstr: header respons yang ingin Anda peroleh. Tipe data: string.
Nilai kembaliMengembalikan header respons yang ditentukan dengan tipe data string, number, dictionary, atau Boolean.
  • Jika header respons yang ditentukan ada, header respons tersebut dikembalikan. Tipe data header respons adalah dictionary atau string.
  • Jika header respons yang ditentukan tidak ada, nilai false dikembalikan.
Contoh
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

Tabel berikut menjelaskan detail fungsi ini.
ItemDeskripsi
Sintaksadd_rsp_cookie(k, v [,properties])
DeskripsiMenetapkan cookie respons. Setiap kali fungsi dipanggil, header respons Set-Cookie baru dihasilkan.
Parameter
  • k: nama cookie.
  • v: nilai cookie.
  • properties: properti cookie. Parameter ini opsional. Untuk informasi lebih lanjut, lihat Set-Cookie.
Nilai kembaliNilai true dikembalikan jika cookie yang ditentukan berhasil ditetapkan dan nilai false dikembalikan jika cookie yang ditentukan gagal ditetapkan.
Contoh
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'
])
Respons:
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