Hi! As I understand, if you want to do in a Virtual Server WAT (Web Address Translation), for an instance to map the URL www.external.com to www.internal.com (rewriting links in the HTTP response if needed), you have to enable the STREAM Profile that means you have to disable HTTP Compression.
Is that true? Is there any way to rewrite the HTTP reponse body, without disabling compression between the web clients and the F5?
Compressed data isn't readable, so you'd definitely have to decompress it. But for a STREAM profile in the HTTP_RESPONSE event, you only need to disable server side compression - between the BIG-IP and backend server. Client side compression is still very much a possibility, though it must be controlled and terminated at the proxy. In other words, HTTP compression would be between the clients and the client side of the BIG-IP. Server side HTTP would not be compressed.
Hi! As I understand you are right (compression must be disable only between F5 and the Backend server), but on all the iRules I'm seeing they have the following line in the HTTP_REQUEST:
HTTP::header remove "Accept-Encoding"
So compression is disabled at the Frontend... :(
Not at all. The HTTP_REQUEST is a client side ingress event - it's triggered from the client's HTTP request. So essentially what you're doing is removing the Accept-Encoding header from the request (if the client is sending it) to the server so that the server will not compress its responses.
Hi! Sure, but if the server doesn't compress the HTTP Response, will the F5 compress it against the web client?
That's why you have to control HTTP compression (and/or caching) at the F5. These are generally configured in HTTP profiles and optionally the Web Acceleration module (AAM). The default httpcompression profile will provide HTTP compression to the client (from the BIG-IP).
Great, so the HTTP Compression must be disable between F5 and the Backend Web Servers, but could be enabled between the Web Clients and the F5. That's not bad! :)