2011-12-14 74 views
6

我在Heroku上部署應用程序並試圖確定請求是否安全(request.secure)。這最初在heroku上返回false,因爲nginx處理SSL工作並通過普通http與應用程序服務器進行通信。所以,讓玩家閱讀,讓是知道這是一個安全的請求,我添加標題:XForwardedSupport for https play!支持Heroku失敗

XForwardedSupport = 127.0.0.1

要application.conf在劇中留言板推薦。但是,那麼所有請求(圖像除外)都會失敗並且沒有錯誤。它在擊中播放日誌之前似乎是發生了根本性的事情。有沒有人經歷過這個?

+0

抱怨,我認爲這個問題是因爲這樣的Heroku管理路由。創建一個支持票,他們真的很快回答,我真的很高興他們解決問題的能力。 – 2011-12-15 10:57:27

+0

會做什麼,我會在任何解決方案後回到這裏。 – 2011-12-15 12:32:02

回答

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。它使用基於Erlang的Web服務器MochiWeb

3

thnx大的時間!你節省了與heroku +玩的掙扎時間! 我可以確認的是,當你設置這application.conf

XForwardedSupport=all 

Heroku的停止與SIGTERM