ブログ

ryuzeeによるブログ記事。不定期更新

LB(SSL)→サーバ(非SSL)環境でCakePHP2のリダイレクトを正しく行う方法

今日は超短いTipsです。 CakePHP2で作ったアプリケーションを以下のような構成に配置した場合の話です。

そのままでは、CakePHPのredirect関数が呼ばれた場合に、直接Webサーバ側に転送しようとしてしまい大変なことになってしまいます。

これを防ぐためには、以下のような定義を app/Config/bootstrap.php に追加すればOKです。 末尾にはスラッシュは不要です。 過去CakePHP1系だとコアライブラリをいじるとかapacheの設定をごにょごにょするとかいう記述をネット上で見かけますがそういうのは不要です。

define('FULL_BASE_URL','https://[ロードバランサーに振っている名前またはIP]');

たとえば、今回これを確認した環境は、AWSのElastic Load Balancer環境なのですが、その場合は以下のようになります。

define('FULL_BASE_URL','https://test-10755xxxx.ap-northeast-1.elb.amazonaws.com');

なお、開発を行なっている時はロードバランサーを使わないで開発する場合がほとんどだと思いますので、上記の記述を環境変数等を見て有効にするかしないか判断するといった作り込みをするか、もしくは環境に依存する上記のような定数をさらに別ファイルに切り出して、デプロイスクリプトで何をデプロイするか切り替えるといったような対応が望ましいでしょう。十分お分かりだとは思いますが、デプロイの際に手で書き換える、といった素人のような真似はしてはいけません

アジャイルコーチングやトレーニングを提供しています

株式会社アトラクタでは、アジャイル開発に取り組むチーム向けのコーチングや、認定スクラムマスター研修などの各種トレーニングを提供しています。ぜひお気軽にご相談ください。

詳細はこちら