Nós rodamos um site baseado no Zend Framework usando o apache httpd (2.2) com mod_rewrite
para SEO e usabilidade amigável URL: s. Recentemente, adicionamos mod_proxy
(e mod_proxy_balancer, mod_proxy_http, mod_rpaf
) para configurar um host virtual do balanceador de carga.
Nossa configuração agora se parece com:
external.site.com (vhost on server1.site.com with reverse proxy)
|-internal1.site.com (vhost on server1.site.com)
|-internal2.site.com (vhost on server2.site.com)
Em que internal1
& internal2
atende a maior parte do conteúdo dinâmico e external
exibe conteúdo estático, além de algumas páginas de tipo de administrador. Todos os vhosts têm o mesmo código e .htaccess
setup.
O problema é que em external.site.com
o RewriteRule
não adiciona os cabeçalhos corretos ao ambiente de solicitação, especificamente REDIRECT_URL
do qual nós e o ZendFramework dependem. Tudo funciona bem para as solicitações que são encaminhadas para os vhosts internos.
As partes relevantes do httpd.conf:
<VirtualHost *:80>
ServerName external.site.com
DocumentRoot /opt/www/htdocs/
CustomLog "/var/log/httpd-proxy-access.log" combined
<Proxy balancer://backend/>
Balancermember http://internal1.site.com
Balancermember http://internal2.site.com
ProxySet lbmethod=byrequests
</Proxy>
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /static/ !
ProxyPass /config/ !
ProxyPass / balancer://backend/
ProxyPassReverse / balancer://backend/
</VirtualHost>
<VirtualHost *:80>
ServerName internal1.site.com
RPAFenable On
RPAFproxy_ips 127.0.0.1
</VirtualHost>
Do arquivo .htaccess
:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^.*robots.txt
RewriteCond %{REQUEST_URI} !^.*/static/.*
RewriteRule .* index.php [L]
php_flag magic_quotes_gpc off
php_flag register_globals off
Como só há um problema no external
vhost, supomos que seja um problema com a combinação mod_proxy
e mod_rewrite
. Alguma idéia?
Atenciosamente