Amazon + Tomcat: encaminhar direto para um caminho/aplicação específico

Tomcat-logo.svg

Um desejo comum ao configurar servidores na nuvem é que ao digitar somente o nome do servidor o usuário seja encaminhado diretamente para a aplicação principal configurada neste. Porém, já sabemos que o Elastic Load Balancer não consegue encaminhar as requisições avaliando as URLs. Ele balanceia com base apenas no host. Como fazer então para que ao digitar somente http://www.meuservidor.com o usuário seja encaminhado para uma aplicação http://www.meuservidor.com/minhaapp, que está rodando no Tomcat dentro de uma instância EC2 atrás de um ELB?

Nosso balanceador estará configurado para encaminhar as requisições da porta 80 para a porta 8080 (porta HTTP default do Tomcat), e com isso as requisições para http://www.meuservidor.com serão encaminhadas para o Tomcat. No Tomcat as requisições que não especificam um caminho específico são direcionadas para a aplicação ROOT, que vem na instalação padrão do servidor. Para aplicar o redirect padrão do contexto ROOT para o contexto da aplicação, basta fazer conforme a seguir no index.jsp da aplicação ROOT. Porém, podemos ter tantos redirects e processamentos de URL quantos forem necessários.

Até a próxima!

  • Paulo Jr

    Muito legal Bruno. Podemos também configurar um proxy interno para redirecionar internamente a requisição. Será que funcionaria no seu ambiente? Em um ambiente que trabalho funciona assim. Abraço.

  • Bruno Almeida

    Oi Paulo,

    Funcionária sim, o modelo mais comum é colocar um apache na frente com mod_jk, mod_proxy ou mod_cluster na frente, porém isso só da ganho em performance caso vá servir bastante conteúdo estático, caso contrário é válido a dica do Bruno Pereira pois é uma configuração mais simples e para coisas que são só webservice normalmente indicamos que envie as requisições direto ao servidor de aplicação pois isso traz um ganho de performance visivelmente alto.

21