ピックアップ

DockerコンテナでのLaravelのルーティングが404でログも出なかった件(Nginxの設定重複ミス)

Laravelを使用していて、

Dockerコンテナの環境で、

ネットワークを構築して、

UI側との接続を試していたら、

Nginxに

GET /api-endpoint HTTP/1.0" 404 "http://ui-domain.sample/

のエラーが発生したが、

この件、なぜか調べたときの内容。

Laravelのバージョン

Laravelのバージョンとしては、

php artisan --version

というコマンドで確認すると、

$ php artisan --version
Laravel Framework 9.52.4

というバージョンであることがわかります。

この件と違うが関連メモ

この件とは違うが、

404出て、

Laravelのログが出力できないことがあり、

単純ミスだった時のメモ。

事象

コンテナを立ち上げて、

別コンテナで動かしているアプリケーションから、

LaravelのAPIをアクセスして動かそうとしたけれど、

GET /api-endpoint HTTP/1.0" 404 "http://ui-domain.sample/

のエラーが発生

php artisan route:list

で確認しても、

対象のルーティングは存在するので、

ルーティング設定自体は問題ない。

調査途中メモ

調査途中で、

Laravelフォルダの権限かと考え、

chown -R www-data:www-data /target-project-folder

を実施したが、

特に改善なし。

そもそも、

元々動いていたコンテナではあったので、

特に設定ファイルを変えた記憶はない。

また、

ホスト側から、

curl http://localhost:8888/end-point

のように、

直接、呼び出して確認したら動く。

これを考えると、

コンテナ内でNginx動かしているが、

そこのプロキシで、

うまくLaravelに辿り着いていない可能性がある。

対応(Nginxの設定重複)

原因としては、

やはり、

基礎的なNginx設定周りのミスが原因だった。

コンテナ初期構築時の設定ファイルが読み込まれていた

ということになりますね。

まず、

Nginxが読み込んでいる全ての設定内容は、

表示コマンド

nginx -T

こちらで確認できるので、

確認してみると、

自分が使用したいと思っている設定情報と違いました。

中身だけでなく、

対象ファイルは、

確認コマンド

nginx -T 2>&1 | grep '^# configuration file'

こちらで確認できます。

# configuration file /etc/nginx/conf.d/sample.conf:
# configuration file /etc/nginx/sites-enabled/default:

自分の環境では、

上記の1つ目の方を使いたかったですが、

2つ目の初期設定情報も残っていたため、

そちらが使われていたようでした。

私の場合は、

/etc/nginx/sites-enabled/default

を削除して、

必要な方を残す対応をしました。

こちらで、

nginx -s reload

することで解決しました。

ピックアップ

おすすめ書籍

コメント一覧

コメントはまだありません。

コメント送信

コメントを残す

広告

おすすめ記事