# Página de bloqueo

> Elige qué ve un visitante bloqueado: un error al estilo de nginx o Apache, una página genérica, la de OpenWAF o tu propio HTML, y la cabecera Server.

Cuando el borde bloquea una petición con una respuesta HTML (bloqueos por IP, país, listas o WAF, escudos, límites de peticiones), pinta la página que fija `block_page_mode`:

| `block_page_mode` | Panel | Página |
|---|---|---|
| `branded` (por defecto) | Página con marca | La página de OpenWAF: «Access Denied» (o «Too Many Requests» para el 429) con el código de estado y el motivo, como `WAF Block` o `IP Rule`. |
| `nginx` | Parece un error de nginx | Idéntica a las páginas de error de nginx. |
| `apache` | Parece un error de Apache | Como las páginas de error por defecto de Apache httpd. |
| `generic` | Página genérica | Una página mínima sin marca. |
| `custom` | HTML propio | Tu HTML de `block_page_html`. |

## HTML propio

`block_page_html` admite hasta 256 KiB de HTML autocontenido. El borde sustituye estos marcadores:

| Marcador | Valor |
|---|---|
| `{{.Status}}` | Código de estado, p. ej. `403`. |
| `{{.StatusText}}` | Texto del estado, p. ej. `Forbidden`. |
| `{{.Reason}}` | Motivo breve, p. ej. `WAF Block` (escapado para HTML). Nunca contiene datos de la petición. |

```sh
openwaf-cloud ctl zones set example.com block_page_mode=custom \
  block_page_html:='"<!doctype html><title>{{.Status}}</title><h1>{{.Status}} {{.StatusText}}</h1><p>{{.Reason}}</p>"' \
  --reason "Página de bloqueo propia"
```

Si `block_page_mode` es `custom` y el HTML está vacío, se usa la página al estilo de nginx.

## Cabecera Server

Las respuestas bloqueadas y todas las respuestas de tu origen llevan `Server: nginx`, salvo que pongas otro valor en `fake_server_header` (vacío = `nginx`). Consulta [Respuestas y cabeceras del borde](https://developers.openwaf.dev/es/waf/responses/#response-headers).

En el panel, los dos están en **Seguridad → Firewall → Avanzado**: **Página de bloqueo**, el HTML de la página propia y **Cabecera Server**.
