Iis 7 当通过nginx反向代理传递时,IE中的文件下载HTTP头出现问题

Iis 7 当通过nginx反向代理传递时,IE中的文件下载HTTP头出现问题,iis-7,asp-classic,download,nginx,http-headers,Iis 7,Asp Classic,Download,Nginx,Http Headers,设置: HTTP/1.1 200 OK Cache-Control: private Content-Length: 1431 Content-Type: text/x-vCalendar Expires: Fri, 09 Jul 2010 13:26:38 GMT Server: Microsoft-IIS/7.5 Content-Disposition: filename=2507541_16268.vcs; X-Powered-By: ASP.NET backend: iis1 Date:

设置:

HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 1431
Content-Type: text/x-vCalendar
Expires: Fri, 09 Jul 2010 13:26:38 GMT
Server: Microsoft-IIS/7.5
Content-Disposition: filename=2507541_16268.vcs;
X-Powered-By: ASP.NET
backend: iis1
Date: Fri, 09 Jul 2010 13:27:37 GMT

HTTP/1.1 200 OK                                                   
Connection: keep-alive
Vary: Accept-Encoding
Cache-Control: private
Content-Length: 1431
Content-Type: text/x-vCalendar
Expires: Fri, 09 Jul 2010 13:26:19 GMT
Server: nginx
Content-Disposition: filename=2507541_16268.vcs;
X-Powered-By: ASP.NET
backend: iis1
Date: Fri, 09 Jul 2010 13:27:15 GMT
IIS7提供ASP经典VB脚本代码,该代码生成一个动态VSC页面/文件,其中包含要下载的标题

Response.ContentType = "text/x-vCalendar"
Response.Expires = -1
Response.Buffer = True
Response.Clear
Response.AddHeader "Content-Disposition", "filename=" & strFileName & ".vcs;"
Response.Write strFileContent
我们的IIS7服务器在nginx反向代理的后面。除此文件下载外,一切正常

问题:

HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 1431
Content-Type: text/x-vCalendar
Expires: Fri, 09 Jul 2010 13:26:38 GMT
Server: Microsoft-IIS/7.5
Content-Disposition: filename=2507541_16268.vcs;
X-Powered-By: ASP.NET
backend: iis1
Date: Fri, 09 Jul 2010 13:27:37 GMT

HTTP/1.1 200 OK                                                   
Connection: keep-alive
Vary: Accept-Encoding
Cache-Control: private
Content-Length: 1431
Content-Type: text/x-vCalendar
Expires: Fri, 09 Jul 2010 13:26:19 GMT
Server: nginx
Content-Disposition: filename=2507541_16268.vcs;
X-Powered-By: ASP.NET
backend: iis1
Date: Fri, 09 Jul 2010 13:27:15 GMT
当使用IE并通过反向代理(负载平衡器)进入时,文件不是作为.vcs下载的,而是希望下载.asp文件/页面

当通过反向代理(负载平衡器)使用其他浏览器时,它可以正常工作

当使用IE并绕过反向代理(负载平衡器)直接进入IIS服务器时,它工作正常

假设:

HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 1431
Content-Type: text/x-vCalendar
Expires: Fri, 09 Jul 2010 13:26:38 GMT
Server: Microsoft-IIS/7.5
Content-Disposition: filename=2507541_16268.vcs;
X-Powered-By: ASP.NET
backend: iis1
Date: Fri, 09 Jul 2010 13:27:37 GMT

HTTP/1.1 200 OK                                                   
Connection: keep-alive
Vary: Accept-Encoding
Cache-Control: private
Content-Length: 1431
Content-Type: text/x-vCalendar
Expires: Fri, 09 Jul 2010 13:26:19 GMT
Server: nginx
Content-Disposition: filename=2507541_16268.vcs;
X-Powered-By: ASP.NET
backend: iis1
Date: Fri, 09 Jul 2010 13:27:15 GMT
听起来像是HTTP头的问题。我能在回复中找到的唯一不同之处是额外的回复标题:

Connection: keep-alive
Vary: Accept-Encoding
标题响应:

HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 1431
Content-Type: text/x-vCalendar
Expires: Fri, 09 Jul 2010 13:26:38 GMT
Server: Microsoft-IIS/7.5
Content-Disposition: filename=2507541_16268.vcs;
X-Powered-By: ASP.NET
backend: iis1
Date: Fri, 09 Jul 2010 13:27:37 GMT

HTTP/1.1 200 OK                                                   
Connection: keep-alive
Vary: Accept-Encoding
Cache-Control: private
Content-Length: 1431
Content-Type: text/x-vCalendar
Expires: Fri, 09 Jul 2010 13:26:19 GMT
Server: nginx
Content-Disposition: filename=2507541_16268.vcs;
X-Powered-By: ASP.NET
backend: iis1
Date: Fri, 09 Jul 2010 13:27:15 GMT
请求

在这个问题上,有没有人能提供一些线索


要更改的nginx设置,或要添加的ASP代码?

所以我最终解决了这个问题,我想我会把它发布给其他需要帮助的人

我从我的nginx.conf文件中注释掉了gzip_vary行,这似乎可以解决问题,但我选择不将设置设置设置为“off”,因为我不想强制从其他浏览器中删除vary头,因为在其他浏览器中,事情正在运行。。。评论成功了

# commenting this out seemed to work, but I could have set to: off
# gzip_vary on; 
此外,我还告诉gzip禁用IE6

Gotcha:我发现指定expires头也会导致问题。我建议您在测试时注释掉任何expires指令,并找出如何根据需要进行过滤

因此,为了更好地衡量,这里是我的nginx配置文件中更新的压缩部分

 ## Compression
  gzip              on;
  gzip_buffers      16 8k;
  gzip_comp_level   6;
  gzip_http_version 1.0;
  gzip_min_length   0;
  gzip_types        text/plain text/css image/x-icon text/html text/xml application/x-javascript;
  #gzip_vary         on;
  gzip_disable     "msie6";
  gzip_proxied     any;