Nginx - Amazon Cloudfront - Gzip 不适用于 JS 文件

Nginx - Amazon Cloudfront - Gzip Doesn't work for JS files

这是我们关于 Gzip 的 Nginx 配置:

        gzip on;
        gzip_disable "msie6";
        gzip_vary on;
        gzip_proxied any;
        gzip_comp_level 5;
        gzip_min_length 256;
        gzip_buffers 16 8k;
        gzip_http_version 1.0;
        gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript image/png image/gif image/jpeg;

我们的 JS 文件由 Amazon Cloudfront 提供,但它们没有被压缩,即使在使 Amazon 缓存无效、清除 Wordpress 缓存并重新启动我们的服务器之后也是如此。

响应 header 给出:

curl -I https://d3opmxxxxnoy.cloudfront.net/wp-content/cache/min/1/def188074382933064c622c86c835c7f.js
HTTP/1.1 200 OK
Content-Type: application/javascript
Content-Length: 473913
Connection: keep-alive
Server: nginx
Date: Mon, 16 Apr 2018 16:45:55 GMT
Last-Modified: Mon, 16 Apr 2018 15:45:54 GMT
ETag: "5ad4c532-73b39"
Expires: Thu, 31 Dec 2037 23:55:55 GMT
Cache-Control: max-age=315360000
Access-Control-Allow-Origin: *
Accept-Ranges: bytes
X-Cache: Miss from cloudfront
Via: 1.1 63db28xxxx087abd41a1692.cloudfront.net (CloudFront)

我们怎么知道这是 Nginx 或 Amazon 配置问题?不知道问题出在哪里。

更新: 我们使用此工具对我们自己的域执行了另一项测试:https://checkgzipcompression.com

它仍然说 JS 文件未压缩。所以这是一个 Nginx 问题 - 但不确定为什么会发生,因为我的 conf 似乎是正确的。

响应 header 给出:

Content-Type: application/javascript

这是需要包含在您的 gzip_types 语句中以便压缩这些类型的响应的 MIME 类型。

您的现有值包含许多相似的 MIME 类型,但没有一个与服务器实际发送的内容完全匹配。

详情见this document