在Amazon Elastic Beanstalk Windows环境中启用gzip [英] Enabling gzip on Amazon Elastic Beanstalk Windows environment

查看:167
本文介绍了在Amazon Elastic Beanstalk Windows环境中启用gzip的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法为AWS Elastic Beanstalk创建适当的部署包以在Windows IIS环境中启用gzip压缩。

I cannot create a proper deployment package for AWS Elastic Beanstalk to enable gzip compression on Windows IIS environments.

我在web配置中启用了here 。这只适用于静态文件,动态文件按原样提供。

I enabled in web config as described here. This worked only for static files, dynamic files are served as is.

有人有解决方案吗?

编辑:
IIS存在另一个问题。它不会压缩从代理请求的文件,也会在第一次请求时提供原始文件。这会导致CDN提供未压缩的文件,因为它们的端点会缓存原始文件。

There is another issue with IIS. It doesn't compress files requested from proxies and also serves the original file on the first request. This causes CDN's to serve uncompressed file because their endpoints caches the original file.

推荐答案

经过10个小时的努力,我终于找到了一个固体解决方案。

After struggling 10 hours finally I came up with a solid solution.

AWS支持配置文件来修改环境。它们在部署应用程序之前运行。 http://docs.aws.amazon.com/elasticbeanstalk/ latest / dg / customize-containers.html

AWS supports config files to modify the environment. They run before deploying application. http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers.html

所以我创建了一个配置文件,在IIS上启用gzip,将其放到.ebextensions / gzip.config 在我的项目文件夹中。

So I created a config file to enable gzip on IIS, placed it to ".ebextensions/gzip.config" in my project folder.

以YAML格式配置:

container_commands: 
     00-server-config:
       command: c:\windows\system32\inetsrv\appcmd set config /section:system.webServer/serverRuntime /frequentHitThreshold:1 /frequentHitTimePeriod:00:00:05
       waitAfterCompletion: 0
     01-server-config:
       command: c:\windows\system32\inetsrv\appcmd set config /section:system.webServer/httpCompression /noCompressionForHttp10:False /noCompressionForProxies:False
       waitAfterCompletion: 0
     02-gzip-dynamic: 
       command: c:\windows\system32\inetsrv\appcmd set config /section:urlCompression /doDynamicCompression:True
       waitAfterCompletion: 0
     03_gzip_static: 
       command: c:\windows\system32\inetsrv\appcmd set config /section:urlCompression /doStaticCompression:True
       waitAfterCompletion: 0
     04_restart_iis: 
       command: iisreset
       waitAfterCompletion: 0

web.config中需要对system.webServer部分进行一些更改:

There are some changes needed in web.config to system.webServer section:

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" noCompressionForHttp10="false" noCompressionForProxies="false">
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/>
    <dynamicTypes>
        <add mimeType="text/*" enabled="true"/>
        <add mimeType="message/*" enabled="true"/>
        <add mimeType="application/javascript" enabled="true"/>
        <add mimeType="application/x-javascript" enabled="true"/>
        <add mimeType="application/json; charset=utf-8" enabled="true"/>
        <add mimeType="*/*" enabled="false"/>
    </dynamicTypes>
    <staticTypes>
        <add mimeType="text/*" enabled="true"/>
        <add mimeType="message/*" enabled="true"/>
        <add mimeType="application/javascript" enabled="true"/>
        <add mimeType="application/x-javascript" enabled="true"/>
        <add mimeType="application/atom+xml" enabled="true"/>
        <add mimeType="application/xaml+xml" enabled="true"/>
        <add mimeType="*/*" enabled="false"/>
    </staticTypes>
</httpCompression>
<httpProtocol>
    <customHeaders>
        <remove name="Vary" />
        <add name="Vary" value="Accept-Encoding" />
    </customHeaders>
</httpProtocol>

通过这两项更改,Elastic Beanstalk实例准备好提供压缩的静态和动态文件。也适用于CDN。

With this two changes Elastic Beanstalk instances are prepared to serve compressed static and dynamic files. Also works with CDN.

这篇关于在Amazon Elastic Beanstalk Windows环境中启用gzip的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆