2017-09-15 追記
https://github.com/fideloper/TrustedProxy を使うのが良さそう。
参考: https://laravel-news.com/trusted-proxy
2017-09-15 追記ここまで
2017-09-20 追記
TrustedProxy を使う方法書いた → https://qiita.com/hokutoasari/items/b25ddb48853638aded43
2017-09-20 追記ここまで
のメモ。
Laravel で作成したアプリケーションを ELB 443 で受けて、 EC2 の 80 に転送していた場合、 route() 関連や redirect() 関連などなどが HTTP となってしまう。
ユーザーは ELB 越しに 443 の HTTPS でアクセスしているが、 Laravel 自身は 80 の HTTP で動作しているから生じる現象。
すべてのリクエストを HTTPS として処理してしまって良い場合は以下の方法で対処可能。
./app/Providers/AppServiceProvider.php
の boot
メソッドに、以下の内容に追加する。
public function boot()
{
if ($this->app->environment() == 'production') {
URL::forceSchema('https');
}
}
※production
部分は必要に応じて書き換える。
一部のリクエストだけ HTTPS にしたい場合などは、リンクやリダイレクトの処理時に明示的に示してコードを書くのが望ましいんやなかろうか。
また、それらを開発環境、検証環境でも妥当に動作するように環境構築しておくのが望ましそう。
また、 ELB から 80 で受けない場合は、それほど気にしなくて良いが、もし、 ELB 80 -> EC2 80 も併用している場合、上記の設定だけでは URL 直打ちで HTTP で動作してしまうので要注意。