Como configurar o proxy do servidor da web do Apache em frente ao Apache Tomcat no Red Hat Linux
- 1350
- 122
- Howard Fritsch
Objetivo
Nosso objetivo é configurar o apache httpd para funcionar como um proxy em frente ao contêiner Apache Tomcat Application.
Sistema operacional e versões de software
- Sistema operacional: Red Hat Enterprise Linux 7.5
- Programas: Apache httpd, apache tomcat
Requisitos
Acesso privilegiado ao sistema
Dificuldade
FÁCIL
Convenções
- # - requer que os comandos Linux sejam executados com privilégios root diretamente como usuário root ou por uso de
sudo
comando - $ - dados os comandos do Linux a serem executados como um usuário não privilegiado regular
Introdução
Usar o Apache HTTPD como proxy para um contêiner Apache Tomcat Apache é uma configuração comum. Ele vem com muitos casos de uso, o mais trivial está servindo conteúdo estático de httpd
, ao fornecer serviços que implementam a lógica de negócios pesados de um aplicativo escrito em Java que reside no contêiner Tomcat.
Ao criar um proxy, podemos criar uma espécie de front-end para a camada de aplicativos, onde podemos introduzir medidas de segurança no servidor da web, aplicar balanceamento de carga, usar redirecionamento condicional ou usar qualquer outra funcionalidade fornecida pelo servidor da web. Dessa forma, não precisamos implementar nenhum desses recursos em nosso aplicativo e podemos focar suas capacidades no próprio serviço. Teremos um servidor da web completo apresentado para os usuários, alguns dos URLs encaminhados silenciosamente para o contêiner de aplicativos que podem não ser acessíveis por si só. As respostas do aplicativo são encaminhadas de volta aos clientes que não saberão que falaram mais alguma do que uma camada.
Usaremos o protocolo AJP que pode ser usado entre os servidores da web e os contêineres de aplicativos baseados em Java para fornecer a capacidade de equilibrar a carga entre vários servidores de aplicativos - no entanto, para configurar um balanceador de carga está fora do escopo deste tutorial.
Vamos configurar nossa configuração no Red Hat Linux 7.5, mas o servidor da web do Apache, o módulo AJP e o contêiner Apache Tomcat Application estão disponíveis em todos os lugares e, portanto, essa configuração é portátil com pequenos ajustes como caminhos do sistema de arquivos ou nomes de serviço.
Instalando o software necessário
Primeiro, precisamos instalar os serviços que usaremos. Em uma configuração balanceada de carga, os servidores Tomcat (s) podem estar em diferentes máquinas e, muitas vezes, são, fornecendo uma fazenda de recipientes que construem um serviço.
# yum instalar httpd tomcat tomcat-webapps
Nós instalamos o Tomcat-Webapps
Para fins de teste, neste pacote é um exemplo de aplicativo da web implantado em nosso servidor Tomcat na instalação. Usaremos este aplicativo para testar que nossa configuração está funcionando como pretendido.
Agora podemos ativar e iniciar nosso servidor Tomcat:
# SystemCtl Ativar Tomcat
# SystemCtl Start TomCat
E nosso servidor da web:
# SystemCtl Ativar httpd
# SystemCtl Iniciar httpd
O padrão httpd
A instalação contém os módulos de proxy que precisamos. Para verificar se é assim, podemos consultar o servidor da web com apachectl
:
# apachectl -m | Grep AJP proxy_ajp_module (compartilhado)
cópia de Nota 1.x versões apache usam mod_jk
módulo em vez de proxy_ajp
.
Configuração HTTPD
Os exemplos aplicativos da web implantados no TomCat são publicados após a instalação por padrão em Servidor-URL: 8080/Exemplos
. Solicitações de proxy chegando à porta 80 do servidor (a porta HTTP padrão) solicitando algo do Servidor-URL/Exemplos
ser servido pelo exemplos
Aplicativo da Web implantado no tomcat. Os pedidos que chegam a qualquer outro URL no servidor serão servidos pelo servidor da web. Vamos configurar algum conteúdo estático para mostrar essa funcionalidade.
Em nosso exemplo, o servidor é chamado ws.Foobar.com
. Para que o proxy funcione, crie um arquivo de texto com seu editor favorito no diretório de configuração do servidor da web, que é /etc/httpd/conf.d
em sabores de chapéu vermelho, com a extensão de .conf
. Nossa configuração não precisa que o Tomcat seja acessível diretamente, então usamos LocalHost
como anfitrião -alvo no /etc/httpd/conf.d/exemplo_proxy.conf
arquivo:
Servidorname ws.Foobar.com proxyRequests off proxypass/exemplos ajp: // localhost: 8009/exemplos proxypassverse/exemplos ajp: // localhost: 8009/exemplos
cópia de Para estar do lado seguro, podemos verificar se nossa configuração está correta antes de aplicar com apachectl
:
# apachectl ConfigTest Sintaxe OK
cópia de Se o teste de configuração retornar um erro como o seguinte:
Não foi possível resolver o nome do host ws.Foobar.com - ignorando!
Se significa que nosso Nome do servidor
A diretiva é inválida, pois não pode ser resolvida pelo servidor da web. Ou precisamos registrá -lo no DNS (local ou global) ou fornecer uma linha no /etc/hosts
arquivo que contém o endereço IP público do host seguido pelo nome que demos na configuração acima. Se o arquivo hosts já contiver o IP com outro nome (talvez o nome do host real), podemos adicionar o nome do servidor após o nome do host na mesma linha, a configuração funcionará.
Após o teste bem -sucedido, precisamos aplicar a nova configuração reiniciando o servidor da web:
# SystemCtl Reiniciar httpd
Configuração do tomcat
Com a instalação padrão, o contêiner Tomcat ouvirá solicitações de AJP em todas as interfaces na porta 8009. Isso pode ser verificado no arquivo de configuração principal:
# view/usr/share/tomcat/conf/server.XML […] […]
cópia de Se não precisarmos do contêiner do Tomcat e dos aplicativos para serem acessíveis por si mesmos, podemos definir todos os conectores para ouvir apenas no host:
Endereço do conector = "127.0.0.1 "Port =…"
Para se inscrever, podemos reiniciar o Tomcat com:
# SystemCtl reinicie o tomcat
Em nossa máquina de laboratório, não fará isso, pois precisamos ver que somos servidos o mesmo conteúdo em ambas as portas 80
e 8080
.
Teste
Nossa configuração mínima de proxy AJP está completa, podemos testá -la. Da linha de comando, podemos chamar de exemplos
Aplicação diretamente na porta 8080
:
$ wget http: // ws.Foobar.com: 8080/exemplos --2018-09-13 11: 00: 58-- http: // ws.Foobar.com: 8080/exemplos resolvendo WS.Foobar.com (ws.Foobar.com)… . 10.104.1.165 Conectando -se ao WS.Foobar.com (ws.Foobar.com) | 10.104.1.165 |: 8080… . conectado. Solicitação HTTP enviada, aguardando resposta… . 302 Localização encontrada:/Exemplos/[A seguir] --2018-09-13 11: 00: 58-- http: // ws.Foobar.com: 8080/ exemplos/ reutilizando a conexão existente com WS.Foobar.com: 8080. Solicitação HTTP enviada, aguardando resposta… . 200 OK Comprimento: 1253 (1.2k) [texto/html] Salvando para: 'Exemplos' 100%[===================================== =================================================== =================================================== ===================================>] 1.253 --.-K/S em 0s 2018-09-13 11:00:58 (102 MB/S)-'Exemplos' salvos [1253/1253]
cópia de E veja o conteúdo fornecido:
$ exemplos de cauda Exemplos Apache Tomcat
- Exemplos de servlets
- Exemplos JSP
- Exemplos WebSocket (JSR356)
- Exemplos de webSocket usando a API proprietária de Apache Tomcat depreciada