我正在Heroku上部署应用程序并尝试确定进入的请求是否安全(request.secure)。这最初在heroku上返回false,因为nginx处理SSL工作并通过普通http与app服务器通信。因此,为了让播放读取让我们知道这是一个安全的请求的标题我添加:
XForwardedSupport = 127.0.0.1
播放留言板中建议的application.conf。但是,所有请求(图像除外)都会失败,没有错误。在点击播放日志之前,这似乎是一些根本性的事情。有没有人经历过这个?
答案 0 :(得分:6)
我认为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);
BTW:Heroku的雪松堆栈不使用Nginx。它使用MochiWeb,一个基于Erlang的Web服务器。
答案 1 :(得分:3)
XForwardedSupport=all
heroku停止向SIGTERM投诉
答案 2 :(得分:2)
在Heroku上托管时(如Mirko所指)在application.conf中设置XForwardedSupport=all
。