Stream Profile

Resumen

El Stream profile busca y reemplaza texto en el contenido mientras pasa por el BIG-IP (no tiene nada que ver con streaming de video). Caso típico: la empresa fue adquirida y hay que cambiar el nombre viejo por el nuevo en todas las páginas sin tocar los servidores. Necesita los perfiles TCP + HTTP y no funciona con contenido comprimido, así que hay que pedirle a los servidores que no compriman.

Requisitos previos

  • VS estándar con perfiles TCP y HTTP
  • El texto a buscar (Source) y el nuevo (Target)
  • Si es HTTPS: perfil Client SSL (hay que descifrar para leer el contenido)

Conceptos clave

ConceptoQué es
SourceTexto a buscar
TargetTexto que lo reemplaza
Request Header Erase: Accept-EncodingQuita el header con el que el navegador acepta compresión, para que el servidor responda sin comprimir
CompatibilidadStream no es compatible con contenido comprimido

Configuración (Ejemplo, Lab CBT Nuggets)

1. Perfil HTTP que evita la compresión del servidor

Local Traffic > Profiles > Services > HTTP > Create > Name: http_stream, Parent: http > Request Header Erase: Accept-Encoding > Finished.

tmsh create ltm profile http http_stream defaults-from http request-header-erase "Accept-Encoding"

2. Crear el Stream profile

Local Traffic > Profiles > Other > Stream > Create > Name: Test-STREAM > Source: EmpresaVieja > Target: EmpresaNueva > Finished.

tmsh create ltm profile stream Test-STREAM defaults-from stream source "EmpresaVieja" target "EmpresaNueva"

3. Asignar ambos perfiles al VS

Virtual Servers > el VS > Configuration: Advanced > HTTP Profile (Client): http_stream > Stream Profile: Test-STREAM > Update.

tmsh modify ltm virtual VS-172.16.101.20-HTTP-APP1 profiles replace-all-with { tcp http_stream Test-STREAM }

Verificación

Comando o lugarQué debes verSi no lo ves
Navegador / curl http://172.16.101.20/El texto nuevo en la páginaRevisa los pasos 1–3
curl -I http://172.16.101.20/Sin Content-Encoding: gzipFalta Request Header Erase
Página directa al servidor (curl http://10.10.101.101/)Sigue con el texto viejo (el cambio es solo en tránsito)—

Errores comunes

El texto no se reemplaza

  • Causa: el servidor envía la respuesta comprimida.
  • Solución: Request Header Erase = Accept-Encoding en el perfil HTTP del VS.

No funciona con HTTPS

  • Causa: el contenido va cifrado (pass-through).
  • Solución: agrega Client SSL (y Server SSL si hay que re-cifrar).

Se reemplazó más de lo esperado

  • Causa: el texto Source aparece también en URLs, scripts o atributos.
  • Solución: usa un texto más específico o una iRule con STREAM::expression para reglas más finas.

Quiero comprimir hacia el cliente después del reemplazo

  • Causa: el orden importa: primero se reemplaza en texto plano y después se puede comprimir en el BIG-IP con un perfil de compresión.
  • Solución: Stream + HTTP Compression en el BIG-IP, sin compresión en el servidor.