Eu configurei um redirecionamento no meu host virtual Apache que atende vários subdomínios - chame-os de a.example.com e b.example.com - para que um aplicativo Ruby on Rails seja usado.
No meu arquivo de configuração virtualhost, tenho esta regra:
rewriteEngine on
rewriteRule proxy/(.+)$ http://news.example.com/$1 [P]
A ideia é que eu posso fazer http://a.example.com/proxy/news/a
e obter o conteúdo de http://news.example.com/news/a
, mas dentro do mesmo subdomínio, então ajax não acha que minhas solicitações de ajax são de domínio cruzado - mais informações sobre essa questão SO .
O problema é que, embora funcione bem no meu ambiente de teste, ele não está em produção!
Ambos os servidores são Ubuntu server 10.04. O Apache veio dos repositórios padrão do Ubuntu, usando apt-get install
.
Eu fiz um diff de todo o / etc / apache2 / dir e a única diferença é o nome do servidor.
Se eu mudar a última opção para [L], eu recebo um redirecionamento, então isso me faz pensar que o mod_rewrite está funcionando. Apenas não fala com o mod_proxy.
Ao olhar para os logs ( /var/log/apache2
e o log rails), parece que a regra de reescrita na produção está simplesmente sendo ignorada - os logs são exatamente os mesmos como se não estivessem lá.
Como posso depurar isso? Posso forçar o Apache a me fornecer mais informações sobre por que essa regra específica não é aplicada quando eu acesso o /proxy
?