25

ポート 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/

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

4

3 に答える 3

35

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

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

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

于 2009-08-10T03:25:52.233 に答える
7

ポート 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
于 2015-08-05T21:44:35.800 に答える
0

完全なコードは以下のようになります。

<IfModule mod_ssl.c>
<VirtualHost *:443>
ProxyPreserveHost On
ServerAdmin webmaster@localhost
ServerName test.example.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ProxyPass / http://localhost:9301/
ProxyPassReverse / http://localhost:9301/

SSLCertificateFile /etc/letsencrypt/live/test.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/test.example.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

このリンクも役立ちます。

于 2021-03-11T08:57:51.400 に答える