エンジニア日記

日々の開発あれこれ

ELB(443) → EC2(80)のルートを通るときにLaravel5のroute()がhttpとなる問題

AWS環境にて。
EC2にLaravel5で作成したプロジェクトがあり、テンプレートのリンク先をLaravelの関数であるroute()にて実装。
EC2をELBにぶら下げ、ユーザーからのアクセスを ELB(443) → EC2(80) で処理するとき、route()から出力されるプロトコルはhttpとなってしまう。
これは、Laravelとしては80番でリクエストが来ているため上記の動作となってしまう。

対応方法

1
2
3
4
5
6
7
8
9
app/Providers/AppServiceProvider.php  
public function boot()
{
    // 環境がローカル環境でないとき
    if (!app()->environment('local')) {
        // すべてのリクエストをhttpsとする
        \URL::forceSchema('https');
    }
}

※ if文の条件は要調整