Amazon ec2 AmazonEC2提供gzip JavaScript。但Cloudfront没有。为什么?

Amazon ec2 AmazonEC2提供gzip JavaScript。但Cloudfront没有。为什么?,amazon-ec2,gzip,amazon-cloudfront,Amazon Ec2,Gzip,Amazon Cloudfront,我有一个AmazonEC2Web服务器实例,当acceptencoding头设置为gzip时,它提供gzip内容。但是,当我使用完全相同的头向CloudFront CDN发出相同的请求,并将源服务器作为我的AmazonEC2实例时,它不会发送回gzip响应 我还尝试创建一个新的CloudFront发行版(因为我认为旧发行版可能缓存了未压缩的响应),然后发出相同的请求,我仍然得到一个未压缩的响应 有人能告诉我我可能遗漏了什么吗?这已被标记为与S3相关的问题的可能重复。问题是关于EC2,而不是S3,

我有一个AmazonEC2Web服务器实例,当
acceptencoding
头设置为
gzip
时,它提供gzip内容。但是,当我使用完全相同的头向CloudFront CDN发出相同的请求,并将源服务器作为我的AmazonEC2实例时,它不会发送回gzip响应

我还尝试创建一个新的CloudFront发行版(因为我认为旧发行版可能缓存了未压缩的响应),然后发出相同的请求,我仍然得到一个未压缩的响应


有人能告诉我我可能遗漏了什么吗?

这已被标记为与S3相关的问题的可能重复。问题是关于EC2,而不是S3,所以我不认为这是重复的

您可能会看到这个问题,因为Cloudfront在向源服务器发出的请求中添加了一个'Via'头,这是IIS的一个已知问题

如果要查看发送到源站的传入HTTP请求,您会在HTTP头中看到类似的内容:

Via=1.1 9dc1db658f6cee1429b5ff20764c5b07.cloudfront.net (CloudFront)
X-Amz-Cf-Id=k7rFUA2mss4oJDdT7rA0HyjG_XV__XwBV14juZ8ZAQCrbfOrye438A==
X-Forwarded-For=121.125.239.19, 116.127.54.19
添加“Via”头是标准的代理服务器行为。当IIS看到这一点时,它会删除gzip加密(我猜是因为假设旧的代理服务器无法处理压缩内容)

如果对applicationHost.config进行以下更改,则应纠正此问题:

<location path="Your Site">
  <system.webServer>
    <httpCompression noCompressionForHttp10="false" noCompressionForProxies="false" />
  </system.webServer>
</location>

另一个需要注意的问题是,IIS并不总是压缩它为给定资源收到的第一个响应,因此,Cloudfront可能会向源站发出请求,接收、缓存内容,然后将未压缩的内容提供给后续访问者。同样,您可以使用applicationHost.config中的serverRuntime设置修改此行为:

<location path="Your Site">
  <system.webServer>
    <httpCompression noCompressionForHttp10="false" noCompressionForProxies="false" />
    <serverRuntime frequentHitThreshold="1" frequentHitTimePeriod="00:00:05"       />
  </system.webServer>

有关这些设置的更多详细信息,请单击此处:

这篇博客文章解释了这个问题:

Windows中的平台和服务器是IIS。问题是,当域名是服务器的名称时,服务器提供gzip文件。但是当域名是Cloudfront CDN时,则所服务的文件不是gzip。直接向服务器和向CDN发出的请求都将
Accept Encoding
头设置为
gzip、deflate、sdch
Hi@pa669-这是否解决了您遇到的问题?Hi Mark。对不起,我出去了一会儿。所以我没有尝试解决方案。将尝试尽快恢复。谢谢,嘿,马克。真的很抱歉延迟了回复。上面的解决方案没有帮助。