Nginx 静态文件显示为未压缩,即使web服务器已配置为gzip压缩
我已经在Amazon Elastic BeanStalk上托管了我的网站。它使用nginx作为代理服务器,并启用了gzip压缩。但是当我在网站上运行PageInsights时,它报告说我的许多静态内容文件需要Gzip。为什么PageSpeed Insights无法识别压缩?还有什么需要做的吗?我想我确实找到了答案 通过在nginx上启用gzip压缩,您只能为text/html启用它(这是nginx的默认设置) 为了对其他类型启用它,您必须显式地这样做。对于beanstalk,请在项目中创建以下文件 .ebextensions/gzip.config 并将代码放在那里(确保保留缩进,这很重要):Nginx 静态文件显示为未压缩,即使web服务器已配置为gzip压缩,nginx,gzip,amazon-elastic-beanstalk,Nginx,Gzip,Amazon Elastic Beanstalk,我已经在Amazon Elastic BeanStalk上托管了我的网站。它使用nginx作为代理服务器,并启用了gzip压缩。但是当我在网站上运行PageInsights时,它报告说我的许多静态内容文件需要Gzip。为什么PageSpeed Insights无法识别压缩?还有什么需要做的吗?我想我确实找到了答案 通过在nginx上启用gzip压缩,您只能为text/html启用它(这是nginx的默认设置) 为了对其他类型启用它,您必须显式地这样做。对于beanstalk,请在项目中创建以下文
正如您所看到的,在我的例子中,我需要gzip json文件,您可能在Pagespeed方面遇到了问题,抱怨css和js文件,对吗?正如上面的链接所示,您可以使用*通配符压缩所有内容,但如果没有,只需在配置中列出所需的mime类型,部署它,然后再次检查PageSpeed Insights。Dmitry的回答仅适用于amazon为您设置的默认配置中没有gzip_类型条目的情况。现在就是这种情况,因此您需要编写一个.ebextensions conf文件,以使用自定义配置覆盖整个配置。为此,您需要:
/etc/nginx/conf.d
中,名为00\u elastic\u beanstalk\u proxy.conf
proxy.conf
的新文件,该文件遵循以下模板:
files:
"/etc/nginx/conf.d/proxy.conf":
mode: "000644"
owner: root
group: root
content: |
# Paste the contents of the config you downloaded here
# at this indentation level
container_commands:
00_remove:
command: "rm -f /tmp/deployment/config/#etc#nginx#conf.d#00_elastic_beanstalk_proxy.conf /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf"
proxy.conf
文件的外观:
警告:
我已经得到保证,以这种方式覆盖整个配置是一个常见的用例,虽然它使将来更改配置更容易,但这将破坏AWS EB Web工具的某些功能。特别是任何影响nginx配置的东西(静态文件路径、gzip压缩等)都不会工作。为了进行更改,您只需直接在
proxy.conf
中更改配置即可。techwes的解决方案非常有用,效果非常好(在我的情况下,允许我将应用程序/javascript添加到gzip_类型中),只需进行一次修改:您的.ebextensions文件夹中的文件必须使用.config
扩展名命名,所以它应该是proxy.config
。(我试图在techwes的帖子中添加评论,但没有足够的代表!)
还应注意,如果您使用AWS控制台(环境>配置>软件配置)在EB环境中关闭gzip,它将从
00\u elastic\u beanstalk\u proxy.conf
文件中删除gzip行,因此,您可以使用.config
文件来添加另一个.conf
文件,而不必替换整个00\u elastic\u beanstalk\u proxy.conf
文件。您知道这一点吗?我已经启用了它,但它没有为我压缩不,它仍然显示为未压缩。谢谢提示!不过,就我而言,肯定还有另一个问题。我有一个“内容类型:text/html”,但它仍然不是压缩。也许我不应该使用AWS控制台,而应该直接使用nginx config来启用gzip。谁知道控制台做什么。
files:
"/etc/nginx/conf.d/proxy.conf":
mode: "000644"
owner: root
group: root
content: |
# Paste the contents of the config you downloaded here
# at this indentation level
container_commands:
00_remove:
command: "rm -f /tmp/deployment/config/#etc#nginx#conf.d#00_elastic_beanstalk_proxy.conf /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf"