web-dev-qa-db-ja.com

Nginxはgzipを有効にします

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圧縮が機能せず、GooglePagespeedとGtmetrixはこれを検出しません。

Gzip confはどこに配置できますか?

の中に http{}server{}またはlocation{} 鬼ごっこ?

私はすでにhttpタグとlocationタグでも試しました

13
wpdaniel

Gzip構成はどこにでも配置できますが、すべてのWebサイト/ファイルに適用する場合は、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の有効化とは関係がなく、可能な2番目のステップにすぎません。

24
iquito