我想在我的nginx服务器上启用gzip压缩。 nginx.conf文件位于:
http {
# Enable Gzip
server {
location ~* \.(?:ico|woff|css|js|gif|jpe?g|png)$ {
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
}
location /api {
try_files $uri $uri/ /api/index.php;
}
location / { ##merge
gzip on;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_proxied any;
gzip_types
# text/html is always compressed by HttpGzipModule
text/css
text/javascript
text/xml
text/plain
text/x-component
application/javascript
application/json
application/xml
application/rss+xml
font/truetype
font/opentype
application/vnd.ms-fontobject
image/svg+xml;
gzip_static on;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";
gzip_vary on;
try_files $uri $uri/ /index.php?q=$uri&$args;
}
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; }
location ~ "^/ngx_pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon" { }
}
}
不幸的是,gzip压缩不起作用,Google Pagespeed和Gtmetrix没有检测到这一点。
我可以在哪里放置gzip conf?
在http{}
server{}
或location{}
代码中?
我已经尝试过http
和location
标签
答案 0 :(得分:22)
您可以将gzip配置放在任何位置,但如果要将其应用于所有网站/文件,最好将其放在http部分中 - 这将是所有服务器和位置块的默认设置。我还会“缩短”/将您的配置更改为以下内容:
http {
gzip on;
gzip_min_length 500;
gzip_proxied any;
gzip_comp_level 4;
gzip_types text/css text/javascript text/xml text/plain text/x-component application/javascript application/json application/xml application/rss+xml font/truetype font/opentype application/vnd.ms-fontobject image/svg+xml;
gzip_vary on;
gzip_disable "msie6";
... here come your server blocks / rest of your config
}
我使用该配置并且它对我来说很好 - 您也可以先在浏览器中测试它(例如使用Firebug),然后再使用外部服务进行测试。
使用gzip_static只有在为Nginx实际生成gzip文件时才有意义(如文件名+ .gz),所以这与启用gzip无关,应该只是可能的第二步。