"主持人不允许"使用Boxfuse将播放框架应用程序部署到Amazon AWS时出错

时间:2017-07-13 01:47:22

标签: scala amazon-web-services playframework boxfuse

我正在尝试将使用Scala中的Play Framework编写的简单Web应用程序部署到Amazon Web服务。

Web应用程序在本地计算机的开发模式和生产模式下运行正常,并且我已将其默认端口更改为80.

我按照建议使用Boxfuse部署到AWS。

我先跑#34; sbt dist " 然后" boxfuse运行-env = prod "

事情进展顺利。图像融合并推送到AWS。 AMI已创建。实例已启动,我的应用程序正在运行。

  

i-0f696ff22df4a2b71 => 2017-07-13 01:28:23.940 [info] play.api.Play - 申请开始(Prod)

然后出现错误消息:

  

警告:健康检查(http://35.156.38.90/)返回400而不是200.重试接下来的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分钟后反复尝试终止实例。它发出了一个警告:

  

确保您的应用程序使用HTTP 200 at / on 80

进行响应

但是我确保应用程序在本地计算机上响应,我尝试了Windows和Ubuntu,一切运行良好。

此外,运行" boxfuse运行"在本地计算机上,我可以使用" http://localhost"连接到它,但仍然有错误。

希望有经验的人可以给我一些建议。提前致谢。

ps:不确定是否相关,我将这些设置添加到application.conf

http {
        address = 0.0.0.0
        port = 80
    }

2 个答案:

答案 0 :(得分:23)

根据错误消息判断,问题可能与application.conf未在play.filters.hosts { allowed = ["."] } 中设置有关。过滤器允许您配置哪些主机可以访问您的应用程序。有关“播放”过滤器的详细信息,请参阅play.filters.hosts.allowed

这是一个配置示例:

allowed = ["."]

请注意i匹配所有主机,因此不建议在生产环境中使用。

答案 1 :(得分:20)

Boxfuse Play Documentation中所述:

  

如果您的应用程序使用允许的主机过滤器,则必须确保application.conf中的play.filters.hosts.allowed允许来自任何地方的连接,否则会导致ELB运行状况检查失败。例如:

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

official Play documentation中的更多信息。