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
| Concepto | Qué es |
|---|---|
| Source | Texto a buscar |
| Target | Texto que lo reemplaza |
| Request Header Erase: Accept-Encoding | Quita el header con el que el navegador acepta compresión, para que el servidor responda sin comprimir |
| Compatibilidad | Stream 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 lugar | Qué debes ver | Si no lo ves |
|---|---|---|
Navegador / curl http://172.16.101.20/ | El texto nuevo en la página | Revisa los pasos 1–3 |
curl -I http://172.16.101.20/ | Sin Content-Encoding: gzip | Falta 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-Encodingen 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::expressionpara 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.