使用Boxfuse将Play框架应用程序部署到Amazon AWS时出现"host not allowed"错误

Hai*_*jin 12 scala amazon-web-services playframework cloudcaptain

我正在尝试将使用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)

然后出现错误消息:

警告:Healthcheck(http://35.156.38.90/)返回400而不是200.重试接下来的300秒......

i-0f696ff22df4a2b71 => 2017-07-13 01:28:24.977 [info] pcsAkkaHttpServer - 在/0.0.0.0:80上收听HTTP

i-0f696ff22df4a2b71 => 2017-07-13 01:28:25.512 [warn] pfhAllowedHostsFilter - 不允许主持人:35.156.38.90

3分钟后反复尝试终止实例.它给出了一个警告:

确保您的应用程序使用HTTP 200 at/on 80端口进行响应

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

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

希望有经验的人能给我一些建议.提前致谢.

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

http {
        address = 0.0.0.0
        port = 80
    }
Run Code Online (Sandbox Code Playgroud)

Leo*_*o C 26

从错误消息判断,看起来问题可能与play.filters.hosts.allowed没有设置有关application.conf.过滤器允许您配置哪些主机可以访问您的应用程序.有关Play过滤器的更多详细信息,请参见此处.

这是一个配置示例:

play.filters.hosts {
  allowed = ["."]
}
Run Code Online (Sandbox Code Playgroud)

请注意,allowed = ["."]在生产环境中不建议匹配所有主机.


Axe*_*ine 21

Boxfuse Play文档中所述:

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

play.filters.hosts {
  allowed = ["."]
}
Run Code Online (Sandbox Code Playgroud)

官方Play文档中的更多信息.