La diferencia entre Apache y Tomcat y por qué deben trabajar juntos.


Fecha de publicación:1 de enero de 2021.



INFOMARTION > La diferencia entre Apache y Tomcat y por qué deben trabajar juntos.

Resumen.

Me gustaría describir las diferencias entre Apache y Tomcat y por qué es necesario vincularlos, para lo que no pude encontrar una respuesta satisfactoria cuando era nuevo, incluso después de preguntar a mis superiores e investigar en Internet. A veces se dice que Apache es un servidor web (ejecuta el procesamiento estático) y Tomcat es un contenedor de servlets (ejecuta el procesamiento dinámico) (como me dijo un colega senior cuando era nuevo), pero Tomcat también tiene funciones de servidor web si se examina cuidadosamente. Entonces se podría pensar que Tomcat es todo lo que se necesita. Esto finalmente nos lleva a la pregunta de por qué Apache y Tomcat necesitan estar unidos. Para aquellos que lo hacen, me gustaría explicar las diferencias entre Apache y Tomcat y por qué necesitan trabajar juntos.

Índice de contenidos

  1. Razones para vincular Apache y Tomcat
  2. Características de Apache
  3. Características de Tomcat
  4. consideración
  5. resumen

1. Razones para vincular Apache y Tomcat

La primera conclusión que se extrae es la diferencia en la especialización de los roles. Apache se especializa en funciones de servidor web, mientras que Tomcat se especializa en el procesamiento dinámico mediante Java.

La razón para escribir que hay una diferencia en la especialización es que el propio Tomcat también tiene funciones como servidor web. Esto puede ser un poco extremo, pero si hay un sistema en el que Apache y Tomcat están vinculados, no es imposible realizar casi el mismo sistema usando sólo Apache y sólo Tomcat.

1-1. ¿Cuáles son las diferencias de experiencia?

Al considerar las diferencias en la especialización de los roles, creemos que es difícil de entender porque la comparación se hace de repente entre Apache y Tomcat. Es más fácil de entender si se piensa en términos de servidores Tomcat y DB. Esto puede sonar extremo, pero es posible crear una aplicación usando sólo Tomcat sin configurar un servidor de BD. Por ejemplo, podría gestionar la información de los usuarios en xml o en propiedades y crear una aplicación que autentique el inicio de sesión basándose en esa información. Sin embargo, en realidad, si se observan los sistemas web en general, la mayoría de los sistemas gestionan la información de los usuarios en una BD y remiten los datos de Tomcat al servidor de la BD. Si piensas en el por qué, es porque puedes desarrollar aplicaciones más eficientemente de esa manera.

A veces la gente explica las "ventajas" y "desventajas" de la cooperación entre Apache y Tomcat, pero no se trata de ventajas y desventajas. Cuando se les pregunta por las "ventajas" y "desventajas" de vincular los servidores Tomcat y DB, responden que, para empezar, las funciones son diferentes. Lo mismo ocurre con Apache y Tomcat, que tienen roles diferentes para empezar.

1-2. ¿Qué es Apache?

Habiendo mencionado que los roles son diferentes, ahora me gustaría explicar cuáles son los roles de Apache y Tomcat.

Una vez más, Apache se conoce oficialmente como Apache HTTP Server. Apache es un servidor web, pero en pocas palabras, su función es analizar las peticiones.

En concreto, se trata de.

  • Filtro (permitir/denegar solicitudes) para direcciones IP específicas
  • Redirección para URLs específicas.
  • Rechazo de URLs específicas
  • Cifrado de las comunicaciones mediante SSL
  • Asignación de procesos a servidores específicos bajo petición

Lo anterior es sólo un ejemplo, y hay más funciones, pero en resumen, el papel de Apache (el servidor web) es cómo manejar las solicitudes recibidas de los usuarios.

Es el trabajo de Tomcat decidir qué tipo de respuesta hacer en base a la solicitud específica. El punto que no debe malinterpretarse es que Apache no prohíbe la creación de respuestas. Al igual que Tomcat trabaja con un servidor de bases de datos y mantiene datos simples (por ejemplo, listas de mensajes) en el lado de Tomcat, Apache no tiene ningún problema en implementar páginas dinámicas siempre que sean respuestas simples. La clave está en lo que se puede manejar de forma más eficiente y ordenada.

1-3. ¿Qué es Tomcat?

El nombre oficial de Tomcat es "Apache Tomcat". Tomcat es un contenedor de servlets, pero para explicar su papel en pocas palabras, es responsable del procesamiento dinámico basado en las solicitudes.

En concreto, se trata de.

  • Registrar los datos a partir de la información solicitada.
  • Crear páginas y respuestas dinámicas basadas en la información de la solicitud.
  • Determinar el usuario en base a la información de la solicitud y crear una respuesta diferente para cada usuario.

Básicamente, el trabajo de Tomcat es devolver al usuario páginas que no son fijas.

Este es otro punto que no debe malinterpretarse: no significa que las páginas estáticas (por ejemplo, html) no deban colocarse en Tomcat. Si la filosofía de diseño del equipo es gestionar todo el html en el lado de Tomcat, no hay problema en colocar páginas estáticas en Tomcat. También en este caso, el punto clave es lo que se puede manejar de forma más eficiente y ordenada.

2. Características de Apache

Me gustaría presentar algunas de las características de Apache. Apache proporciona una serie de módulos (archivos en los que se empaquetan los procesos). Cargue el módulo y describa los valores de configuración necesarios para utilizar sus funciones. Me gustaría describir los módulos disponibles.

2-1. Capacidad para procesar solicitudes de forma simultánea.

El módulo "mpm_prefork_module" es el módulo correspondiente. También existen "mpm_worker_module" y "mpm_event_module", aunque la funcionalidad es casi idéntica.

Establezca los valores de la siguiente manera.

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

Cuando se describe de esta manera, cuando se inicia el servidor, se pueden iniciar "5" procesos y "5" pueden ser procesados en paralelo al mismo tiempo, y hasta "250" pueden ser procesados en paralelo cuando llega un gran número de solicitudes.

2-2. Reescribir la URL de la solicitud

El módulo 'rewrite_module' es el módulo correspondiente.

Establezca los valores de la siguiente manera.

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

Si se establece de esta manera, si una solicitud entra en http, se devolverá al usuario para que la solicite de nuevo en https.

2-3. Control de acceso por dirección IP

Este es ligeramente diferente del módulo, pero controla el acceso por dirección IP.

La siguiente descripción impedirá el acceso desde IPs distintas de "1.0.16.0/20", "1.0.64.0/18" y "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

Me gustaría explicar la funcionalidad de Tomcat.

3-1. Capacidad para devolver páginas web de forma dinámica utilizando Java.

La experiencia de Tomcat reside en su "capacidad para devolver páginas web de forma dinámica utilizando Java". Por lo general, no se crea todo el procesamiento de Java por sí mismo, sino que se utiliza en conjunto con las bibliotecas de Java (módulos en Apache) que son hechas por varias organizaciones.

  • Generar dinámicamente respuestas basadas en los parámetros de la solicitud del usuario.
  • Salida de archivos de registro en un formato específico.
  • Crear y editar archivos de Excel
  • Determina si el archivo zip tiene contraseña.

Procesos complejos como los anteriores se pueden lograr simplemente poniendo una biblioteca y llamando a la biblioteca. El papel de Tomcat es facilitar la implementación de estos complejos procesos.

4. consideración

Hemos explicado que la diferencia entre Apache y Tomcat es la "especialización de roles", pero tanto Apache (Apache HTTP Server) como Tomcat (Apache Tomcat) son creados por la misma Apache Software Foundation. La razón puede ser que Apache está escrito en C y Tomcat en Java, que son lenguajes diferentes, pero la razón por la que no se combinan en uno solo puede ser porque desempeñan papeles diferentes."

La página de inicio de Tomcat era bastante extensa, y también funciona bien como servidor web.

http://tomcat.apache.org/

  • SSL/TLS (cifrado de las comunicaciones)
  • SSI (la capacidad de incrustar diferentes HTML dentro de HTML)
  • Rewrite (función de reescritura de URL)

Apache es un servidor web de alto rendimiento, pero hay muchas características que no se utilizan, por lo que la Apache Software Foundation puede haber hecho que Tomcat pueda funcionar de forma independiente sin Apache. Sin embargo, sigue siendo mejor incluir Apache si necesita un control detallado de las peticiones.

5. resumen

Se describen las diferencias entre Apache y Tomcat y por qué deben trabajar juntos.

Me pareció que la respuesta a esta pregunta era difícil de entender porque Tomcat es un servidor web con todas las funciones. Es bueno pensar en la cooperación entre Apache y Tomcat, teniendo en cuenta que la función de Tomcat como servidor web no es su función principal (no está especializado como servidor web).

Gracias por mirar hasta el final.