2011-06-27 21 views
1

ユーザと別のページ(mbean)の間のリバースプロキシのように動作するcgiページを作成する必要があります。問題は、各mbeanが異なるポートを使用し、どのポートのユーザーがヒットしたいかわからないことです。
A)彼がヒットしたいアプリケーションを選択するためのページをユーザーに提供してください。 B)上記の情報にリバースプロキシベースを生成します(ポート、サーバーなどを提供します)。 ..) C)リバースプロキシ経由でリモートmbeanページに接続するため、元のページを決して「残す」ことはありません。
Cの理由は、ユーザーが内部のアプリケーションに直接アクセスすることができないため、最初のポート80にしかアクセスできないということです。pythonリバースプロキシcgi経由での生成

私はねじれを見て、それは仕事をすることができるように見えます。私が知らないのは、接続を確立してリバースプロキシフレームワーク内でさらに接続を維持できるように、cgi内からツイストプロセスを生成する方法です。

私はひねりを起こしていません。仕事を良くする別のツールがあれば、私はすべて耳です。私はmod_proxy(例えば)のようなことはできません。なぜなら、広範囲のポートは(約1000種類の異なるプロキシ設定で)構成をかなり愚かにするからです。

+0

CGIを長期間使用するのではなく、フロントエンドが使用する理由がありますか?あなたはひねったり、WSGIアプリケーションをhttpサーバの後ろに直接置いたり、ディスパッチとプロキシの両方を処理することができます。 –

+0

残念ながら、問題は、リバースプロキシがどのポートをリスンするかわからないことです。さもなければ私は簡単にバックグラウンドプロセスを持つことができます。したがって、ユーザーがボタンをクリックすると、何かを生成する必要があります。それは理にかなっていますか? – Chrobry

答えて

2

他のプロセスを起動する必要はありません。複雑な作業は複雑です。私の現在のプロジェクトに似た何かに基づいてそれを行う方法は次のとおりです。

  • Webサーバーの背後にあるWSGIアプリケーションを作成します。
  • ユーザーがセッションID Cookieを持っていない限り、任意のURLマッピングからアクセス可能なリクエストハンドラ(または "view")を作成します。
  • リクエストハンドラでは、ユーザはターゲットアプリケーションとそのホスト名、ポート番号などを選択できます。このリクエストハンドラは、たとえばhttplibを使用してターゲットアプリケーションへの接続を作成し、セッションIDを割り当てます。セッションIDのCookieを設定し、ユーザーを同じページにリダイレクトします。
  • ユーザーがアプリケーションにヒットしたときに、既に開いているhttp接続を使用してクエリをリダイレクトできます。 WSGIは、性能向上のために、httplibによって提供されるものを含めて、オープンなファイルライクなオブジェクトをレスポンスとして返すことをサポートしています。
+0

WSGIは決して行ったことはありませんが、実行可能なように聞こえます!それがどのように動作するか試してみる。 – Chrobry

+0

ようこそ。 Werkzeug(WSGIツールキット)またはFlask(Werkzeugの上に構築された小さなWebフレームワーク)を見てください。 –

関連する問題