Apache Server Forward Proxy: Wie leite ich auf eine benutzerdefinierte Seite weiter?

Apache Server Forward Proxy: Wie leite ich auf eine benutzerdefinierte Seite weiter?

Auf dem Apache-Server (XAMPP) habe ich einen Forward-Proxy für die Firewall-Filterung erstellt, der gut funktioniert, aber ich verstehe nicht, wie ich mit RewriteRule eine verbotene URL auf eine benutzerdefinierte Fehlerseite umleiten kann.

Ich möchte die Anforderung an eine lokale HTML-Fehlerdatei auf meinem Server umleiten, um den Client zu informieren, wenn die von ihm an meinen Proxy angeforderte URL nicht autorisiert ist.

Im folgenden Beispiel habe ich nur den Teil eingefügt, der nicht funktioniert (ich habe andere RewriteRule für zulässige URLs):

  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>

Wenn die URL erlaubt ist (Fall 1), funktioniert der Proxy einwandfrei und Chrome erhält die Seite der angeforderten Website. Aber im Fall einer URL, die ich gesperrt habe (Fall 2), gibt es keine Antwort vom Proxy.

Ich habe viele verschiedene Syntaxen ausprobiert, die ich gefunden habe, aber der Chrome-Browser erhält nie eine Antwort von meinem Server und zeigt nur seine Fehlerseite an: „Diese Site ist nicht verfügbar“ mit dem Fehler „ERR_TUNNEL_CONNECTION_FAILED“.

Ist es nur im Fall eines Forward-Proxys (ich verwende keinen Reverse-Proxy) möglich, eine benutzerdefinierte HTML-Datei (oder deren URL) an den Client zurückzusenden?

Vielen Dank für jede Hilfe

Bearbeitung am 23.10.:

Dieser kleine Proxy funktioniert gut, aber ich weiß nicht, wie ich eine Fehlerseite an den Client zurücksenden kann, wenn die URL verboten ist.

Deshalb habe ich gefragt, ob die in <Proxy *> verwendete RewriteRule, um die Verbindung zu autorisieren oder nicht, auch verwendet werden kann, um auf eine Fehlerseite umzuleiten, wie wir es in einer normalen Konfiguration (kein Proxy) tun können. So etwas wie:

RewriteRule ^ https://192.168.0.100/path/to/firewall/firewall_deny.html [R=302,L]

Die Umleitung ist offenbar erfolgt, da ich in Fiddler die 302-Umleitungsseite mit der neuen URL sehen kann, Chrome sie jedoch anscheinend nicht empfängt.

Ich habe auch Dinge ausprobiert wie:

Redirect permanent path/to/firewall/

Aber es scheint auch in dieser Forward-Proxy-Konfiguration nicht zu funktionieren. Vielleicht müssen Sie den Header oder etwas anderes umschreiben, um die URL der Fehlerseite an Chrome zurückzusenden, da diese durch einen Proxy-Tunnel läuft.

Derzeit versuche ich, andere auf ServerDefault gefundene Lösungen wie ExtFilterDefine (mod_ext_filter.so) oder Substitute (mod_substitute.so) zu verwenden, bisher jedoch ohne Erfolg.

verwandte Informationen