2009-05-28 9 views
3

他のサーバやIPにリダイレクトせずに、mod_proxyでリバースプロキシを設定するにはどうしたらいいですか?これは仮想ホスト環境になります。私がこれをやりたいのは、mod_proxyがクライアントのブラウザとの通信を処理し、クライアントのブラウザに送るのではなく、次の要求を処理するためにWebサーバのプロセスを解放することです。これは、mod_phpなどの言語モジュールをMPM Preforkで使用する場合に特に重要です。私が達成しようとしているフローは、 です。1.トラフィックはポート80のwww.mydomain.comに解決されます。 2.プロキシが要求をWebサーバーに送信します。 3. Webサーバーは、応答をプロキシに戻し、プロキシから切断します。 4.プロキシがクライアントブラウザにフィードします。リダイレクトせずにmod_proxyでリバースプロキシを設定するにはどうしたらいいですか?

これで、同じIPアドレスでnginxを追加したいのですが、同じサーバー上のnginxへのポート81とプロキシの画像要求に追加したいと思います。私はプロキシを処理するnginxやFCGIを何もしたくない。私は標準のApache mod_rewriteと.htaccessを動作させたい。

ありがとうございました!

+0

を読み込む使用していることを確認してください。 – DevelopingChris

答えて

3

別のポートのローカルホストにリダイレクトするだけですか?ポート8080上でアプリケーションをホストし、要求を転送するためにmod_proxyを使用します。

ProxyPass /foo http://localhost:8080/foo 
ProxyPassReverse /foo http://localhost:8080/foo 

あなたが要求を処理しているアプリケーションサーバーを持っていて、単一のマシンに組み合わせる複数のインスタンスをしたい場合、これが役立つかもしれません。アプリケーションサーバーごとに1つのポートを使用できます。

実際にmod_phpを直接使用するよりも速いのかどうかはわかりません。プロキシ要求によってもオーバーヘッドが発生します。

+0

私はそれが完璧だと思います。私はApacheが複数のポートでリッスンしているとは思わなかった。 負荷を軽減するかどうかは、mod_phpプロセスが実際にブラウザーに供給している時間と、キープアライブの影響がどのくらいあるかによって決まります。ほとんどのリクエストがソケットバッファに収まるならば、Apacheはとにかく "ベビーシッティング"の通信をしていない、カーネルは、それ以上のことはできない。プロキシはまた、静的コンテンツのためにnginxを試すことを可能にします。それは助けになるかもしれない。 PHPのキャッシュはうまくいっています。これらの微調整の後で、それはlingerd、バッファ、CPU、RAMにまで下がります。 – user113468

0

はあなたにも、私はにProxyPassReverseは、あなたが不足している部分だと思うこれら2つのモジュール

LoadModule proxy_module bin/mod_proxy.so 
LoadModule proxy_http_module bin/mod_proxy_http.so 

ProxyPass /TeamCity http://localhost/TeamCity 
ProxyPassReverse /TeamCity http://localhost/TeamCity