2

私は次のような作業構成を持っています

ProxyPass /roundcube protocol://127.0.0.1:8080/roundcube
ProxyPassReverse /roundcube protocol://127.0.0.1:8080/roundcube

私が行くとき

http://www.example.com/roundcube
or
https://www.example.com/roundcube

期待どおり、127.0.0.1:8080 のサーバーに両方または適切にプロキシされます。

ただし、プロキシが発生するタイミングをより細かく制御したいので、上記の ProxyPass ディレクティブではなく、mod_rewrite の [P] オプションを使用したいと考えています。私は次のことを試しました:

RewriteEngine On
RewriteRule ^/roundcube$ /roundcube/ [R]
RewriteRule ^/roundcube/(.*) protocol://127.0.0.1:8080/roundcube/$1 [P]
ProxyPassReverse /roundcube protocol://127.0.0.1:8080/roundcube

その構成で、私が行くとき

http://www.example.com/roundcube

要求は期待どおりに正しくプロキシします。

しかし、私が行くとき

https://www.example.com/roundcube

リクエスト 404 の。

私の質問は、http と https の両方のリクエストに関して、mod_rewrite プロキシが ProxyPass バージョンと同じように機能しないのはなぜですか? 上記の 2 つの例は、私の理解に基づいて機能的に同等であるはずですが、そうではないようです。私は何が欠けていますか?これを説明するドキュメントを追跡できませんでした。ありがとう!

4

1 に答える 1

2

手遅れかもしれませんが、同じ問題で誰かがこのページに来た場合に備えて、この回答を投稿しています。

ProxyPassの構文はRewriteRuleの構文とは異なります。RewriteRuleでは、プロトコルを参照するには、http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html で説明されているように使用する必要があります%{SERVER_PROTOCOL}

于 2015-08-13T05:07:19.347 に答える