Microsoft's Internet Security and Acceleration Server or ISA is a great security gateway and proxy for IIS Web servers. Unfortunately, ISA is not compatible by default with origin server compression, whether you are running httpZip or native compression on IIS 6, managed by ZipEnable. ISA strips the Accept-Encoding header from the browser request, and thus the origin server (or compression software) does not respond with compressed content.
We have forwarded folks to this Microsoft knowledge base article on how to overcome this issue on ISA 2004 (http://support.microsoft.com/default.aspx?scid=kb;en-us;838365), but the actual solution is not provided, only directions on how one may go about fixing this issue...
Velaro.com (makers of Live Help and Live Support chat software) has developed a script that worked on their ISA deployment to let the Accept Encoding header pass through on a client request, thus making ISA 2004 compatible with httpZip, ZipEnable and IIS compression in general on the origin server – they are running IIS 6 compression with ZipEnable for a Web-based app, with a focus on bandwidth reduction.
Here is their code to get origin server compression going with an ISA gateway:
Create a file with a .vbs extension, and put the following code in it:
ruleName = WScript.Arguments(0)
Set FW = CreateObject ("FPC.Root")
Set myRule = FW.GetContainingArray.ArrayPolicy.PolicyRules.Item (ruleName)
myRule.WebPublishingProperties.SendAcceptEncodingHeader = True
myRule.Save
WScript.Echo "Settings changed for " & ruleName
Save that file, (ex: change.vbs), then from a command prompt enter:
change.vbs rulename
Where rulename is the rule they want to allow that through, so for example:
change.vbs site1.domain.com
Would enable the virtual server site1.domain.com to receive the proper Accept Encoding header in a request from a browser that can handle compressed content with the site on an IIS Web server behind an ISA gateway.
Use this script at your discretion, but let us know how this fix works for your ISA/IIS compression solution.
Cheers,
Port80