web-dev-qa-db-ja.com

Apache:特定のURLを別のポートのローカルサーバーにリダイレクトする

これは簡単に思えますが、私はそれを動作させることができません。

私は2つのことだけを実行する必要があるかなり簡単なWebサーバーを持っています。

  1. example.com/status.htmlはローカルファイルを返します(これは機能します)
  2. example.com/atomは、ポート4000の同じマシンで実行されているファイアウォールサーバーのコンテンツをリダイレクトします。

これはうまくいきませんでした:

RewriteRule ^$ http://localhost:4000

これにより、リクエスタの観点から(つまり、クライアントのマシン上で)トラフィックがlocalhost:4000にリダイレクトされました。

VirtualHostの私の限られた理解は、それがexample.com/atomではなく、atom.example.comのようなもののためであることを示しています

ProxyReverseを使用する必要があると思いますが、正しい組み合わせが見つかりません。

更新:Shane MaddenからのProxyPass/ProxyReverse提案を試行すると、エラーログファイルに次のように表示されます。

[Thu Mar 15 11:59:15 2012] [error] (13)Permission denied: proxy: HTTP: attempt to connect to 127.0.0.1:4000 (localhost) failed
[Thu Mar 15 11:59:15 2012] [error] ap_proxy_connect_backend disabling worker for (localhost)
[Thu Mar 15 11:59:17 2012] [error] proxy: HTTP: disabled connection for (localhost)

(ローカルサーバーは確実に127.0.0.1:4000で実行されています)

6
Steve Bennett

理由がない限り、mod_rewriteを使用しないでください。

これを試してください(<VirtualHost>ブロック):

ProxyPass /atom http://127.0.0.1:4000/atom
ProxyPassReverse /atom http://127.0.0.1:4000/atom
8
Shane Madden