Códigos de estado
| Estado | Cuándo | Cuerpo |
|---|---|---|
301 | HTTP sin cifrar, o www.<raíz> cuando la raíz es un sitio con proxy. | Redirección a HTTPS o a la raíz. |
301, 302, 307, 308 | Casó una regla de redirección. | Redirección. |
400 | Transfer-Encoding ambiguo o Content-Length contradictorio. | Texto plano. |
401 | Página de acceso de la puerta de acceso. | Formulario HTML. |
403 | Regla por IP, regla por país, lista de amenazas, WAF, escudos de SSRF, redirección abierta o inyección de prompts; bloqueo del control de rastreadores IA (por defecto). | Página de bloqueo. |
403 | Reto o laberinto del control de rastreadores IA a una petición que no es una navegación. | {"error":"verificacion de navegador requerida"} o {"error":"forbidden"}. |
404 | Escudos de WordPress, source maps o GraphQL. | Texto plano 404 page not found. |
413 | Cuerpo mayor que max_body_mb, o mayor que el límite de inspección de los escudos. | Texto plano. |
421 | El borde no sirve ese nombre. | Página genérica. |
429 | Regla de límite de peticiones con block (o challenge en lo que no es navegación). | Página de bloqueo para navegadores, {"error":"rate_limited","retry_after":N} para el resto, con Retry-After. |
429 | Regla de límite por ruta, límite básico o escudo de paginación. | Página de bloqueo. |
503 | Reto de navegador. | Página de prueba de trabajo, Cache-Control: no-store. |
502, 525, 526 | No se pudo llegar al origen o falló su TLS. | Consulta la solución de problemas de SSL/TLS. |
Los bloqueos del control de rastreadores IA usan la block_response que configures (401, 402, 403, 404, 410, 429, 451 o 503); consulta los ajustes del control de rastreadores IA.
Cabeceras de respuesta
En cada respuesta de tu origen, el borde:
- pone
Serveranginxo a tufake_server_header; - quita
X-Powered-By,X-AspNet-Version,X-AspNetMvc-Version,X-Runtime,X-Generator,X-Debug-Info,X-Platform-Server,X-Served-By,X-Backend-Server,X-Drupal-CacheyX-Varnish; - añade, solo si el origen no las puso:
X-Content-Type-Options: nosniff,X-Frame-Options: SAMEORIGIN,Referrer-Policy: strict-origin-when-cross-originyPermissions-Policy: camera=(), microphone=(), geolocation=(); - pone
Strict-Transport-Securityen las respuestas HTTPS cuando HSTS está activado (consulta HSTS); - añade
Secure,HttpOnlyySameSite=Laxa cadaSet-Cookieque no los lleve.
En /health, /status, /version, /api/health y /api/status, el borde quita del cuerpo JSON los campos version, build, commit, node_version, framework y nestjs, para que no se pueda identificar la tecnología.
CORS
Si tu origen refleja el Origin de la petición en Access-Control-Allow-Origin, el borde lo conserva solo si ese origen es el mismo sitio (el propio nombre, un subdominio o un dominio padre) o un host de cors_allow_origins. Si no, quita Access-Control-Allow-Origin y Access-Control-Allow-Credentials. Un comodín * junto con Access-Control-Allow-Credentials: true pierde la cabecera de credenciales.
Cabeceras que recibe tu origen
| Cabecera | Valor |
|---|---|
X-Forwarded-For, X-Real-IP, CF-Connecting-IP | La IP del cliente tal como la ve el borde (sustituye cualquier valor que enviara el cliente). |
X-Forwarded-Host | El host pedido. |
X-Forwarded-Proto | https o http. |
El borde quita de las peticiones X-Originating-IP, X-Remote-IP, X-Remote-Addr, X-Client-IP, True-Client-IP y Forwarded, para que un cliente no pueda falsear su dirección ante tu aplicación.