LoginSignup
2
1

More than 5 years have passed since last update.

Laravelで無理矢理HTTPS化

Posted at

AWSのCloudFront -> ELB -> EC2 -> nginx -> php-fpm
というよくある構成で、
LaravelがリクエストをHTTPと認識して困ってました。
EC2に到達しているときにはHTTPだからです。

actionやurlヘルパなどについては、なんとかなりました。
View::shareでHTTPS判定フラグをセットして
上記ヘルパの引数にセットすれば、
https://...というURLを生成してくれるからです。
(でも、これは相当面倒)

{{!! action('xxx', [], $secure) !!}

ただ、FormRequestで自動的にredirect backされるケースでは、
HTTPにリダイレクトされてしまってどうにもなりませんでした。

そこで、リクエストURLからホスト名を

$host = parse_url(request()->url(), PHP_URL_HOST)

のように取得し、ホストがCloudFrontやELBの場合のみ

$server = request()->server;
$server->set('HTTPS', 'on');
$server->set('SERVER_PORT', '443');

という処理をApp\Providers\AppServiceProvider::bootに記述しました。

これで、常時HTTPS化が実現できました。
やれやれ。

2
1
2

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
2
1