web-dev-qa-db-ja.com

Apacheポートプロキシ

ポート8001をリッスンしている非Apacheサーバーとポート80をリッスンしているApacheがあります。特定の仮想ドメインがポート80を介して非Apacheサーバーによって実際に提供されるようにしたいです。

例:

<VirtualHost *:80>
  Servername example.com

  # Forward this on to the server on port 8001
</VirtualHost>

Mod_proxyとProxyPassでこれができると思いました。

ProxyPass * http://www.example.com:8001/

しかし、それはうまくいきません。

17
Dave

ProxyPass * http://www.example.com:8001/

スターはブロック内でのみ有効です。スラッシュはあなたが望むものです。

ProxyPass / http://www.example.com:8001/
ProxyPassReverse / http://www.example.com:8001/

リバースプロキシは、ポート8001サーバーによって送信されるリダイレクトがプロキシの正規名に調整されることを保証します。

Apacheのマニュアルにはいくつかの例があります。 http://httpd.Apache.org/docs/2.0/mod/mod_proxy.html

28
txyoji

ポート80でApacheによってホストされているサイトがあります。また、ポート8880でリッスンしているpython Webサーバーがあります。これには http:// [mydomainname]/something)経由でアクセスする必要があります 。txyojiの答えを使用して、次のように仮想ホスト定義にプロキシパスを追加するだけで機能しました。

ProxyPass /something http://mydomainname:8880/something
ProxyPassReverse /something http://mydomainname:8880/something

[〜#〜]更新[〜#〜]

設定によっては、これを行うさらに良い方法は、「localhost」のポートのプロキシパスを設定することです。私はあなたがしていることをもう少し明確にし、さらにポータブルになっていると思います。これに加えて、そのポートへのファイアウォールを開く必要さえありません!ローカルで任意のポートにプロキシパスを送信できるため、必要がなければ、それを外部に公開する理由はありません。ポート80を介してすべてをファネルし、Apacheを常に「前に実行」させます。次に、そのセキュリティについて心配することができます。

ProxyPass /something http://localhost:8880/something
ProxyPassReverse /something http://localhost:8880/something
5
BuvinJ