IIS6是否有一个秘密,未logging,透明,区分大小写的代理?

IIS是否内置了一个秘密的,未logging的,透明的,区分大小写的代理?

Web服务器上存在一个文件:

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 ... 

问题是对文件所做的更改不会得到服务, 旧的版本 (即去年2月份)版本一直在服务:

 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 ... 

同样的旧文件得到了服务,即使我们已经:

  • 重命名文件
  • 删除了该文件
  • 重新启动IIS

该文件的请求不会出现在IIS日志中(例如C:\WINNT\System32\LogFiles\W3SVC7\

而这只发生在外面(即互联网)。 如果您在服务器上本地发出请求,则您将:

  • 获取当前文件(文件在那里)
  • 404(文件改名)
  • 404(文件删除)

但是,如果我改变请求资源的情况下 ,即:

 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 

注意: MoDiFyQuOtEArEa.js ModifyQuoteArea.js

然后我得到正确的文件(或得到404,如我所料,如果文件被重命名或删除)。

但是,直到我改变我要求的文件的情况下,文件的任何后续更改将不会显示。

当网站提供一个神秘的caching文件时,IIS日志显示没有活动。 请求其他(即ASP)文件(或使用change-requested-resource-case-to-bypass-transparent-cache技巧)在IIS日志中显示,并显示正确的源客户端IP地址(即不是一些神秘的中间代理地址)。

  • 由于该文件不再存在于硬盘上,所以我得出结论说有一个代理。
  • 从该代理服务的请求不logging在IIS日志中。
  • logging新文件的请求,并从客户端IP,而不是代理IP。
  • 代理是大小写敏感的。

这听起来不像微软或IIS所做的: – 一个透明的代理? – 案例敏感? – 没有logging? 幸存重启的IIS? – 在caching中生存几个小时?

不能相信我们的客户的IIS正在做这些事情。 我假设有一些其他透明代理在IIS前面。

或者,IIS有一个:

  • 透明,
  • 未注册的,
  • 区分大小写,
  • 记忆为主

代理,caching内容至less7小时?

如果请求没有显示在IIS日志中,则由某处的caching提供服务,无论是客户端的本地caching还是请求链中某处的caching(代理)。

查看客户端上的请求的响应头,并查看是否有Via:头。 Via:头指示链中有一个代理,链中每个代理应该有一个头(假设代理正在运行)。 如果您看到一个或多个内容,则从caching中提供内容是一个很好的机会。

在我戴上锡纸帽并宣布必须有一个没有人知道的超级秘密代理之前,我会要求客户检查他们的浏览器设置。 如果他们使用IE浏览器,这听起来有点像“检查更新版本的存储页面:从不”(也可能是“每次我启动IE”,如果客户端没有重新启动IE作为故障排除的一部分)。

尝试curl -v http://www.stackoverflow.com/javascript/ModifyQuoteArea.js ,如果您仍然看到旧版本的客户端到服务器的path中configuration不正确的/不符合HTTP的caching。 如果你看到当前的版本,你的浏览器将被指责

所以答案是“它不应该”。

以问题forms回答更长的问题:您在此处显示的代理行为非常类似于代理,因为主机名是请求的一部分。 你是否像一个代理对待服务器,或者你只是从代理捕获stream量?

通常,当客户端请求内容时,他们请求一个相对URL并提供一个Host:头。

只有当目标被configuration为代理时 ,客户端才会http://fullsomethingname.fqdn.com请求代理服务器,并且必须基于此来debugging奇怪的行为。

所以,从这个angular度来看,我们可以保证说你在这个组合中有一个代理。 作为代理人的提琴手算得很多。

我build议像Ochoto一样,尝试使用Curl或WFETCH或WGET或任何其他简单不间断的WinInet或IE的浏览器设置或代理caching客户端来完全确定。

其实,如果你想绝对确定:

  • networking捕获在客户端上运行
  • 在服务器上同时捕获networking
  • 使用浏览器客户端来请求所述内容
  • 使用非浏览器客户端来请求相同的内容
  • 如果你有IIS 7,那么URL的FREB日志logging会非常好
  • 理想情况下,能够在处理每个扩展时浏览Web服务器; 否则,就像IISTrace

如果你真的想要的话,你也可以使用HTTP.SYS跟踪,只是为了好的措施。

如果

  • 你看到请求命中服务器,并
  • 服务器发送一个响应,
  • 该响应明确地不被服务器logging,并且
  • 没有ISAPIfilter存在,可能已经决定日志是如此 1999年,或
  • 只是ch咽而已
  • 没有被反病毒软件扼杀,在一些奇怪的文件处理是有效的,没有它是不是不知道你是一帆风顺的
  • 托pipe的处理程序中不会出现exception,这些exception不应该为静态文件运行,但由于某些原因仍然会通过脚本映射来处理它们

那么, 那么那么 ,恩,抱歉,我已经失去了我的思路。