Does IIS have a secret, unlogged, transparent, case-sensitive proxy built into it?
A file exists on the web-server:
GET http://www.stackoverflow.com/javascript/ModifyQuoteArea.js HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: en-US
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: www.stackoverflow.com
HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Length: 29246
Date: Mon, 07 Mar 2011 14:20:07 GMT
Content-Type: application/x-javascript
ETag: "5a0a6178edacb1:1c51"
Server: Microsoft-IIS/6.0
Last-Modified: Fri, 02 Tue 2010 17:03:32 GMT
Accept-Ranges: bytes
X-Powered-By: ASP.NET
...
Problem is that a changes made to the file will not get served, the old (i.e. February of last year) version keeps getting served:
HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Length: 29246
Date: Mon, 07 Mar 2011 14:23:07 GMT
Content-Type: application/x-javascript
ETag: "5a0a6178edacb1:1c51"
Server: Microsoft-IIS/6.0
Last-Modified: Fri, 02 Tue 2010 17:03:32 GMT
Accept-Ranges: bytes
X-Powered-By: ASP.NET
...
The same old file gets served, even though we've:
- renamed the file
- deleted the file
- restarted IIS
The request for this file does not appear in the IIS logs (e.g. C:\WINNT\System32\LogFiles\W3SVC7\
)
And this only happens from the outside (i.e. the internet). If you issue the request locally on the server, then you will:
- get the current file (file there)
- 404 (file renamed)
- 404 (file deleted)
But if i change the case of the requested resource, i.e.:
GET http://www.stackoverflow.com/javascript/MoDiFyQuOtEArEa.js HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: en-US
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: www.stackoverflow.com
Note:
MoDiFyQuOtEArEa.js
versesModifyQuoteArea.js
Then i do get the proper file (or get the 404 as i expect if the file is renamed or deleted).
But any subsequent changes to the file will not show up until i change the case of the file i'm asking for.
The IIS logs show no activity when the web-site serves up one of the mysterious cached files. Requests for other (i.e. ASP) files (or using the change-requested-resource-case-to-bypass-transparent-cache trick) do show up in the IIS logs, and they show the proper source client IP address (i.e. not the address of some mysterious intermediate proxy).
- Since the file doesn't exist on the hard drive anymore, i conclude that there is a proxy.
- The requests serviced from this proxy are not logged in the IIS logs.
- The requests for new files are logged, and from the client IP, not a proxy IP.
- The proxy is case sensitivie.
This does not sound like something Microsoft, or IIS, would do: - a transparent proxy? - case-sensitivie? - unlogged? - surviving restarts of IIS? - surviving in a cache for hours?
can't believe that our customer's IIS are doing these things. i'm assuming there is some other transparent proxy in front of IIS.
Or, does IIS have a:
- transparent,
- unlogged,
- case-sensitive,
- memory based
proxy, that caches content for at least 7 hours?