Reverse Proxy (mod_rewrite) e Rails (caminhos absolutos)

2

Eu tenho o aplicativo front-end rails, que reverte proxies para qualquer um dos vários aplicativos de backend rails, dependendo da URL, por exemplo

http://www.my_host.com/app_one proxies reversos para http://www.remote_host_running_app_one.com

tal que um URL como http://www.my_host.com/app_one/users mostre o conteúdo de http://www.remote_host_running_app_one.com/users

Eu tenho um grande número de back-ends em constante expansão, para que eles não possam ser listados explicitamente em nenhum outro lugar que não seja um banco de dados. Isso não é problema para o mod_rewrite usando um proxy reverso prg: / rewrite map.

A questão é que os urls retornados pelos helpers rails têm o formato /controller/action , tornando-os absolutos para a raiz. Este é um problema para a página servida por mod_rewrite porque os links na página do proxy aparecem como absolutos para o domínio. ou seja:

http://www.my_host.com/app_one/controller/action tem links que acabam parecendo /controller/action/ quando precisam parecer com /app_one/controller/action

mod_proxy_html parece a ideia certa, mas não parece ser tão dinâmico quanto eu precisaria, já que as regras precisam ser codificadas nos arquivos de configuração.

Existe uma maneira de corrigir isso no servidor, para que os links sejam roteados corretamente?

    
por SooDesuNe 30.12.2010 / 23:53

1 resposta

0

Você pode tentar usar ProxyPass e ProxyPassReverse.

ProxyPass /app_one http://www.remote_host_runing_app_one.com
ProxyPassReverse /app_one http://www.remote_host_running_app_one.com

Embora seja melhor executar seus aplicativos ruby sob seus diretórios nomeados e reverter o proxy diretamente de volta em vez de fazer uma reescrita para alterar o uri.

Você pode olhar para unicórnio, passageiro ou magro para executar os aplicativos Ruby para dar mais flexibilidade com a forma como eles são executados.

    
por 30.10.2011 / 03:44