Plack::Builderのenable_ifよりも簡単に、指定した条件下でmiddlewareを有効にするモジュール」で書いていた Plack::Builder::Conditionals をリリースしました。

ReverseProxyを使う場合は、接続元のIPアドレスを指定するのが必須になりますが、Conditionalsなら簡単に書けます

use Plack::Builder;
use Plack::Builder::Conditionals;

builder {
   enable match_if addr(['192.168.0.0/24','127.0.0.1']), "ReverseProxy";
  $app
};

今日出したバージョン0.02では、User-Agentをチェックするメソッドを追加してます。PlackでHTTPコンテンツ圧縮する場合は、これを利用して

builder {
    # 古いバージョンにはhtml以外に問題がある
    enable match_if browser(qr!^Mozilla/4!), 'ForceEnv',
        "psgix.compress-only-text/html" => 1;
    # Netscapeの4.0x とかもういねぇよ
    enable match_if browser(qr!^Mozilla/4\.0[678]!), 'ForceEnv',
        "psgix.no-compress" => 1;
    # IE7,8はMozilla/4だけど問題はないNe
    enable match_if browser(qr!\bMSIE (?:7|8)!), 'ForceEnv',
        "psgix.no-compress" => 0,
        "psgix.compress-only-text/html" => 0;
    enable "Deflater",
        content_type => ['text/html','text/css','text/plain','text/javascript','application/javascript'],
        vary_user_agent => 1;
    $app
}

ように設定できます。ただしpsgix.no-compressがサポートされているのはまだ僕のgithubのforkだけです。テストしてくれる方募集中

このブログ記事について

このページは、Masahiro Naganoが2011年2月 2日 15:59に書いたブログ記事です。

ひとつ前のブログ記事は「Cwd::Guardっていうモジュールを出していた話」です。

次のブログ記事は「OrePANとcpanmでCPANの部分ミラーを作ってCPANモジュールを管理する」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

OpenID対応しています OpenIDについて
Powered by Movable Type 4.27-ja