🔧
【EB + Laravel + nginx】404でハマった件と解決策
Elastic beanstalkでLaravelアプリをデプロイ。
しかし、ルート以外は「404」が表示されるという事象になった。
原因
EBでは2020年4月30日から、apacheではなくnginxで自動構成される。
そのため、Laravelが動作するようにnginxに設定を追加する必要がある。
I encountered the same issue, since April 30th 2020 EB is auto configured to nginx instead of apache so the htaccess file no longer works.
解決方法
まずはlaravelプロジェクトの中に以下のようにディレクトリを作成する。
YouAreProject/.platform/nginx/conf.d/elasticbeanstalk
作成した「elasticbeanstalk」ディレクトリの中に「laravel.conf」と名前をつけてファイルを作成する。
こうすることで、EBデプロイされるたびに、nginxへ設定が反映される。
あとは作成した「laravel.conf」に以下の内容を追加して、デプロイすれば解決します。
{
try_files $uri $uri/ /index.php?$query_string;
gzip_static on;
}
ちなみに、Classic Load Balancerを利用していて、httpsも設定済みであれば、以下のようにすれば自動でリダイレクトしてくれる。
location / {
try_files $uri $uri/ /index.php?$query_string;
gzip_static on;
}
if ($http_x_forwarded_proto = 'http'){
return 301 https://$host$request_uri;
}
Discussion