LoginSignup
17
19

More than 5 years have passed since last update.

Laravel プロジェクトを AWS の ELB 443(HTTPS) -> EC2 80(HTTP) とした時、強制的に HTTPS にする方法

Last updated at Posted at 2016-03-25

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.phpboot メソッドに、以下の内容に追加する。

public function boot()
{
        if ($this->app->environment() == 'production') {
            URL::forceSchema('https');
        }
}

production 部分は必要に応じて書き換える。

一部のリクエストだけ HTTPS にしたい場合などは、リンクやリダイレクトの処理時に明示的に示してコードを書くのが望ましいんやなかろうか。

また、それらを開発環境、検証環境でも妥当に動作するように環境構築しておくのが望ましそう。

また、 ELB から 80 で受けない場合は、それほど気にしなくて良いが、もし、 ELB 80 -> EC2 80 も併用している場合、上記の設定だけでは URL 直打ちで HTTP で動作してしまうので要注意。

17
19
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
19