支持https播放!支持Heroku失败



我正在Heroku上部署一个应用程序,并试图确定进入的请求是否安全(request.secure)。这在heroku上最初返回false,因为nginx处理SSL工作并通过纯http与应用服务器通信。所以要让play读取报头让它知道这是一个安全请求我添加:

XForwardedSupport = 127.0.0.1

到play留言板中推荐的application.conf。但是,所有请求(除了图像)都失败,没有错误。这似乎是在游戏进入游戏记录之前发生的一些基本事情。有人经历过吗?

我不认为Play支持通过XForwardedSupport配置参数在Heroku上转发(代理)请求的方式。这将需要设置为Heroku负载平衡器的地址,并且没有办法在运行前配置该地址。相反,您应该只查看x-forwarded-proto请求头,以确定对Heorku负载平衡器的请求是通过http还是https。比如:

    Boolean secure = false;
    if (request.headers.get("x-forwarded-proto") != null) {
      secure = request.headers.get("x-forwarded-proto").values.contains("https");
    }
    System.out.println("secure = " + secure);

顺便说一句:Heroku的cedar stack不使用Nginx。它使用MochiWeb,一个基于erlang的web服务器。

非常感谢!你节省了几个小时的挣扎与英雄+玩!我可以确认,当你在application.conf

中设置它时
XForwardedSupport=all

heroku停止抱怨SIGTERM

正如@Dan Carley ticket在https://play.lighthouseapp.com/projects/57987/tickets/1406-play-123-124-playmvcrouter-does-not-fully-support-proxied-ssl#ticket-1406-4上指出的那样

当托管在Heroku上时,(正如Mirko所指出的)在application.conf中设置XForwardedSupport=all

相关内容

  • 没有找到相关文章

最新更新