# Referencia de ajustes del WAF

> Cada ajuste de borde relacionado con el WAF de una zona o un nombre: valores, valores por defecto y cómo los usa el borde.

Estos campos forman parte de los ajustes de borde de una zona (`GET/PATCH /v1/orgs/{org}/zones/{zone}/edge`). Un `PATCH` solo cambia los campos que envías; los objetos anidados se mezclan campo a campo y las listas se sustituyen enteras. Todos los campos salvo `redirects` se pueden fijar también para un nombre en `hosts.<nombre>` (consulta [Ajustes por nombre](https://developers.openwaf.dev/es/rules/per-name-settings/)).

| Campo | Tipo | Por defecto | Significado |
|---|---|---|---|
| `mode` | `active`, `log`, `off` | `active` | [Modo del WAF](https://developers.openwaf.dev/es/waf/modes-and-levels/#modes). |
| `waf_level` | `off`, `low`, `medium`, `high` | `medium` | [Nivel del WAF](https://developers.openwaf.dev/es/waf/modes-and-levels/#levels). |
| `stack` | `generic`, `wordpress`, `nextjs`, `static` | `generic` | [Aplicación](https://developers.openwaf.dev/es/waf/modes-and-levels/#application). |
| `enable_feed` | booleano | `true` | Bloquear las direcciones de las [listas de amenazas](https://developers.openwaf.dev/es/waf/threat-feeds/). |
| `rate_limit_rpm` | entero ≥ 0 | `0` | [Límite básico](https://developers.openwaf.dev/es/waf/rate-limiting/#basic-rate-limit) por IP y minuto; `0` = apagado. |
| `rate_rules` | lista, como mucho 25 | `[]` | [Reglas de límite de peticiones](https://developers.openwaf.dev/es/waf/rate-limiting/#per-path-rules); consulta sus [campos](https://developers.openwaf.dev/es/waf/rule-reference/#rate-limiting-rule-fields). |
| `access_gate` | objeto | apagada | [Puerta de acceso](https://developers.openwaf.dev/es/waf/access-gate/#settings): `enabled`, `path`, `ttl_hours`, `emails`. |
| `block_page_mode` | `branded`, `nginx`, `apache`, `generic`, `custom` | `branded` | [Página de bloqueo](https://developers.openwaf.dev/es/waf/block-page/). |
| `block_page_html` | texto, como mucho 256 KiB | `""` | HTML de la página de bloqueo `custom`. |
| `fake_server_header` | texto | `""` | Valor de la cabecera `Server`; vacío = `nginx`. |
| `max_body_mb` | entero ≥ 0 | `0` | Tamaño máximo del cuerpo de una petición en MB; las mayores reciben 413. `0` = el valor por defecto del borde. |
| `timeout_ms` | entero ≥ 0 | `0` | Cuánto espera el borde al origen, en milisegundos. `0` = el valor por defecto del borde. |
| `redirect_allow_hosts` | lista de hosts | `[]` | Hosts adicionales que acepta el [escudo de redirección abierta](https://developers.openwaf.dev/es/waf/shields/#open-redirect). |
| `cors_allow_origins` | lista de hosts | `[]` | Dominios hermanos cuyos orígenes CORS reflejados se conservan (consulta [CORS](https://developers.openwaf.dev/es/waf/responses/#cors)). |
| `compression` | booleano | `false` | Comprimir las respuestas de texto que el origen envía sin comprimir (gzip, Brotli). |

## redirect_allow_hosts

Cada entrada es un nombre de host en minúsculas (`partner.example.net`), `localhost`, una dirección IPv4 o una IPv6 entre corchetes (`[2001:db8::1]`). Un nombre vale para sí mismo y sus subdominios; una dirección, solo para sí misma. No se admiten comodines.

## cors_allow_origins

Cada entrada es un nombre de host en minúsculas, sin esquema ni puerto (`app.example.net`). Vale para sí mismo y sus subdominios. Los duplicados se rechazan.

## Otros ajustes de borde

| Campo | Documentado en |
|---|---|
| `origin`, `hsts` | [SSL/TLS](https://developers.openwaf.dev/es/ssl/) |
| `redirects` | [Reglas de redirección](https://developers.openwaf.dev/es/rules/redirects/) |
| `hosts` | [Ajustes por nombre](https://developers.openwaf.dev/es/rules/per-name-settings/) |
| `ai_agents` | [Ajustes del control de rastreadores IA](https://developers.openwaf.dev/es/ai-crawl-control/settings/) |
| `cache`, `early_hints` | [Caché](https://developers.openwaf.dev/es/cache/) |
| `rum` | [Analítica](https://developers.openwaf.dev/es/analytics/) |

## Validación

Un valor no válido se rechaza con `422` y un mensaje que nombra el campo, por ejemplo `rate_rules[0].path_prefix: …` o `hosts.www.example.com.rate_rules[1].hosts: …`. No se aplica nada.
