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); } });
参考
- Apache deployment - GitHub
- Apacheで色々な方法でデプロイするときの設定方法が書いてあるページです