Apache Server Forward Proxy: 사용자 정의 페이지로 리디렉션하는 방법은 무엇입니까?

Apache Server Forward Proxy: 사용자 정의 페이지로 리디렉션하는 방법은 무엇입니까?

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이 요청한 웹사이트의 페이지를 수신합니다. 그러나 내가 차단한 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이 프록시 터널을 통과하기 때문에 크롬으로 다시 보내려면 헤더나 다른 방법으로 다시 작성해야 할 수도 있습니다.

현재 저는 지금까지 성공하지 못한 ExtFilterDefine(mod_ext_filter.so) 또는 Substitute(mod_substitute.so)와 같은 ServerDefault에 있는 다른 솔루션을 사용하려고 합니다.

관련 정보