我正在尝试将使用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
}
答案 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中的更多信息。