2012年12月21日金曜日

nginxでRailsのassetsのgzを有効活用する

nginxのモジュールが入っているか確認

nginxのHttpGzipStaticModuleを使うので、有効になっているか確認します。有効になっていない場合は、configureからやり直し。

nginx -V|grep http_gzip_static_module

nginxのconfでgzip_staticをonに


location /assets {
     alias /path/to/rails/app/public/assets;
    gzip_static on;
    gzip_proxied        any;
    gzip_disable        "MSIE [1-6]\.";
    gzip_vary           on;
    expires max;
}


実際に動いているか確認

ブラウザで確認する場合、レスポンスヘッダーのContent-EncodingがgzipになっていればOKです。

nginx側で確認する場合、ワーカープロセスIDに対してstrace -p $PID 2>&1|grep openとしておいて、ブラウザからアクセスし(キャッシュを無効にするためにCommand + shift + Rか、Ctrl shift F5?) gzファイルがオープンされていることを確認してください。no such file or directory や gzが取れたファイルをオープンしている場合は何らかのエラーがあります。


gzip_http_version 1.1か1.0について

プロキシサーバを通してnginxにアクセスする場合、リクエストヘッダーのACCEPT-ENCODINGが渡されないことがあります。その際はgzip_http_version 1.0; とするとうまく動くかもしれません。(デフォルトは1.1)マニュアルに書いてあります。プロキシサーバがACCEPT-ENCODINGをきちんと渡すよう設定するのが一番良いです。

0 件のコメント: