Estou usando o apache 2.2.x em alguns projetos novos que estou envolvido na empresa que trabalho. Achei que seria interessante explicar como é feita a configuração para encaminhar as requisições dinâmicas, sejam elas para jsp’s, servelts, ssp’s e etc, para um servidor no backend, podendo ser o Jboss (tomcat) ou o Weblogic utilizando o mod_proxy.
No apache 2.2.x é muito simples e fácil fazer isso, não necessitando nenhum módulo de terceiros como o mod_jk ou o módulo da bea. Podemos usar dois módulos para isso:
Particularmente, prefiro usar o mod_proxy para encaminhar requisições para o Jboss/Tomcat. O mod_jk é cheio de burocracia com aqueles seus dois arquivos (worker.properties e jk.conf).
Para encaminhar requisições para o jboss podemos usar o mod_proxy_http ou o mod_proxy_ajp. Já para o weblogic, nossa única opção é o mod_proxy_http, visto que o weblogic não suporta o protocolo AJP.
Sugiro que a configuração seja feita no arquivo httpd-vhosts.conf (ou num arquivo a parte) e depois dar um include dele no arquivo httpd.conf, apenas para deixar as coisas mais organizadas.
Segue um exemplo simples utilizando o mod_proxy_http:
ProxyPreserveHost On
ProxyPass /ghi !
ProxyPass /abc http://localhost:8080/abc min=256 smax=512 max=1024 timeout=10 ttl=10
ProxyPass /xyz http://localhost:8080/xyz min=256 smax=512 max=1024 timeout=10 ttl=10
A cláusula ProxyPreserveHost On faz com que o proxy preserve (como o prório nome sugere) o host enviado na requisição. O mapeamento para o Jboss ou Weblogic é feita usando a diretiva ProxyPass, que contém a seguinte sintaxe:
ProxyPass [path] !|url [key=value key=value ...]]
Caso se queira negar uma determinada uri, basta adicionar o sinal de ! no final, caso contrário será necessário especificar para onde será encaminhado a requisição. Lembrando que as urls negadas, e que portanto não deverão ser processadas pelo backend, devem ser definidas primeiro. No exemplo dado, a uri /ghi nao será processada pelo backend. Caso fóssems usar o mod_proxy_ajp basta substituir o http:// por ajp:// e substituir o LoadModule do mod_proxy_http para mod_proxy_ajp.
A partir do Apache 2.2.6 uma nova cláusula foi criada, chamada ProxyPassMatch, permitindo especificar uma expressão regular na definação dos paths que serão jogados para o backend.
Espero que tenha ficado claro…qualquer dúvida, deixe seu comentário.
Ahh!! Mais uma coisa… o módulo mod_proxy existe no apache 2.0.x, porém ele ainda está meio bugado.
Março 21, 2008 at 10:08 am
Inicialmente queria dizer que gostei muito do artigo. Aqui na empresa que trabalho o pessoal esta com problemas para configurar o apache(2.2.4) e o tomcat 6. Estou procurando no google alguma ajuda mas so encontro informacoes de versoes de apache antigas. Por que vc não cria um artigo mostrando o passo a passo para configurar o apache com jboss/tomcat/outros ?
Valeu !!
Herrera
Março 24, 2008 at 10:46 pm
pedro, primeiramente obrigado pela visita. Boa ideia, vou fazer isso sim. A proposito, qual problema voces estao tendo? Um abraço.
Abril 7, 2008 at 1:09 pm
ProxyPreserveHost Off
ProxyPass /Consulta *:8080/ConsultaCNPJ/consulta_cnpj.do
estou tentando redirecionar para outro servidor….
mas nao consigo startar o server com essas linhas sem estar comentadas.
Help pls!
Tks
Abril 7, 2008 at 1:12 pm
onde * é o ip do server
Abril 7, 2008 at 3:01 pm
o correto seria … http://*:8080/consulta … no ProxyPass que vc mostrou de exemplo.
Julho 8, 2008 at 5:06 pm
Como faço para redirecionar a porta 808 do tomcat para a porta 80 do apache??
Julho 8, 2008 at 5:10 pm
nao seria o contrario?
Julho 10, 2008 at 4:49 pm
Luiz,
Lembre-se de iniciar o seu Jboss no servidor de destino com o parâmetro “-b “.
Agosto 15, 2008 at 6:18 pm
Bom, página já no meus favoritos. Estou entrando no mundo do suporte ao jboss. Gustavo, existe diferença na performance entre mod_proxy e mod_jk?
abraços,
Outubro 28, 2008 at 3:19 pm
depende.. o mod_jk utiliza o protocolo AJP.. o mod_proxy pode ser utilizado em cima do protocolo http (mod_proxy_http) ou ajp (mod_proxy_ajp).
Novembro 26, 2008 at 10:08 am
Bom dia teria um tutorial com o passo a passo disso? Gostaria muito de ter um tutorial.
Att,
Angelo Santos.
Dezembro 12, 2008 at 2:26 pm
o post já está em forma de tutorial… tem algum passo que nao ficou claro?
Abril 6, 2009 at 1:03 pm
Alguem sabe como faço o Apache como proxy e proxy reverso pro Jboss?
abs