
Apache サーバー (Xampp) で、ファイアウォール フィルタリング用のフォワード プロキシを作成しましたが、正常に機能しています。ただし、RewriteRule を使用して禁止された URL をカスタム エラー ページにリダイレクトする方法がわかりません。
プロキシに要求された URL が承認されていない場合にクライアントに通知するために、サーバー上にあるローカル エラー HTML ファイルに要求をリダイレクトしたいと考えています。
以下の例では、機能しない部分のみを記載しています (許可された URL には他の RewriteRule があります)。
Listen 192.168.0.100:3128
<VirtualHost 192.168.0.100:3128>
ServerName 192.168.0.100:3128
ProxyRequests On
ProxyVia On
<Proxy *>
# 1) If url is allowed (this part works well):
... some RewriteCond & RewriteRule ...
# 2) If url is not allowed by some RewriteCond:
RewriteRule ^ https://192.168.0.100/firewall/firewall_deny.html [R=302,L]
OR
RewriteRule ^ https://192.168.0.100/firewall/firewall_deny.html [P,L]
</Proxy>
</VirtualHost>
URL が許可されている場合 (ケース 1)、プロキシは正常に動作し、Chrome は要求された Web サイトのページを受信します。ただし、禁止した URL の場合 (ケース 2)、プロキシからの応答はありません。
見つけたさまざまな構文を試してみましたが、Chrome ブラウザはサーバーから何の応答も受け取らず、エラー ページ「このサイトは利用できません」と「ERR_TUNNEL_CONNECTION_FAILED」というエラーが表示されるだけです。
フォワード プロキシの場合のみ (リバース プロキシは使用していません)、カスタム HTML ファイル (またはその URL) をクライアントに送り返すことは可能ですか?
ご協力ありがとうございます
10/23編集:
この小さなプロキシはうまく機能しますが、URL が禁止されている場合にクライアントにエラー ページを返す方法がわからないだけです。
そのため、<Proxy *> で接続を許可するかどうかに使用される RewriteRule が、通常の構成 (プロキシではない) と同様に、エラー ページにリダイレクトするためにも使用できるかどうかを尋ねていました。次のようになります。
RewriteRule ^ https://192.168.0.100/path/to/firewall/firewall_deny.html [R=302,L]
どうやらリダイレクトは完了したようで、Fiddler では新しい URL の 302 リダイレクト ページが表示されますが、Chrome ではそれを受信していないようです。
私は次のようなことも試しました:
Redirect permanent path/to/firewall/
しかし、このフォワード プロキシ構成では、どちらも機能しないようです。プロキシ トンネルを通過するため、エラー ページの URL を Chrome に送り返すには、ヘッダーなどを何らかの方法で書き換える必要があるかもしれません。
現在、ServerDefault にある ExtFilterDefine (mod_ext_filter.so) や Substitute (mod_substitute.so) などの他のソリューションを使用しようとしていますが、これまでのところ成功していません。