Todos os produtos
Search
Central de documentação

Edge Security Acceleration:Funções de processamento de requisições

Última atualização: Jun 29, 2026

Este tópico descreve a sintaxe, os parâmetros e os valores de retorno das funções de processamento de requisições, além de apresentar exemplos práticos de uso.

add_req_header

A tabela a seguir detalha esta função.

ItemDescrição
Sintaxeadd_req_header(name, value [, append])
DescriçãoAdiciona um cabeçalho de requisição antes do redirecionamento para o servidor de origem.
Parâmetro
  • name: nome do cabeçalho de requisição a adicionar. Tipo de dado: string.
  • value: valor do cabeçalho de requisição a adicionar. Tipo de dado: string.
  • append: defina se deve anexar um cabeçalho de requisição com o value especificado caso já exista um cabeçalho com o mesmo nome. Valores válidos: true e false. Valor padrão: false. Tipo de dado: Booleano. Se definido como false, o valor especificado substituirá o valor do cabeçalho de requisição existente.
Valor de retornoRetorna true por padrão e false se o cabeçalho de requisição especificado for inválido.
Exemplo
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')

Note: The following request headers are added:
USER-DEFINED-REQ-1: 1
USER-DEFINED-REQ-1: x

The USER-DEFINED-REQ-2 header is added and then deleted. Therefore, the USER-DEFINED-REQ-2 request header is not included in requests that are redirected to the origin server.

del_req_header

A tabela a seguir detalha esta função.

ItemDescrição
Sintaxedel_req_header(name)
DescriçãoRemove um cabeçalho de requisição antes do redirecionamento para o servidor de origem.
Parâmetroname: nome do cabeçalho de requisição a excluir. Tipo de dado: string.
Valor de retornoRetorna true por padrão e false se o cabeçalho de requisição especificado for inválido.
Exemplo
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')

Note: The following request headers are added:
USER-DEFINED-REQ-1: 1
USER-DEFINED-REQ-1: x

The USER-DEFINED-REQ-2 header is added and then deleted. Therefore, the USER-DEFINED-REQ-2 request header is not included in requests that are redirected to the origin server.

add_rsp_header

A tabela a seguir detalha esta função.

ItemDescrição
Sintaxeadd_rsp_header(name, value [, append])
DescriçãoAdiciona um cabeçalho de resposta.
Parâmetro
  • name: nome do cabeçalho de resposta a adicionar. Tipo de dado: string.
  • value: valor do cabeçalho de resposta a adicionar. Tipo de dado: string.
    É possível especificar uma das expressões a seguir para o parâmetro value para permitir a substituição dinâmica do valor durante a fase de resposta:
    • ${x}: substituído pelo valor de ngx.var.x.
    • @{y}: substituído pelo valor do response header y.
  • append: defina se deve anexar um cabeçalho de resposta com o value especificado caso já exista um cabeçalho com o mesmo nome. Valores válidos: true e false. Valor padrão: false. Tipo de dado: Booleano. Se definido como false, o valor especificado substituirá o valor do cabeçalho de resposta existente.
Valor de retornoRetorna true por padrão e false se o cabeçalho de resposta especificado for inválido.
Exemplo
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')

Note: The following response headers are added:
USER-DEFINED-RSP-1: 1
USER-DEFINED-RSP-1: x

The USER-DEFINED-RSP-2 header is added and then deleted. Therefore, the USER-DEFINED-RSP-2 header is not included in the responses.

del_rsp_header

A tabela a seguir detalha esta função.

ItemDescrição
Sintaxedel_rsp_header(name)
DescriçãoExclua um cabeçalho de resposta.
Parâmetroname: nome do cabeçalho de resposta a excluir. Tipo de dado: string.
Valor de retornoRetorna true por padrão e false se o cabeçalho de resposta especificado for inválido.
Exemplo
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')

The following response headers are added:
USER-DEFINED-RSP-1: 1
USER-DEFINED-RSP-1: x

The USER-DEFINED-RSP-2 header is added and then deleted. Therefore, the USER-DEFINED-RSP-2 header is not included in the responses.

encode_args

A tabela a seguir detalha esta função.

ItemDescrição
Sintaxeencode_args(d)
DescriçãoConverte os pares k/v no dicionário especificado por d em uma string codificada por URI no formato k1=v1&k2=v2.
Parâmetrod: o dicionário a converter.
Valor de retornoRetorna uma string codificada por URI.
Exemplo
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: The following response headers are added:
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

A tabela a seguir detalha esta função.

ItemDescrição
Sintaxedecode_args(s)
DescriçãoConverte uma string codificada por URI no formato k1=v1&k2=v2 em uma string do tipo dicionário.
Parâmetros: a string a converter.
Valor de retornoRetorna um objeto de dicionário convertido a partir da string especificada.
Exemplo
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: The following response headers are added:
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

ItemDescrição
Sintaxerewrite(url, flag, code)
DescriçãoExecuta uma reescrita de URI ou um redirecionamento.
Parâmetro
  • url (string): A URL de destino da operação.
    • Quando flag é redirect ou break, apenas o caminho da URI é reescrito. O parâmetro url especifique a nova URI de destino.
    • Quando flag é enhance_redirect ou enhance_break, toda a URI (caminho e parâmetros de consulta) é substituída. O parâmetro url especifique a nova URI de destino e seus parâmetros.
  • (string): O modo de reescrita.
    • code: Reescreve apenas o caminho da URI e executa um redirecionamento, preservando os parâmetros de consulta originais. Por padrão, usa o código de status HTTP 302. É possível especificar um código diferente (301, 303, 307 ou 308) com o parâmetro .
    • : Reescreve o caminho da URI para a url especificada, preservando os parâmetros de consulta originais.
    • redirect: Semelhante ao redirect, mas modifica toda a URI, incluindo o caminho e os parâmetros de consulta.
    • break: Semelhante ao break, mas modifica toda a URI, incluindo o caminho e os parâmetros de consulta.
  • code (number, opcional): O código de status HTTP a usar para o redirecionamento. Este parâmetro se aplica apenas quando flag é redirect ou enhance_redirect.

Valor de retorno
  • truePara uma operação de reescrita (, ), a função retorna .
  • Para uma operação de redirecionamento (redirect, enhance_redirect), a função encerra o processamento da requisição atual e não retorna valor.
Exemplo
if and($arg_mode, eq($arg_mode, 'rewrite:enhance_break')) {
  rewrite('/a/example/examplefile.txt?k=v', 'enhance_break')
}
// Rewrites the URI and query parameters for the origin request and cache key to /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)
}
// Redirects the client to /a/example/examplefile.txt?k=v with a 302 or 301 HTTP status code.

if and($arg_mode, eq($arg_mode, 'rewrite:break')) {
  rewrite('/a/example/examplefile.txt', 'break')
}
// Rewrites the URI path for the origin request and cache key to /a/example/examplefile.txt, preserving the original query parameters.

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)
}
// Redirects the client to /a/example/examplefile.txt with a 302 or 301 HTTP status code, preserving the original query parameters.

say

A tabela a seguir detalha esta função.

ItemDescrição
Sintaxesay(arg)
DescriçãoImprime um corpo de resposta e adiciona um caractere de nova linha ao final da saída.
Parâmetroarg: o conteúdo do corpo da resposta. Tipo de dado: qualquer tipo.
Valor de retornoNenhum.
Exemplo
say('hello')
print('byebye')
print('byebye')

Output:
hello
byebyebyebye

print

A tabela a seguir detalha esta função.

ItemDescrição
Sintaxeprint(arg)
DescriçãoImprime um corpo de resposta. Diferente da função say(), esta função não adiciona uma nova linha ao final da saída.
Parâmetroarg: o conteúdo do corpo da resposta. Tipo de dado: qualquer tipo.
Valor de retornoNenhum.
Exemplo
say('hello')
print('byebye')
print('byebye')

Output:
hello
byebyebyebye

exit

A tabela a seguir detalha esta função.

ItemDescrição
Sintaxeexit(code [, body])
DescriçãoEncerra a requisição atual com o code especificado. Se o parâmetro body também for definido, uma resposta contendo o corpo especificado será retornada.
Parâmetro
  • code: o código de status HTTP a retornar.
  • body: o corpo da resposta.
Valor de retornoNenhum.
Exemplo
  • Exemplo 1
    if not($arg_key) {
        exit(403)
    }
    Note: If a request does not include the key parameter, the request is denied and the HTTP 403 status code is returned. 
    
    if not($cookie_user) {
        exit(403, 'not cookie user')
    }
    Note: If a request does not include cookie_user, the request is denied and a response that contains the body "not cookie user" is returned with the HTTP 403 status code.
    
    if not(0) {
        exit(403)
    }
    Note: The not(0) function returns a value of false.
    
    if not(false) {
        exit(403)
    }
    Note: The not(false) function returns a value of true.
  • Exemplo 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

A tabela a seguir detalha esta função.

ItemDescrição
Sintaxeget_rsp_header(str)
DescriçãoObtém um cabeçalho de resposta.
Parâmetrostr: o cabeçalho de resposta a obter. Tipo de dado: string.
Valor de retornoRetorna o cabeçalho de resposta especificado nos tipos de dado string, number, dictionary ou Boolean.
  • Se o cabeçalho de resposta especificado existir, ele será retornado. O tipo de dado do cabeçalho de resposta é dictionary ou string.
  • Se o cabeçalho de resposta especificado não existir, o valor false será retornado.
Exemplo
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

A tabela a seguir detalha esta função.

ItemDescrição
Sintaxeadd_rsp_cookie(k, v [,properties])
DescriçãoDefina o cookie de resposta. Cada chamada à função gera um novo cabeçalho de resposta Set-Cookie.
Parâmetro
  • k: o nome do cookie.
  • v: o valor do cookie.
  • properties: as propriedades do cookie. Este parâmetro é opcional. Para mais informações, consulte Set-Cookie.
Valor de retornoRetorna true se o cookie especificado for definido com sucesso e false se a definição do cookie falhar.
Exemplo
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'
])
Resposta:
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