Todos los productos
Search
Centro de documentos

CDN:Funciones de procesamiento de solicitudes

Última actualización: Sep 03, 2026

Este tema describe la sintaxis, descripción, parámetros y valores de retorno de las funciones de procesamiento de solicitudes. También se incluyen ejemplos de uso para cada función.

add_req_header

A continuación se describen los detalles de esta función.

ElementoDescripción
Sintaxisadd_req_header(name, value [, append])
DescripciónAgrega un encabezado de solicitud antes de que las peticiones se redirijan al servidor de origen.
Parámetro
  • name: nombre del encabezado de solicitud que desea agregar. Tipo de dato: cadena.
  • value: valor del encabezado de solicitud que desea agregar. Tipo de dato: cadena.
  • append: especifica si se debe anexar un encabezado de solicitud con el value indicado cuando ya existe otro con el mismo nombre. Valores válidos: true y false. Valor predeterminado: false. Tipo de dato: booleano. Si establece este parámetro en false, el valor especificado sobrescribirá el valor del encabezado de solicitud existente.
Valor de retornoDevuelve true de forma predeterminada y false si el encabezado de solicitud especificado no es válido.
Ejemplo
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 continuación se describen los detalles de esta función.

ElementoDescripción
Sintaxisdel_req_header(name)
DescripciónElimina un encabezado de solicitud antes de que las peticiones se redirijan al servidor de origen.
Parámetroname: nombre del encabezado de solicitud que desea eliminar. Tipo de dato: cadena.
Valor de retornoDevuelve true de forma predeterminada y false si el encabezado de solicitud especificado no es válido.
Ejemplo
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 continuación se describen los detalles de esta función.

ElementoDescripción
Sintaxisadd_rsp_header(name, value [, append])
DescripciónAgrega un encabezado de respuesta.
Parámetro
  • name: nombre del encabezado de respuesta que desea agregar. Tipo de dato: cadena.
  • value: valor del encabezado de respuesta que desea agregar. Tipo de dato: cadena.
    Puede especificar una de las siguientes expresiones para el parámetro value con el fin de habilitar el reemplazo dinámico del valor durante la fase de respuesta:
    • ${x}: se reemplaza por el valor de ngx.var.x.
    • @{y}: se reemplaza por el valor del response header y.
  • append: especifica si se debe anexar un encabezado de respuesta con el value indicado cuando ya existe otro con el mismo nombre. Valores válidos: true y false. Valor predeterminado: false. Tipo de dato: booleano. Si establece este parámetro en false, el valor especificado sobrescribirá el valor del encabezado de respuesta existente.
Valor de retornoDevuelve true de forma predeterminada y false si el encabezado de respuesta especificado no es válido.
Ejemplo
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 continuación se describen los detalles de esta función.

ElementoDescripción
Sintaxisdel_rsp_header(name)
DescripciónElimina un encabezado de respuesta.
Parámetroname: nombre del encabezado de respuesta que desea eliminar. Tipo de dato: cadena.
Valor de retornoDevuelve true de forma predeterminada y false si el encabezado de respuesta especificado no es válido.
Ejemplo
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 continuación se describen los detalles de esta función.

ElementoDescripción
Sintaxisencode_args(d)
DescripciónConvierte los pares k/v del diccionario especificado por d en una cadena codificada para URI con el formato k1=v1&k2=v2.
Parámetrod: diccionario que desea convertir.
Valor de retornoDevuelve una cadena codificada para URI.
Ejemplo
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 continuación se describen los detalles de esta función.

ElementoDescripción
Sintaxisdecode_args(s)
DescripciónConvierte una cadena codificada para URI con el formato k1=v1&k2=v2 en una cadena de tipo diccionario.
Parámetros: cadena que desea convertir.
Valor de retornoDevuelve un objeto de diccionario convertido a partir de la cadena especificada.
Ejemplo
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

A continuación se describen los detalles de esta función.

ElementoDescripción
Sintaxisrewrite(url, flag, code)
DescripciónEjecuta una operación de reescritura o redireccionamiento.
Parámetro
  • url: URL de destino a la que se reescribe la URI de origen tras la operación. Tipo de dato: cadena.
    • Si establece el parámetro flag en redirect o break, solo se reescribe la URI. Este parámetro define la URI resultante después de la reescritura.
    • Si establece el parámetro flag en enhance_redirect o enhance_break, se reescriben tanto la URI como los parámetros. Este parámetro define la URI y los parámetros resultantes después de la reescritura.
  • flag: modo de reescritura. Tipo de dato: cadena.
    • redirect: reescribe únicamente la URI sin modificar los parámetros. De forma predeterminada, realiza una redirección 302. Si selecciona este modo, puede configurar el parámetro code. Los valores válidos para code son 301, 302 (predeterminado), 303, 307 y 308.
    • break: reescribe solo la URI hacia una URL específica sin alterar los parámetros.
    • enhance_redirect: similar a redirect, pero reescribe tanto la URI como los parámetros.
    • enhance_break: similar a break, pero reescribe tanto la URI como los parámetros.
  • code: código de estado HTTP. Tipo de dato: numérico.

    Este parámetro solo está disponible cuando establece el parámetro flag en redirect o enhance_redirect.

Valor de retorno
  • Para una operación de reescritura, devuelve true de forma predeterminada.
  • Para una operación de redireccionamiento, no devuelve valores de forma predeterminada.
Ejemplo
if and($arg_mode, eq($arg_mode, 'rewrite:enhance_break')) {
  rewrite('/example/examplefile.txt?k=v', 'enhance_break')
}
Note: The URI and parameters of requests redirected to the origin server are rewritten to /example/examplefile.txt?k=v

if and($arg_mode, eq($arg_mode, 'rewrite:enhance_redirect')) {
  rewrite('/example/examplefile.txt?k=v', 'enhance_redirect')
}
if and($arg_mode, eq($arg_mode, 'rewrite:enhance_redirect_301')) {
  rewrite('/example/examplefile.txt?k=v', 'enhance_redirect', 301)
}
Note: A 302 or 301 redirect to /example/examplefile.txt? is performed.k=v

if and($arg_mode, eq($arg_mode, 'rewrite:break')) {
  rewrite('/example/examplefile.txt', 'break')
}
Note: The URI of requests redirected to the origin server is rewritten to /example/examplefile.txt and the original parameters in the requests remain unchanged.

if and($arg_mode, eq($arg_mode, 'rewrite:redirect')) {
  rewrite('/example/examplefile.txt', 'redirect')
}
if and($arg_mode, eq($arg_mode, 'rewrite:redirect_301')) {
  rewrite('/example/examplefile.txt', 'redirect', 301)
}
Note: A 302 or 301 redirect to /example/examplefile.txt is performed and the original parameters remain unchanged.

say

A continuación se describen los detalles de esta función.

ElementoDescripción
Sintaxissay(arg)
DescripciónImprime un cuerpo de respuesta y agrega un carácter de nueva línea al final de la salida.
Parámetroarg: contenido del cuerpo de respuesta. Tipo de dato: cualquier tipo.
Valor de retornoNinguna.
Ejemplo
say('hello')
print('byebye')
print('byebye')

Output:
hello
byebyebyebye

print

A continuación se describen los detalles de esta función.

ElementoDescripción
Sintaxisprint(arg)
DescripciónImprime un cuerpo de respuesta. Esta función difiere de say() porque no agrega una nueva línea al final de la salida.
Parámetroarg: contenido del cuerpo de respuesta. Tipo de dato: cualquier tipo.
Valor de retornoNinguna.
Ejemplo
say('hello')
print('byebye')
print('byebye')

Output:
hello
byebyebyebye

exit

A continuación se describen los detalles de esta función.

ElementoDescripción
Sintaxisexit(code [, body])
DescripciónFinaliza la solicitud actual con el code especificado. Si también configura el parámetro body, se devuelve una respuesta que incluye el cuerpo indicado.
Parámetro
  • code: código de estado HTTP que se devolverá.
  • body: cuerpo de la respuesta.
Valor de retornoNinguna.
Ejemplo
  • Ejemplo 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.
  • Ejemplo 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 continuación se describen los detalles de esta función.

ElementoDescripción
Sintaxisget_rsp_header(str)
DescripciónObtiene un encabezado de respuesta.
Parámetrostr: encabezado de respuesta que desea obtener. Tipo de dato: cadena.
Valor de retornoDevuelve el encabezado de respuesta especificado con tipo de dato cadena, número, diccionario o booleano.
  • Si el encabezado de respuesta especificado existe, se devuelve dicho encabezado. El tipo de dato será diccionario o cadena.
  • Si el encabezado de respuesta especificado no existe, se devuelve un valor de false.
Ejemplo
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 continuación se describen los detalles de esta función.

ElementoDescripción
Sintaxisadd_rsp_cookie(k, v [,properties])
DescripciónEstablece la cookie de respuesta. Cada vez que se llama a la función, se genera un nuevo encabezado de respuesta Set-Cookie.
Parámetro
  • k: nombre de la cookie.
  • v: valor de la cookie.
  • properties: propiedades de la cookie. Este parámetro es opcional. Para más información, consulte Set-Cookie.
Valor de retornoSe devuelve un valor de true si la cookie especificada se configuró correctamente, y false si hubo errores al establecerla.
Ejemplo
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'
])
Respuesta:
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