デプロイしたらrailsでHTTP 404が発生する!
原因究明
コンピュータのシステムはどれもそうですが、デプロイでHTTP 404エラーが発生した場合、どこまで正常に動作が進んでいてどこからエラーが発生しているのかの原因を突き止めましょう。
HTTP 404エラーが発生しているということはWebサーバーは起動しており適切にHTTPのレスポンスを返しています。
なのでAWSのEC2セキュリティグループやVPCの設定などは正しく行われていると思われます。
この場合エラーを返しているのがWebサーバー(nginxやapache)なのかWebアプリケーション(rails)なのかをそれぞれのログを確認して動作している場所を確認します。
例えばnginxのログは出力されるがrailsのログが出力されない場合、nginxがエラーを返している可能性が高そうです。
nginxがHTTP 404エラーを返す原因としては
・ファイルが存在しない。
・CertBotでHTTPSの設定をしているのにHTTPで通信しようとしている。
などが考えられます。
逆にrailsまで来ている場合
- routes.rbなどの設定
- そもそもパスが存在しないところに接続している
の可能性が考えられます。
解決策
nginxがエラーを返している場合
- ファイルが存在しないのであれば、接続先のファイルパスを確認しましょう。
- CertBotを設定していてHTTPで通信したい場合はCertBotが作成したSSLの設定箇所をコメントアウトしましょう。
railsがエラーを返している場合
- routes.rbを確認して正しいroutes.rbに修正しましょう。
- 正しいパスに接続しましょう。
AMIなどで既存のEC2をコピーした場合、HTTPSやドメインの設定、固定IPの完全移行をしているのであれば問題ありませんが、複製しようとしている場合は既存の設定が残ってしまいますのでSSLの設定やファイルパスなどが正常に設定されているか確認しましょう。
コメント