
私は SSL 証明書を使用して、自宅のサーバーでポート 443 の Apache を使用して複数のサイトを世界中に提供しています。昨夜、構成ファイルで定義されたポートでのみサイトを提供する Linux バイナリをインストールしました。Apache でサイトを直接提供することはできません。
このサイトはhttp://127.0.0.1:8081/しかし、私は443経由でApacheの背後に隠して、https://myserver.duckdns.org/webapp/
これまでサイト設定ファイルでこれを試しましたが、うまくいきませんでした:
ProxyRequests off
<Proxy *>
allow from all
</Proxy>
RewriteEngine On
RewriteRule ^/(.*) /webapp/$1 [P]
<Location /webapp/>
ProxyPass http://127.0.0.1:8081/
ProxyPassReverse http://127.0.0.1:8081/
</Location>
どうすればこれができるのか、何かアイデアはありますか?
ProxyPass と RewriteRules を使用してこれを実行できると思いましたが、適切に動作しないようです。
よろしくお願いします!
答え1
書き換えルールは、a) ターゲットが間違っており、2) 冗長です。
RewriteRuleは[P]
、代替ProxyPass と一緒にではなく、ProxyPass に追加します。[P] ルールの書き換え先は、ローカルの URL ではなく、リモートの Web アプリケーション URL になります。たとえば、次のように使用できます。
RewriteRule ^/webapp/(.*) http://127.0.0.1:8081/$1 [P]
またはこれ:
ProxyPass /webapp/ http://127.0.0.1:8081/
またはこれ:
<Location /webapp/>
ProxyPass http://127.0.0.1:8081/
</Location>
(注: Apache のドキュメントでは、可能な限り ProxyPass を使用することを推奨しています。)
あなたの<Proxy *>
ブロックも不要です。なぜなら、それはフォワードプロキシでは、クライアントがプロキシの宛先(無効にされている)を指定します。