gzip_static无法与Nginx一起使用



nginx提供了一些压缩JavaScript文件:

<script type="application/javascript" src="js/shim.min.js.gz"></script>
<script type="application/javascript" src="js/zone.js.gz"></script>

,但看来nginx将它们用作文本/普通,导致浏览器错误:

SyntaxError: illegal character   shim.min.js.gz:1

看标题,这是响应:

Content-Encoding:gzip
Content-Type:text/plain
Date:Tue, 29 Nov 2016 18:03:01 GMT
ETag:W/"583ce194-68b3"
Last-Modified:Tue, 29 Nov 2016 02:01:56 GMT 
Server:nginx/1.10.2
Vary:Accept-Encoding

这是我的nginx.conf:

worker_processes 4;
events { worker_connections 1024; }
http {
include /etc/nginx/mime.types;
gzip on;
gzip_static on;
gzip_disable "msie6";
gzip_vary on;
gzip_comp_level 5;
gzip_buffers 16 8k;
gzip_http_version 1.0;
gzip_min_length 256;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon;
        upstream node-app {
              server node1:3000 weight=10 max_fails=3 fail_timeout=30s;
        }
        server {
              listen 80;
              index index.html
              error_log  /var/log/nginx/error.log;
              access_log /var/log/nginx/access.log;
              root /var/www/public;
              location /api {
                proxy_pass http://node-app;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
              }
        }
}

我的gzip_static设置为ON,但似乎无法正常工作。我正在使用nginx docker映像:

> nginx:1.10.2-alpine

使用GZIP静态模块编译此图像:

- with-http_gzip_static_module

如果我取消压缩JavaScript并将其提供给它们,一切正常。MIME类型有问题吗?这可以很好地使用:

<script type="application/javascript" src="js/shim.min.js"></script>
<script type="application/javascript" src="js/zone.js"></script>

模块ngx_http_gzip_static_module:

NGX_HTTP_GZIP_STATIC_MODULE模块允许发送带有" .gz" fileName扩展名而不是常规文件的预压缩文件。

gzip_static:

启用(" on")或禁用(" off")检查预压缩文件的存在

我们必须有两个文件以用于支持的压缩客户端(/some/path/js/filename.js.gz),而不支持(/some/path/js/filename.js)。

可以使用GZIP命令或任何其他兼容的文件来压缩文件。

在您的html中使用:

<script type="application/javascript" src="/js/filename.js"></script>

和nginx将返回客户端之一。

建议原始文件和压缩文件的修改日期和时间相同。

最新更新