[nginx]proxy_cacheでgzip済みコンテンツをキャッシュする


nginx + proxy_cacheの威力は凄まじく、ほとんどアプリケーションサーバまでアクセスが行かなくなることもあるので、proxy_cacheが使える状況なら非常に有効な手段だと思います。

今回は、proxy_cacheはしているけど、ページの容量が大きく転送量も減らしたいという場合のgzip圧縮の話です。

リクエスト毎にgzip圧縮の処理が行われてしまっており、リクエスト数が多大になってくるとcpuリソースを食ってしまう可能性があります。どうせgzip圧縮するんだったらそれごとproxy_cacheしちゃえばいいんじゃないかと思い、設定してみたところ正常に動作したので設定を書いておきたいと思います。

広告

目指す構成

Internet -> [nginx(LB)] -> [nginx(RPX) -> app]

これの、RPXの部分でgzip処理を行い、LBの方ではその内容をproxy cacheして配信時に改めてgzipするのではなく、proxy cacheした内容を返す。

※[]はサーバの単位

nginx.lb.conf

nginx.rpx.conf

proxy_cache先にgzip後の容量で保存されているか確認。

ということで、とりあえず動いたのでメモでした。

関連記事