メメメモモ

プログラミング、筋トレ、ゲーム、etc

mod_proxy + Mojolicious(::Lite)を使ってデプロイする場合

Mojoliciousで書いたアプリをバックエンドで動作させ、apache+mod_proxyをフロントエンドに置いている場合の設定メモです。


Apache + mod_proxyの設定

今回は、下記のように、パスで振り分けるように設定している場合です。

ServerName somehost.com
ProxyPass /app1 http://localhost:3000


Mojoliciousの設定

redirect_toのための設定

redirect_to()メソッドが絶対URLを使うようにするために、
次のように環境変数を設定します。

sub startup {
    $ENV{MOJO_REVERSE_PROXY} = 1;
}
リクエストベースのURLパスを設定

各リンクのベースとなるパスを設定するように、以下のフックを設定します。

 app->hook('before_dispatch' => sub {
        my $self = shift;
        
        if ($self->req->headers->header('X-Forwarded-Host')) {
            ### Proxy Path setting ###
            my $path = '/app1';
            
            $self->req->url->base->path->parse($path);
        }
    });

参考