Help us understand the problem. What is going on with this article?

Laravel プロジェクトで AWS の ELB(ALB) 443(HTTPS) -> EC2 80(HTTP) とした時、 route() などを期待した動作(https)にする

More than 1 year has passed since last update.

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

実は、以前の方法である URL::forceSchema('https'); を使うのはあまりよろしくありません。

どうするのが良さそうか

https://github.com/fideloper/TrustedProxy を使う。

laravel 5.5 からはデフォルトで入ってるはず。

5.4 以前を使っている場合は https://github.com/fideloper/TrustedProxy#tldr-setup に従ったインストールしましょう。

$ php artisan vendor:publish --provider="Fideloper\Proxy\TrustedProxyServiceProvider"

これで、 ./config/trustedproxy.php が配置されます。

例えば以下のように、信頼されるアクセス元の情報を配列で指定しましょう。

/config/trustedproxy.php
    'proxies' => [
        // '172.31.0.0/16',
        '10.0.0.0/24',
        '10.0.1.0/24',
    ],
     // 全部信頼できるなら以下のように指定しても OK らしい
     # 'proxies' => '*',

これだけ。

そもそも何が起きているか

※前回も書いたけど。

ELB で https(443) を待ち受けて、内部の EC2 に http(80) で転送していると、 Laravel プロジェクト的には http で動作していることになる。

このため、 route() や redirect() などが、 http:// となってしまう。

期待する動作は、何も意識せずに route() などの結果が https:// になって欲しい。

URL::forceSchema('https'); は何が問題なのか

全部の URL が https:// になる。

全て https で処理するなら問題ないが、何らかの理由があって、 http でも処理したい場合に対処できない。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした