Frage
Antwort
Wer ein VirtualHostMonster(VHM) in Verbindung mit Apaches rewrite oder proxy Regeln verwendet, wird bei einem Aufruf von <dtml-var REQUEST> schnell merken, dass REMOTE_ADDR die IP des durchschleifenden Apache Servers zurückgibt und nicht die IP des Clients (oder dessen Proxy). Man kommt noch mit Hilfe von <dtml-var HTTP_X_FORWARDED_FOR> an die wahre IP des Clients, aber nicht alle Zope Produkte fragen auch diese Umgebungsvariable ab.
Zwar gibt es einen Apache Patch, der die IP mit im HTTP-Header durchreicht, aber das funktioniert nur mit HTTP/1.1.
Lösung 1: Geschickter ist es, direkt sein VHM mit Dieter Maurers VirtualHostMonster - RemoteAddr patch zu patchen. Mit diesem Patch ist das VHM in der Lage, die remote Adresse von der URL abzugreifen. Wenn die URL nach VirtualHostBase/protocol/host um ein VirtualHostRemoteAddr/remote_addr ergänzt wird, dann setzt das VHM Zopes REMOTE_ADDR auf remote_addr um. Dieses Feature kann zusammen mit Apaches rewrite Regeln folgendermaßen verwendet werden:
RewriteRule pattern http://localhost:8080/\
VirtualHostBase/proto/host/VirtualHostRemoteAddr/\
%{REMOTE_ADDR}/ something [P]
Lösung 2:
Einsatz des von Pound mitgelieferten z2.py Patches für Zope. Siehe hierzur FAQ Pound und Apache und den Abschnitt Zope unter http://www.apsis.ch/pound/
Anregungen zu dieser FAQ bitte an mschopen at dzug org