web-dev-qa-db-ja.com

BoxfuseでAmazon AWSにPlayフレームワークアプリケーションをデプロイする際の「Host not allowed」エラー

Scala=)でPlay Frameworkを使用して記述されたシンプルなWebアプリケーションをAmazon Webサービスにデプロイしようとしています。

Webアプリケーションは、ローカルマシンで開発モードと運用モードで正常に実行されており、デフォルトポートを80に変更しました。

提案どおりにBoxfuseを使用してAWSにデプロイしました。

最初に「sbt dist」を実行し、次に「boxfuse run -env = prod

物事は望み通りに行きました。イメージが融合され、AWSにプッシュされます。 AMIが作成されます。インスタンスが開始され、アプリケーションが実行されていました。

i-0f696ff22df4a2b71 => 2017-07-13 01:28:23.940 [info] play.api.Play-アプリケーションが開始されました(Prod)

それからエラーメッセージが来ました:

警告:ヘルスチェック( http://35.156.38.90/ )は200ではなく400を返しました。次の300秒間再試行しています...

i-0f696ff22df4a2b71 => 2017-07-13 01:28:24.977 [info] p.c.s.AkkaHttpServer-/0.0.0.0:80でのHTTPのリッスン

i-0f696ff22df4a2b71 => 2017-07-13 01:28:25.512 [warn] p.f.h.AllowedHostsFilter-許可されていないホスト:35.156.38.90

3分後に繰り返し試行した後、インスタンスは終了しました。次のような警告が表示されました。

アプリケーションがポート80で/ 200でHTTP 200で応答することを確認する

しかし、アプリケーションがローカルマシンで応答することを確認し、WindowsとUbuntuの両方を試してみましたが、すべて正常に動作します。

また、ローカルマシンで「boxfuse run」を実行すると、「 http:// localhost 」を使用して接続できますが、それでもエラーが発生します。

経験のある人が私にいくつかの提案をしてくれることを願っています。前もって感謝します。

ps:関連するかどうかわからないので、これらの設定をapplication.confに追加しました

http {
        address = 0.0.0.0
        port = 80
    }
12
Haijin

エラーメッセージから判断すると、問題は play.filters.hosts.allowedapplication.confで設定されていないことに関連しているようです。このフィルターを使用すると、アプリケーションにアクセスできるホストを構成できます。 Playフィルターの詳細については、こちらをご覧ください こちら

設定例を次に示します。

play.filters.hosts {
  allowed = ["."]
}

allowed = ["."]はすべてのホストに一致するため、実稼働環境では推奨されないことに注意してください。

25
Leo C

Boxfuse Playドキュメント に記載されているとおり:

アプリケーションが許可されたホストフィルターを使用する場合、application.confのplay.filters.hosts.allowedがどこからでも接続できるようにする必要があります。そうしないと、このフィルターによりELBヘルスチェックが失敗します。例えば:

play.filters.hosts {
  allowed = ["."]
}

詳細は Playの公式ドキュメント をご覧ください。

20
Axel Fontaine