0

Apache でホストされている既存のアプリケーションがあります。前処理のために、いくつかのURL(Post Forms)を別のサーバー(Apacheではなく、単なるプログラム)に送信したいと考えています。整理するとこんな感じ

1)Apache confに追加のリッスンポートを追加しました(たとえば、1234)

2) ポート 80 にリバース プロキシを追加して、独自のポートでリッスンしている 2 番目のサーバーにいくつかの URL を送信します。

3) 実際の html は apache でホストされているため、2 番目のサーバーはポート 1234 で Apache から必要なページを要求します。次に、html (投稿フォーム) を変更して提供します。投稿されたデータを再度取得して変更し、Apache に送り返します。

次の手順で上記を達成できます。1) 既存の htdocs ディレクトリ構造に、dir1 と dir2 という 2 つの新しいサブディレクトリを作成します。

2) 前処理が必要なすべてのフォームをディレクトリ dir1 に移動します。投稿データを処理するすべてのスクリプトは、dir2 に移動します。他のhtmlを変更してパスを更新します。

3)次のプロキシ設定を追加します

ProxyPass /dir1 http://localhost:1234/dir1

ProxyPassReverse /dir1 http://localhost:1234/dir1

dir2 についても同様です。

これはうまく機能していますが、これを行うためのより良い方法があるかどうか疑問に思っていました。私が探している主な改善点は、htdocs でホストされている元のアプリを邪魔しないようにリバース プロキシ構成を行うことです (dir1、dir2 に移動して参照を更新するなど)。これを行う方法はありますか?

4

1 に答える 1

0

あなたが説明するセットアップの背後にある全体的なアイデアは、ややエキゾチックです。

「インターセプト」したいフォームの URL を単純に書き換えて、php などのスクリプト言語で要求または応答を処理できないのはなぜだろうか。この方法では、2 番目のサーバーは必要なく、元のアプリケーション レイアウト内で何も変更する必要がなく、外部プログラムを使用する代わりに、Apache 内で本格的なスクリプト環境を使用できます。

だから、このようなもの:

get form-1.html 
=> deliver form-1.html 
=> submit form-1.html 
=> process form-1.html

get form-2.html 
!=> rewrite to intercept.php?form=form-2.html
=> intercept form-2.html for preparation
=> deliver intercepted form-2.html
=> submit form-2.html
!=> rewrite to intercept.php?form=form-2.html
=> intercept form-2.html for processing
=> process form-2.html

(フォーム 1 はインターセプトされません。フォーム 2 はインターセプトされます)

于 2012-09-28T05:15:14.160 に答える