Variables mod_proxy vs. mod_ssl
Christian 'Tiran' Heimes
Variables mod_proxy vs. mod_ssl
Dentro de Zope no es posible acceder a las variables de ambiente especiales que agrega mod_ssl (SSLOptions +StdEnvVars) si estamos usando mod_proxy para acceder a Zope. Esto es por la forma en que funciona internamente el proxy. Todos los accesos a Zope a través del proxy transparente es un acceso nuevo, y no tiene contexto SSL. Para poder ver estar variables ambientales especiales es necesario configurar acceso CGI hacia Zope. El mejor método y el más rápido es FastCGI http://www.fastcgi.com.
Primero debemos instalar FastCGI para Apache 2, como fue explicado en la sección anterior. Una vez que mod_fastcgi esté compilado, instalado y cargado debemos reconfigurar tanto Zope como Apache2.
Lo siguiente es habilitar el servidor fast-cgi de Zope. Se puede escoger entre socket y tcp (host:port), donde socket es un poco más rápido, pero Apache2 debe tener acceso de lectura al directorio donde reside el socket. En este ejemplo INSTANCE_HOME es /var/lib/zope/example y la dirección fastcgi es $INSTANCE/var/zope.soc.
El último paso es reconfigurar Apache2. La configuración de ejemplo que sigue tiene solo las partes necesarias para fastcgi. Notar que el DocumentRoot debe existir y debe ser accesible por Apache2, pero el archivo zope.fcgi no debe existir. También se debe eliminar todas las reglas de reescritura de proxy (RewriteRules).
Configuración Apache2:
<IfModule mod_fastcgi.c>
FastCGIExternalServer /var/www/secure.example.org-ssl/zope.fcgi \
-socket /var/lib/zope/example/var/zope.soc \
-pass-header Authorization \
-pass-header Cookie \
-idle-timeout 60 \
-appConnTimeout 0
</IfModule>
<VirtualHost ...>
...
DocumentRoot /var/www/secure.example.org-ssl
...
<IfModule mod_fastcgi.c>
<Directory /var/www/secure.example.org-ssl>
AddHandler fastcgi-script .fcgi
</Directory>
</IfModule>
...
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/(.*) \
/zope.fcgi/VirtualHostBase/https/secure.example.org:443/VirtualHostRoot/_vh_zope/_vh_example_instance/$1 [L]
</IfModule>
...
</VirtualHost>