# Ajustes por nombre

> Da a un nombre de la zona sus propios ajustes de WAF, origen, puerta de acceso, límites o control de rastreadores IA mientras hereda todo lo demás de la zona.

Una zona reúne todos los nombres de un dominio registrable: `example.com`, `www.example.com`, `api.example.com`, `shop.example.com`… Cada nombre con proxy es un sitio en el borde. Por defecto, todos los nombres usan los ajustes de borde de la zona. Un nombre puede cambiar algunos en `hosts.<nombre>`: su sitio es entonces la configuración de la zona con sus propios valores encima.

- Los objetos anidados (`access_gate`, `hsts`, `origin`, `cache`, `rum`) se mezclan campo a campo: un nombre puede cambiar solo `origin.port`.
- Las listas (`cors_allow_origins`, `redirect_allow_hosts`, `access_gate.emails`…) se sustituyen enteras.
- `rate_rules`, `early_hints` y `ai_agents` de un nombre sustituyen **enteros** a los de la zona. La primera vez que cambias `ai_agents` o `early_hints` de un nombre, los campos que no das se copian de la zona.

Hasta 100 nombres por zona pueden tener ajustes propios. Un nombre tiene que ser la zona o estar por debajo. Puedes preparar los ajustes de un nombre antes de que tenga registro con proxy; el cambio avisa entonces de que el borde aún no sirve ese nombre.

## Claves que puede cambiar un nombre

| Clave | Notas |
|---|---|
| `mode`, `waf_level`, `stack`, `enable_feed`, `rate_limit_rpm` | [Ajustes del WAF](https://developers.openwaf.dev/es/waf/settings/) |
| `block_page_mode`, `block_page_html`, `fake_server_header` | [Página de bloqueo](https://developers.openwaf.dev/es/waf/block-page/) |
| `max_body_mb`, `timeout_ms`, `compression` | [Ajustes del WAF](https://developers.openwaf.dev/es/waf/settings/) |
| `redirect_allow_hosts`, `cors_allow_origins` | Listas, se sustituyen enteras. |
| `access_gate` | `enabled`, `path`, `ttl_hours`, `emails`. |
| `hsts` | `max_age`, `include_subdomains`, `preload`; consulta [HSTS](https://developers.openwaf.dev/es/ssl/hsts/). |
| `origin` | `scheme`, `port`, `tls_verify`, `server_name`, `client_cert`; consulta [TLS del origen](https://developers.openwaf.dev/es/ssl/origin-tls/). |
| `cache`, `early_hints` | Consulta [Caché](https://developers.openwaf.dev/es/cache/). |
| `rum` | Consulta [Analítica](https://developers.openwaf.dev/es/analytics/). |
| `rate_rules` | La lista propia del nombre; sus reglas no llevan `hosts`. `[]` = ninguna regla para este nombre. Consulta [Límites de peticiones](https://developers.openwaf.dev/es/waf/rate-limiting/#per-name-lists). |
| `ai_agents` | Consulta los [ajustes del control de rastreadores IA](https://developers.openwaf.dev/es/ai-crawl-control/settings/). |

`redirects` y `hosts` no caben dentro de un nombre: cada regla de redirección ya nombra su `host`. Una clave desconocida se rechaza con `422`.

## Cambiar un ajuste

**Panel**

En **Seguridad → Firewall**, **Seguridad → Puerta de acceso** y las demás páginas de ajustes que muestran **Se aplica a**, elige un nombre en lugar de **Todo el dominio (todos los nombres)**. Los valores en gris se heredan; **Personalizar para este nombre** le da al nombre su propio valor. **Nombres** lista cada nombre con proxy y cuántos ajustes personaliza; **Ajustes** los abre.
**CLI**

```sh
openwaf-cloud ctl zones set example.com --host api.example.com stack=nextjs origin.port:=3000 waf_level=high \
  --reason "API en Next.js, WAF estricto"
```
**API**

`hosts` en un `PATCH …/edge` es un JSON merge patch (RFC 7396) por nombre: lo que envías se suma a lo que el nombre ya tiene.
```sh
curl -sS -X PATCH "https://dash.openwaf.dev/v1/orgs/$ORG/zones/example.com/edge" \
  -H "Authorization: Bearer $OPENWAF_TOKEN" \
  -H "X-Change-Reason: API en Next.js, WAF estricto" \
  -H "Content-Type: application/json" \
  -d '{"hosts": {"api.example.com": {"stack": "nextjs", "origin": {"port": 3000}, "waf_level": "high"}}}'
```
**MCP**

`update_settings` con `host`: `{"zone": "example.com", "host": "api.example.com", "settings": {"waf_level": "high"}, "reason": "…"}`. Los ajustes que das pasan a ser propios del nombre; el resto sigue a la zona. `ai_agents_settings` también acepta `host`.


## Volver a heredar

**Panel**

Pulsa **Volver a heredar** junto a un valor personalizado.
**CLI**

```sh
openwaf-cloud ctl zones set example.com --host api.example.com --unset waf_level --reason "Vuelve al nivel de la zona"
```
**API**

Envía `null` en la clave; también funciona con claves anidadas.
```json
{"hosts": {"api.example.com": {"waf_level": null, "access_gate": {"enabled": null}}}}
```
`{"hosts": {"api.example.com": null}}` quita todos los ajustes del nombre; `"hosts": null`, los de todos los nombres.


## Reglas para algunos nombres

Las reglas de borde (IP, país, excepciones del WAF, reglas de límite por ruta) y las reglas de límite de peticiones admiten una lista `hosts`: con ella, la regla solo se aplica a esos nombres; sin ella (o vacía), a todos los nombres de la zona.

```sh
openwaf-cloud ctl rules add example.com kind=ip ip=198.51.100.10 action=allow hosts:='["admin.example.com"]' --reason "Oficina"
```

Para ver el resultado en un nombre, abre su [configuración efectiva](https://developers.openwaf.dev/es/rules/effective-config/).
