Encaminhando solicitações apache (porta 80) para o Tomcat (porta 8080)?

8

Quero executar um aplicativo Tomcat por meio de um URL de site comum, como www.xyz.com. Gostaria que a raiz desse domínio atue como o diretório base do aplicativo Web, para que cada solicitação se www.xyz.com/a/b/ctorne www.abc.com:8080/myApp/a/b/c. Idealmente, eu seria capaz de fazer isso de forma transparente e apenas para determinados aplicativos da web.

www.abc.com:8080 ainda deve responder aos pedidos.

O que preciso fazer para que isso aconteça?

Stefan Kendall
fonte

Respostas:

14
ProxyPass        / http://www.abc.com:8080/myApp/
ProxyPassReverse / http://www.abc.com:8080/myApp/

Leia mais sobre mod_proxy

ptman
fonte
esta é a melhor solução para fazer isso
Mike
1
Para abordar o lado "apenas para determinados aplicativos da web", basta aprofundar o caminho de redirecionamento. Portanto: ProxyPass / a / b / c abc.com:8080/myApp/a/b/c ProxyPassReverse / a / b / c abc.com:8080/myApp/a/b/c Para fazer o proxy de todos, exceto determinados caminhos, deixe a linha ProxyPassReverse, mas substitua as linhas ProxyPass por RewriteRules (certifique-se de usar a opção [P] para proxy em vez de redirecionar) e faça regras anteriores para não proxy desses caminhos. RewriteRule / notproxied - [L] RewriteRule /(.*) abc.com:8080/myApps/$1 [P] ProxyPassReverse / abc.com:8080/myApp
Jeremy M -
onde eu adiciono essas linhas?
Mina Michael
@MinaMichael Os documentação mod_proxy estados: config do servidor, hospedeiros virtuais, diretório: Contexto
ptman
3

Um método mais simples de fazer isso é adicionar uma entrada de host virtual no seu arquivo conf do Apache. Geralmente localizado em / etc / httpd / conf, adicione algo assim no final da seção Host virtual:

<VirtualHost X.X.X.X:80>
ServerName tomcatpage.yourdomain.com
ServerAlias tomcatpage.yourdomain.com
Redirect permanent / http://tomcatpage.yourdomain.com:8080/
</VirtualHost>

Reinicie seu serviço Apache e pronto.


fonte
3

Você pode usar o mod_rewrite no Apache para fazer isso. Carregue mod_rewrite no seu Apache e no seu vhost www.xyz.com adicione a seguinte regra:

RewriteRule ^/(.*) http://www.abc.com:8080/myApp/$1

Isso deve fazer a mágica.

Mais informações sobre mod_rewrite aqui .

EDIT : Para manter o nome do site nos navegadores, use mod_proxy também adicionando apenas um [P] no final do RewriteRule:

RewriteRule ^/(.*) http://www.abc.com:8080/myApp/$1 [P]

Isso forçará o Apache a agir como um proxy para esse URL em vez de apenas reescrevê-lo.

Marco Ramos
fonte
Isso faz com que o navegador realmente redirecione. Isso funciona, mas eu preferiria que o site aparecesse www.xyz.comdo lado do usuário.
Stefan Kendall
1
use mod_proxy também e, no final da RewriteRule, adicione um [P], assim: RewriteRule ^ / (. *) abc.com:8080/myApp/$1 [P]. Também editei a resposta acima para incluir essas informações.
Marco Ramos