Nginx启用gzip

时间:2016-09-29 16:41:01

标签: nginx gzip google-pagespeed

我想在我的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{}代码中?

我已经尝试过httplocation标签

1 个答案:

答案 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无关,应该只是可能的第二步。