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?

Respostas:


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

Leia mais sobre mod_proxy


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.


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.