Estou tentando configurar o failover para um servidor com proxy reverso com uma cópia estática de recursos localhost que normalmente seria atendida por um sistema de gerenciamento de conteúdo. Eu usei wget
para pegar uma cópia estática do site dinâmico para fins de failover.
Eu tentei usar uma configuração semelhante a local de fall-back para Diretiva ProxyPass do Apache? para iniciar as coisas, e é bastante simples, mas estou recebendo o erro no título.
Aqui está minha configuração de proxy (higienizada):
DocumentRoot /var/www/www.example.com/htdocs
ProxyRequests Off
ProxyPreserveHost On
ProxyPass "/site/" "balancer://cms"
ProxyPassReverse "/site/" "balancer://cms"
ProxyPassReverse "/site/" "http://ip-10-1-1-229.ec2.internal/site/"
<Proxy "balancer://cms">
#BalancerMember "http://ip-10-1-1-229.ec2.internal/site/" loadfactor=1
# For localhost services, a backup of the CMS's site
BalancerMember "http://127.0.0.1/site-backup/www.example.com/site/" loadfactor=10 status=+H
</Proxy>
<Directory "/var/www/www.example.com/htdocs/site-backup">
Order allow,deny
Allow from all
Options Indexes FollowSymlinks
DirectoryIndex index.html
</Directory>
(Aqui, eu comentei o membro do balanceador que vai para o sistema CMS real - essa parte está funcionando muito bem - para que eu possa testar a cópia estática local.)
Há um arquivo index.html
em /var/www/www.example.com/site-backup/www.example.com/
e ele é carregado quando tento atingir http://www.example.com/site/
, mas nenhum dos outros recursos da página (CSS, imagens, etc.) é carregado. Eles têm URLs na página como:
Eu tenho um arquivo, foo.png
neste local:
/var/www/www.example.com/htdocs/site-backup/www.example.com/site/sites/default/files/foo.png
Mas quando essa imagem é carregada pelo navegador, recebo uma resposta 500 Internal Server Error
e vejo isso no log de erros do httpd:
[proxy:warn] [pid 3182:tid 2838395712] [client 71.127.40.115:38208] AH01144: No protocol handler was valid for the URL /site/site/sites/default/files/foo.png. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule., referer: http://test.example.com/site/
Percebi que o URL mostrado na mensagem de erro tem um /site/
extra no URL, por isso percebi que ele estava sendo duplicado porque estou tentando exibir um espaço de URL incluindo /site/
de um diretório contendo /site/
e wget
provavelmente não estão perfeitos agora, então criei um link simbólico de /var/www/www.example.com/site-backups/www.example.com/site/site/sites
->
/var/www.www.example.com/site-backups/www.example.com/site/sites
. Isso deveria ter corrigido qualquer tolice devido à confusão de URLs.
Mas isso não parece consertar nada; mod_proxy
ainda está reclamando sobre o protocolo. mod_proxy_http
está definitivamente ativado, já que a diretiva normal ProxyPass
para o CMS está funcionando como esperado (quando ativado).
Tenho certeza de que esta é uma coisa bastante simples que estou perdendo, mas não consigo entender. Qualquer ajuda seria muito apreciada.