12

私のチームは、顧客のサイトから当社の Web アプリケーションの 1 つに Apache リバース プロキシをセットアップしようとしています。

http://www.example.com/app1/some-pathはhttp://internal1.example.com/some-pathにマップされます

アプリケーション内では、struts を使用し、特定の機能を提供するために特定のアクションに redirect = true を設定しています。これらのリダイレクトからの 302 ステータス メッセージにより、ユーザーはプロキシから抜け出し、エンド ユーザーにエラー ページが表示されます。

HTTP/1.1 302 見つかった場所: http://internal.example.com/some-path/redirect

リダイレクトが正しく機能するように、Apache でリバース プロキシをセットアップする方法はありますか?

http://www.example.com/app1/some-path/redirect

4

4 に答える 4

14

あなたの問題に対処していると思われるApacheでリバースプロキシを実行するというタイトルの記事があります。例にあるのと同じ example.com と /app1 も使用します。ProxyPassReverseの使用方法の例については、「プロキシの構成」セクションに移動してください。

于 2008-10-10T00:42:19.127 に答える
4

AskApacheの記事は非常に役に立ちますが、実際には、Rewrite ルールと ProxyPassReverse を組み合わせた方がより柔軟であることがわかりました。したがって、あなたの場合、私は次のようにします:

    <VirtualHost example>
       ServerName www.example.com

       ProxyPassReverse /app1/some-path/ http://internal1.example.com/some-path/
       RewriteEngine On
       RewriteRule /app1/(.*)   http://internal1.example.com/some-path$1 [P]

       ...
    </VirtualHost>

内部サーバーにプロキシするパスをより細かく制御できるため、私はこれの方が気に入っています。私たちの場合、サードパーティ アプリケーションの一部のみを公開したいと考えていました。これは、AskApache の記事で扱っている HTML のハードコーディングされたリンクには対応していないことに注意してください。

また、複数の ProxyPassReverse 行を使用できることに注意してください。

    ProxyPassReverse / http://internal1.example.com/some-path
    ProxyPassReverse / http://internal2.example.com/some-path

これについて言及したのは、私たちがプロキシしていた別のサードパーティ アプリが、内部ホスト名を含まず、別のポートだけのリダイレクトを送信していたためです。

最後に、リダイレクトをデバッグするときにFirebugが非常に役立つことを覚えておいてください。

于 2009-10-23T16:50:42.713 に答える
1

リバース プロキシの代わりに AJP コネクタを使用してみてください。確かに些細な変更ではありませんが、リバース プロキシの代わりに AJP を使用すると、多くの URL の悪夢がなくなることがわかりました。

于 2008-10-09T22:40:40.403 に答える