GCEに立てたNginxでgzip設定が利かないので、ハマってましたがLBの後ろにある場合は設定が必要でした。
nginxのGzipが有効にならない
Google PageSpeed Insights で自分のサイトを調べてみるとコンテンツの圧縮がされていないと指摘された。おかしいな、設定しているはずなのに。
モジュールは入っている
CentOS7にyumで入れたnginxを使っています。最初、yumでいれたnginxはgzipのモジュールが有効じゃないのかと思ったのですが、
nginx -V
で確認すると、普通にモジュールはいってました。ということは原因はこれじゃない。
プロキシの後ろでは追加の設定が必要
うちのサイトはGoogle Compute EngineのHTTP負荷分散を使っているのです。nginxはプロキシサーバーの後ろにいる場合はデフォルトでgzip圧縮をしない仕様のようです。
圧縮と解凍 | NGINX
デフォルトでは、NGINXはプロキシされたリクエスト(プロキシサーバからくるリクエスト)への応答は圧縮しません。プロキシサーバからきたリクエストだという根拠は、リクエスト中のViaフィールドの存在によって決定されます。これらの応答も圧縮するように設定するには、gzip_proxied ディレクティブを使います。
なるほどー!
そんなわけで以下の設定を追加しました。
gzip_proxied any;
これでGoogle Compute Engineのロードバランサーの後ろにいるNginxがgzipでコンテンツを圧縮して返してくれるようになりました。