Forum Discussion
Selective Pass-through
Hello,
I need to inject data into some webpages using an iRule. The backend-server sends HTTP data chunked and compressed (gzip). However, only some pages need to be injected into. Those can be identified by an HTTP-Header (and only this way). I also need all outgoing traffic to be chunked and compressed and with working keep-alive connections.
I got this working by setting
Response Chunking
and Compression
to Selective
and perform the injection itself in an iRule using STREAM::expression
.
The problem however is that all data is being decompressed (and in turn rechunked) by the f5, as soon as the compression module is not set to
Disabled
. This induces an unnecessarily high load on the f5, which I'd like to avoid.
What I want is to identify the header in the response from the backend-server, if found inject, rechunk and recompress; otherwise completely pass-through all HTTP data without processing anything.
Setting the compression module to
Disabled
seems to be unfeasible, since I can't perform an injection anymore.
Using
COMPRESS::disable
disables compression, not the compression module, thus decompressing everything from the server and sending it uncompressed to the client.
After fiddling around a bit, it seems that compression can be disabled implicitly by disabling HTTP processing (
HTTP::disable
). But this seems to be incompatible with keep-alive connections (because the next request on the same connection isn't recognized).
And now I ran out of ideas and ask here: is there any way to archive a selective pass-through, depending on a header sent by the backend-server?
I am using BIG-IP 10.2.4 Build 577.0 Final. We are thinking about switching to 11 in the mid-term, but a solution for 10 would be nice.
Thanks, Christian
Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com