Alternativas a Apache

15

Nuestra pila actual es Apache + Tomcat + MySQL, usando ProxyPassAJP para disparar solicitudes de Apache a Tomcat. También ejecutamos PHP para Wordpress en los mismos sitios, por lo que necesitamos .htaccessarchivos de trabajo . En respuesta a un problema molesto (vea esta página de Desbordamiento de pila) , estamos considerando pilas alternativas. Tenga en cuenta que generalmente nos gusta bastante Apache, pero este problema es un obstáculo: si no podemos solucionarlo, no podemos usar Apache.

Las alternativas incluyen:

  • Tomcat solo
  • Glassfish (servidor de aplicaciones Java, bifurcado de Tomcat)
  • Jetty (servidor Java)
  • Resina
  • LightTPD (servidor HTTP ligero)
  • Nginx (servidor HTTP ligero)

A mi modo de ver, las soluciones se dividen en dos campos: el campo puro de Java, como Glassfish; o el campo dividido como nuestro actual Apache + Tomcat. Nos gusta la idea de una solución Java pura, ya que menos partes móviles deberían significar menos errores; pero, ¿alguno de ellos admite PHP, .htaccessarchivos, etc.?

En teoría, podríamos hacer la división de la otra manera: tener un front-end simple que representa a Apache solo en aquellos bits que necesitan esas características, pero en la práctica eso sería el 80% de las solicitudes.

¿Qué opciones sugieren las personas?

Marcus Downing
fuente
¿Te importaría elaborar un poco más tu "molesto problema de stop-showper" o es completamente irrelevante?
marca el
Siga el enlace a la página de StackOverflow para obtener más detalles. Es un error donde los clientes reciben la respuesta incorrecta, a veces obteniendo archivos JS o CSS en lugar de HTML, o simplemente la página incorrecta por completo. Hemos probado prácticamente todo lo que se nos ocurre en Apache y Tomcat.
Marcus Downing

Respuestas:

7

Sospecho firmemente que su problema está relacionado con AJP.

Estuve en un curso con uno de los principales desarrolladores de Tomcat hace unas semanas (lo estaba ejecutando), su consejo era evitar AJP y mod-JK, etc., y seguir con HTTP de mod-proxy regular.

Razones:

  1. Es, con mucho, el conector Tomcat más maduro y estable.
  2. Ninguna implementación de AJP ha sido desarrollada consistentemente; Ambos proyectos han sufrido un poco de stop / start.
  3. NBIO no genera ninguna ganancia de rendimiento en el mundo real sobre el bloqueo de E / S, en esta situación.

Mi consejo, intente usar HTTP mod-proxy regular con su configuración actual. Es el menor cambio para usted y lo llevará a la arquitectura de implementación de Tomcat más utilizada y estable.

/ Richy


fuente
Supongo que podría intentarlo. ¿Tiene algún número difícil sobre la diferencia de rendimiento?
Marcus Downing
¿Cómo puedo usar mod-proxy normal y aún así obtener los nombres de host correctos que llegan a Tomcat? Estoy bastante seguro de que todos están siendo recibidos como localhost en este momento.
Marcus Downing
2
ProxyPreserveHost On es probablemente lo que estás buscando. httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypreservehost
Stephen Veiss
5

Mi pila preferida actual es usar nginx como reemplazo de Apache. Donde sea necesario, php-fpm llena la necesidad de PHP. Tal configuración ha funcionado bien para implementar aplicaciones como Rails, Magento y SugarCRM.

Jauder Ho
fuente
4

Glassfish será más escalable que Tomcat porque utiliza Grizzly (basado en NIO). No tiene muchas opciones aparte de una variación de Tomcat, Jetty o Glassfish debido al requisito de Java. PHP se puede ejecutar con Quercus , pero puede ser mejor simplemente implementarlo con Nginx.

Joshua
fuente
2

Hay implementaciones de PHP en Java, la que conozco (pero no he usado) es esta . Hay una publicación de blog sobre cómo instalarlo en GlassFish (incluido WordPress), pero supongo que la instalación en tomcat es la misma. Con respecto al .htaccess, no ha escrito exactamente lo que tiene allí, pero si es para reescribir URL, existe UrlRewriteFilter que hace el mismo trabajo con la misma semántica.

David Rabinowitz
fuente
Los archivos .htaccess son en su mayoría los generados por WordPress, por lo que contienen algunas RewriteRules simples
Marcus Downing el
Supongo que PHP no los admitirá, pero no debería ser difícil tener un proceso que los lea y pase las definiciones al filtro.
David Rabinowitz el