A diferença entre Apache e Tomcat e porque precisam de trabalhar em conjunto.


Data de Publicação:1 de Janeiro de 2021.



INFOMARTION > A diferença entre Apache e Tomcat e porque precisam de trabalhar em conjunto.

Visão geral.

Gostaria de descrever as diferenças entre Apache e Tomcat e porque é que eles precisam de estar ligados, para as quais não consegui encontrar uma resposta satisfatória quando era novo, mesmo depois de perguntar aos meus idosos e de pesquisar na Internet. Por vezes diz-se que o Apache é um servidor web (executa processamento estático) e Tomcat é um recipiente servlet (executa processamento dinâmico) (como me foi dito por um colega sénior quando era novo), mas Tomcat também tem funções de servidor web se for examinado cuidadosamente. Então pensaria que Tomcat é tudo o que precisa. Isto acaba por levar à questão de saber por que razão Apache e Tomcat precisam de estar ligados entre si. Para aqueles que o fazem, gostaria de explicar as diferenças entre Apache e Tomcat e porque precisam de trabalhar em conjunto.

Tabela de Conteúdos

  1. Razões para ligar Apache e Tomcat
  2. Características do Apache
  3. Características de Tomcat
  4. consideração
  5. resumo

1. Razões para ligar Apache e Tomcat

A primeira conclusão a tirar é a diferença na especialização dos papéis. Apache é especializado em funções de servidor web, enquanto Tomcat é especializado em processamento dinâmico usando Java.

A razão para escrever que existe uma diferença na especialização é que o próprio Tomcat também tem funções como servidor web. Isto pode ser um pouco extremo, mas se existe um sistema em que Apache e Tomcat estão ligados, não é impossível realizar quase o mesmo sistema usando apenas Apache e apenas Tomcat.

1-1. Quais são as diferenças em termos de perícia?

Ao considerarmos as diferenças na especialização de papéis, sentimos que isto é difícil de compreender porque a comparação é feita subitamente entre Apache e Tomcat. É mais fácil de compreender se pensarmos em termos de Tomcat e servidores DB. Isto pode parecer extremo, mas é possível criar uma aplicação utilizando apenas Tomcat sem a criação de um servidor DB. Por exemplo, poderia gerir informações do utilizador em xml ou propriedade e criar uma aplicação que autentique o login com base nessas informações. No entanto, na realidade, se olharmos para os sistemas web em geral, a maioria dos sistemas gere a informação do utilizador num BD e encaminha os dados de Tomcat para o servidor do BD. Se pensarmos no porquê, é porque podemos desenvolver aplicações mais eficientemente dessa forma.

Por vezes as pessoas explicam "vantagens" e "desvantagens" relativamente à cooperação entre Apache e Tomcat, mas não se trata aqui de vantagens e desvantagens. Quando questionados sobre as "vantagens" e "desvantagens" de ligar Tomcat e servidores DB, responderiam que os papéis são diferentes para começar. O mesmo se aplica a Apache e Tomcat, que têm papéis diferentes para começar.

1-2. O que é o Apache?

Tendo mencionado que os papéis são diferentes, gostaria agora de explicar quais são os papéis do Apache e do Tomcat.

Mais uma vez, o Apache é oficialmente conhecido como Servidor HTTP Apache. O Apache é um servidor web, mas em poucas palavras, o seu papel é analisar pedidos.

Especificamente, estes são.

  • Filtro (permitir/recusar pedidos) para endereços IP específicos
  • Redireccionar para URLs específicas.
  • Rejeição de URLs específicos
  • Criptografia das comunicações por SSL
  • Atribuição de processos a servidores específicos a pedido

O acima exposto é apenas um exemplo, e há mais funções, mas em suma, o papel do Apache (o servidor web) é como lidar com os pedidos recebidos dos utilizadores.

Cabe ao Tomcat decidir que tipo de resposta dar com base no pedido específico. O ponto que não deve ser mal compreendido é que o Apache não proíbe a criação de respostas. Tal como Tomcat trabalha com um servidor DB e mantém dados simples (por exemplo listas de mensagens) no lado Tomcat, o Apache não tem qualquer problema em implementar páginas dinâmicas desde que sejam respostas simples. A chave é o que pode ser tratado de forma mais eficiente e gerido de forma mais ordenada.

1-3. O que é Tomcat?

O nome oficial para Tomcat é 'Apache Tomcat'. Tomcat é um recipiente de servlet, mas para explicar o seu papel em poucas palavras, é responsável pelo processamento dinâmico com base nos pedidos.

Especificamente, estes são.

  • Dados de registo baseados em informações solicitadas.
  • Criar páginas dinâmicas e respostas baseadas em informações solicitadas.
  • Determinar o utilizador com base nas informações do pedido e criar uma resposta diferente para cada utilizador.

Basicamente, compete a Tomcat devolver ao utilizador páginas que não são páginas fixas.

Este é outro ponto que não deve ser mal compreendido: não significa que as páginas estáticas (por exemplo, html) não devam ser colocadas em Tomcat. Se a filosofia de design da equipa é gerir todos os html do lado Tomcat, não há problema em colocar páginas estáticas no Tomcat. Também neste caso, o ponto-chave é o que pode ser tratado de forma mais eficiente e gerido de forma mais ordenada.

2. Características do Apache

Gostaria de apresentar algumas das características do Apache. O Apache fornece uma série de módulos (ficheiros em que os processos são empacotados). Carregar o módulo e descrever os valores de configuração necessários para utilizar as suas funções. Gostaria de descrever que módulos estão disponíveis.

2-1. Capacidade de processar pedidos em simultâneo.

O módulo "mpm_prefork_module" é o módulo relevante. Há também "mpm_worker_module" e "mpm_event_module", embora a funcionalidade seja quase idêntica.

Definir valores como se segue.

<IfModule mpm_prefork_module>
    StartServers             5
    MinSpareServers          5
    MaxSpareServers         10
    MaxRequestWorkers      250
    MaxConnectionsPerChild   0
</IfModule>

Quando descrito desta forma, quando o servidor é iniciado, "5" processos podem ser iniciados e "5" podem ser processados em paralelo ao mesmo tempo, e até "250" podem ser processados em paralelo quando entra um grande número de pedidos.

2-2. Reescrever o URL do pedido

O módulo 'rewrite_module' é o módulo relevante.

Definir valores como se segue.

<IfModule rewrite_module>
  RewriteEngine on
  RewriteCond %{HTTPS} off
  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

Se isto for declarado desta forma, se um pedido chegar em http, será devolvido ao utilizador para que este o solicite novamente em https.

2-3. Controlo de acesso por endereço IP

Este é ligeiramente diferente do módulo, mas controla o acesso por endereço IP.

A seguinte descrição impedirá o acesso de outros IPs que não "1.0.16.0/20", "1.0.64.0/18" e "1.1.64.0/18".

<Directory />
    order deny,allow
    deny from all
    allow from 1.0.16.0/20
    allow from 1.0.64.0/18
    allow from 1.1.64.0/18
</Directory>

3. Características de Tomcat

Gostaria de explicar a funcionalidade de Tomcat.

3-1. Capacidade de retornar páginas web de forma dinâmica utilizando Java.

A perícia de Tomcat reside na sua "capacidade de devolver páginas web dinamicamente usando Java". Geralmente, não se cria todo o processamento Java sozinho, mas utiliza-o em conjunto com bibliotecas Java (módulos no Apache) que são feitas por várias organizações.

  • Gerar dinamicamente respostas com base em parâmetros de pedido do utilizador.
  • Ficheiros de registo de saída num formato específico.
  • Criar e editar ficheiros Excel
  • Determinar se o ficheiro zip tem uma palavra-passe.

Processos complexos como os descritos acima podem ser alcançados simplesmente inserindo uma biblioteca e chamando a biblioteca. O papel de Tomcat é o de facilitar a implementação destes complexos processos.

4. consideração

Explicámos que a diferença entre Apache e Tomcat é "especialização de papéis", mas ambos Apache (Apache HTTP Server) e Tomcat (Apache Tomcat) são criados pela mesma Fundação Apache Software. A razão pode ser que o Apache está escrito em C e Tomcat em Java, que são linguagens diferentes, mas a razão pela qual não estão combinados numa só pode ser porque desempenham papéis diferentes".

A página inicial de Tomcat era bastante extensa, e também funciona bem como um servidor web.

http://tomcat.apache.org/

  • SSL/TLS (encriptação das comunicações)
  • SSI (a capacidade de incorporar diferentes HTML dentro do HTML)
  • Reescrever (função de reescrita de URL)

O Apache é um servidor web de alto desempenho, mas há muitas características que não são utilizadas, pelo que a Fundação Apache Software pode tê-lo feito para que Tomcat possa funcionar independentemente sem Apache. No entanto, é ainda melhor incluir o Apache se precisar de um controlo detalhado do pedido.

5. resumo

São descritas as diferenças entre Apache e Tomcat e porque precisam de trabalhar em conjunto.

Pensei que a resposta a esta pergunta era difícil de compreender porque Tomcat é um servidor web completo. É bom pensar na cooperação entre Apache e Tomcat, tendo em conta que a função de Tomcat como servidor web não é a sua função principal (não é especializado como servidor web).

Obrigado por ter observado até ao fim.