1

現時点では、次のように Apache をフロントエンド HTTP サーバーとしてポート 9000 で Play アプリを実行しています。

<VirtualHost *:80>
    ServerName vms.gltd.net

    ProxyPass /http-bind http://vms.gltd.net:5280/http-bind/
    ProxyPassReverse /http-bind http://vms.gltd.net:5280/http-bind/

    ProxyPass / http://vms.gltd.net:9000/
    ProxyPassReverse / http://vms.gltd.net:9000/
</VirtualHost>

ただし、ユーザーがサインアップすると、Play Authenticate は play.mvc.Http.Request からのポートを使用します。これは 80 ではなく 9000 です。

Play Authenticate が使用するポートをオーバーライドする方法はありますか、それとも Play アプリを独自のサーバーに移動してポート 80 で実行する必要がありますか?

ありがとう、

-レオン

4

1 に答える 1

0

Playのドキュメントからこれを試してください:

高度なプロキシ設定

HTTP フロント サーバーを使用する場合、要求アドレスは HTTP サーバーから送信されたものと見なされます。Play アプリとプロキシの両方が同じマシンで実行されている通常の設定では、Play アプリは 127.0.0.1 からのリクエストを認識します。

プロキシ サーバーは、特定のヘッダーをリクエストに追加して、プロキシされたアプリケーションにリクエストの送信元を伝えることができます。ほとんどの Web サーバーは、リモート クライアントの IP アドレスを最初の引数として X-Forwarded-For ヘッダーを追加します。プロキシ サーバーが localhost で実行されていて、127.0.0.1 から接続している場合、Play はそのX-Forwarded-Forヘッダーを信頼します。別のマシンでリバース プロキシを実行している場合は、次のtrustxforwardedように、アプリケーション構成ファイルで構成項目を true に設定できます。

trustxforwarded=true 

ただし、ホスト ヘッダーは変更されず、プロキシによって発行されたままになります。Apache 2.x を使用している場合は、次のようなディレクティブを追加できます。

ProxyPreserveHost on 

host:ヘッダーは、クライアントによって発行された元のホスト要求ヘッダーになります。これら 2 つの手法を組み合わせることで、アプリが直接公開されているように見えます。

この再生アプリがルート全体を占有したくない場合は、除外ディレクティブをプロキシ構成に追加します。

ProxyPass /excluded !
于 2014-01-09T09:05:30.167 に答える