ASP.NET vNext,在 Azure 上启用对 IIS 8 的压缩?

ASP.NET vNext, enable compression to IIS 8 on Azure?

当 asp.net 5 应用程序部署到 Azure 上的 IIS 8 时,如何启用内容类型为 application/json 的响应的 gzip 压缩?通常这会使用 web.config 来完成,但现在已经不存在了……新方法是什么?

您需要 reverse-proxy 您的 kestrel 应用程序,然后您可以告诉 reverse-proxy 进行压缩。

在nginx中,是这样的:

server {
  listen 80 default_server;
  listen [::]:80 default_server ipv6only=on;
  server_name localhost;

  gzip            on;
  gzip_min_length 1000;
  #gzip_proxied    expired no-cache no-store private auth;
  gzip_proxied any;
  gzip_comp_level 6;
  gzip_buffers 16 8k;
  gzip_http_version 1.1;
  gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
  gzip_vary on;
  gzip_disable "MSIE [1-6]\.(?!.*SV1)";


  location /
  {
    proxy_pass http://127.0.0.1:5004;
  }
}

所以这里 nginx 将捕获端口 80 上的传入请求,然后将它们转发到同一台机器上的 kestrel,但在端口 5004 上。Kestrel 然后将响应发送回 nginx。由于启用了 gzip,nginx 将压缩响应并将其发送给用户。您需要确保的是,Kestrel 上的应用程序在输出文件时(例如,当使用什么 used-to-be 时,不会 return HTTP headers,例如 HTTP 1.1 chuncked-encoding Response.TransmitFile).

IIS 7.5+ 支持反向代理。
请参阅此处了解更多信息:
https://serverfault.com/questions/47537/can-iis-be-configure-to-forward-request-to-another-web-server