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