6

Heroku にアプリをデプロイし、受信したリクエストが安全かどうかを判断しようとしています (request.secure)。nginx が SSL 作業を処理し、平文の http を介してアプリケーション サーバーと通信するため、heroku では最初は false が返されます。したがって、それが安全なリクエストであることを知らせるヘッダーを play に読み取らせるには、次のように追加します。

XForwardedSupport=127.0.0.1

プレイ掲示板で推奨されているように application.conf に。ただし、すべてのリクエスト (画像を除く) はエラーなしで失敗します。プレイログに出る前に何か根本的なことが起きているようです。誰もこれを経験しましたか?

4

3 に答える 3

6

XForwardedSupportPlay は、構成パラメーターを介して 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 スタックは Nginx を使用していません。Erlang ベースの Web サーバーであるMochiWebを使用します。

于 2011-12-17T14:36:46.347 に答える
3

thnxビッグタイム!heroku+play で苦労していた時間を節約できました! これをapplication.confに設定すると確認できます

XForwardedSupport=all

heroku は SIGTERM で不平を言うのをやめます

于 2012-09-06T00:37:28.893 に答える
2

https://play.lighthouseapp.com/projects/57987/tickets/1406-play-123-124-playmvcrouter-does-not-fully-support-proxied-ssl#ticket-1406-の @Dan Carley チケットで指摘されているように4

Heroku でホストする場合、(Mirko が指摘するように) XForwardedSupport=allapplication.conf の設定が機能します。

于 2012-06-19T17:44:55.017 に答える