LoginSignup
3

More than 5 years have passed since last update.

Laravel 5.6 で HTTPS が効かないときの対処法、の盲点

Last updated at Posted at 2018-09-23

TrustProxies の問題だと思っていた

環境は、次のとおり。

  • Laravel 5.6
  • Apache 2
  • AWS ELB (ロードバランサー)

ロードバランサーを使っていると、HTTPS であっても Laravel には 80 ポート HTTP でアクセスするため、URL を http:// に置き換えてしまいます。
これに対する対処法は公式ドキュメントがあり、Web 上に資料がたくさんあります。
しかし、どうにも HTTPS が効かなかった。
その理由は……

ただの URL ミスでした

恥ずかしながらも、URL の末尾に / を付けるか否かで挙動が変わるようですね。
<a href="/login/"><button>ログイン</button></a>
<a href="/login"><button>ログイン</button></a>
にしたらあっさり解決しました。
これは盲点。

TrustProxies の仕様変更

現在 TrustProxies を検索すると、5.5 の情報がよく出てきます。
しかし、5.5 と 5.6 は微妙に仕様が変わっています。

5.5 のドキュメント
5.6 のドキュメント

最後の「信用するプロキシの設定」を見てください。
よーく見ると、

5.5 はprotected $proxies = '**';
だけど 5.6 はprotected $proxies = '*';

になってます。
あと、5.6 には AWS ELB を考慮した Request::HEADER_X_FORWARDED_AWS_ELB が追加されてるようですね。
これも盲点。

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
3