我有一些由nginx提供的压缩javascript文件:
<script type="application/javascript" src="js/shim.min.js.gz"></script>
<script type="application/javascript" src="js/zone.js.gz"></script>
但似乎nginx将它们作为text / plain提供,导致浏览器错误:
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 image:
此图像使用gzip静态模块编译:
- 与-http_gzip_static_module
如果我解压缩javascripts并为它们提供未压缩的一切正常。 mime类型有问题吗?这适用于:
<script type="application/javascript" src="js/shim.min.js"></script>
<script type="application/javascript" src="js/zone.js"></script>
答案 0 :(得分:1)
Module ngx_http_gzip_static_module:
ngx_http_gzip_static_module模块允许发送带有“.gz”文件扩展名的预压缩文件,而不是普通文件。
启用(“开启”)或禁用(“关闭”)检查预压缩文件的存在。
我们必须为支持的压缩客户端(/some/path/js/filename.js.gz
)提供两个文件,但不支持(/some/path/js/filename.js
)。
可以使用gzip命令或任何其他兼容的文件压缩文件。
在你的html中使用:
<script type="application/javascript" src="/js/filename.js"></script>
和nginx会将其中一个文件返回给客户端。
建议原始文件和压缩文件的修改日期和时间相同。