0

Flash フロントエンドを備えた確立された Apache/PHP サイトがあります。更新をフラッシュ アプリにプッシュするために、ある種のソケット通信、つまり「ロング ポーリング」を実装する必要が生じ始めます。これは明らかに Apache や PHP にとって良い状況ではないので、機能のこの側面に Tornado を使用したいと思いますが、別のポートで Tornado を実行したくありません。ソケット接続をブロックする制限的なファイアウォールに対処する必要はありません。

理想的には、ほとんどのリクエストを Apache に転送し、その他のリクエストを Tornado に転送できるプロキシを実行したいと考えています。Apache をファースト コンタクト プロキシとして使用し、必要に応じてリクエストを Tornado に転送することについていくつかの提案を見ましたが、Tornado の非同期機能の多くを割引することも見てきました。

ポート 80 の最初の連絡先として Tornado を使用し、Apache にプロキシ バックするようにしないのはなぜでしょうか? これについては何も見つかりませんでしたが、これが可能かどうか疑問に思っていますか?

もう 1 つのオプションは、lighttpd のようなものをプロキシとして使用し、物事を Apache に渡すか Tornado に渡すかを決定させることですが、この種のセットアップは理にかなっていますか? またはNginxはどうですか?

私の物事の理解に関する提案、アドバイス、または修正は大歓迎です!

4

1 に答える 1

0

これはリバース プロキシと呼ばれ、これを実行するように nginx を構成するのは非常に簡単です。(lighttpd もこの作業をうまく実行できるはずですが、使用した経験はありません)。

竜巻のドキュメントには、nginx 構成の例があります

リバース プロキシを使用する際に注意すべきことの 1 つは、アップストリーム サーバーへの接続がクライアントではなくプロキシから開始されることです。事実上の標準は、元のリクエストに関する情報を特定の http ヘッダーに入れることです。tornado ドキュメントの例では、X-Real-IPヘッダーは元のクライアントの IP に設定され、X-Schemeは元のリクエストのスキーム (http/https など) に設定されます。

これには、アップストリーム サーバーにいくつかの変更が必要になる場合があります。tornadoでは、xheaders 引数を True に設定してHTTPServerを構築することでこれが行われます。これにより、サーバーは X ヘッダーから IP アドレスとスキームを取得しようとします。適切なヘッダーを設定するリバース プロキシの背後にないサーバーでこれを使用すると、IP アドレス スプーフィングに対してオープンになることに注意してください。

于 2012-06-04T14:33:56.387 に答える