Nginx におけるWebサイトのパフォーマンス改善の一つにレスポンスの圧縮がある。
Improve Performance | Compute Engine Documentation | Google Cloud
ファイルサイズが小さくなるため、サーバーとクライアント間でのデータ転送量が削減され、帯域幅の節約、ユーザー体験の向上、ネットワークのコストの削減が期待できる。
Nginxでの設定方法は以下 Compression and Decompression | NGINX Documentation
Load Balancerの背後にあるNginxのレスポンスが圧縮されていない
LBやCDNを経由時にViaヘッダが付与されるとNginxはデフォルトではgzip圧縮しない。
圧縮させるためには、 gzip_proxied
を設定する必要がある。
- Module ngx_http_gzip_module
- nginx - Google cloud load balancer not returning Content-Encoding: gzip - Server Fault
- コンテンツキャッシュとVaryヘッダとnginxnginx - Qiita
- nginx - What are the options for the gzip_proxied directive for? - Stack Overflow
Varyヘッダをつける
CDNに対してgzip圧縮されたものとされていないものそれぞれのキャッシュを保存するように伝えるために、 Vary: Accept-Encoding
をつける。
Apacheだと勝手に付与してくれるがNginxの場合は gzip_vary on
を設定する。
最終的なconfig
server {
gzip on;
gzip_types text/plain text/css application/javascript;
gzip_min_length 1024;
gzip_vary on;
gzip_proxied any;
}