Apache的替代品


15

我们当前的堆栈是Apache + Tomcat + MySQL,使用 ProxyPass AJP将请求从Apache触发到Tomcat。我们还在同一站点上运行PHP for Wordpress,因此需要工作.htaccess文件。为了解决一个令人烦恼的问题(请参见此堆栈溢出页面),我们正在考虑其他堆栈。请注意,我们通常很喜欢apache,但是这个问题是一个阻碍因素:如果我们不能解决它,就不能使用Apache。

备选方案包括:

  • 仅Tomcat
  • Glassfish(Java应用程序服务器,从Tomcat派生)
  • 码头(Java服务器)
  • 树脂类
  • LightTPD(轻量级HTTP服务器)
  • Nginx(轻量级HTTP服务器)

从我的角度来看,解决方案分为两个阵营:纯Java阵营(例如Glassfish);或分裂阵营,例如我们当前的Apache + Tomcat。我们喜欢纯Java解决方案的想法,因为更少的活动部件就意味着更少的出错。但其中任何一个都支持PHP,.htaccess文件等吗?

从理论上讲,我们可以采用另一种方式进行拆分-具有一个简单的前端,仅在需要这些功能的位上代替Apache-但实际上,这是请求的80%。

人们建议什么选择?


您是否愿意再详细说明一下“令人讨厌的节目停止者问题”,还是完全不相关?
在2009年

单击链接到StackOverflow页面以获取更多详细信息。这是一个错误,导致客户端传递的响应错误-有时会获取JS或CSS文件而不是HTML文件,或者只是获取错误的页面。我们已经尝试过可以想到的Apache和Tomcat中的几乎所有内容。
Marcus Downing

Answers:


7

我强烈怀疑您的问题与AJP有关。

几周前,我正在与一位主要的Tomcat开发人员一起上一门课程(他正在运行它),他的建议是避免AJP和mod-JK等,并坚持使用常规的mod-proxy HTTP。

原因:

  1. 它是迄今为止最成熟,最稳定的Tomcat连接器。
  2. 两种AJP实施方式都没有得到一致开发;这两个项目都经历了一些停止/开始。
  3. 在这种情况下,NBIO不会导致实际性能超过阻塞IO。

我的建议是,尝试在当前设置中使用常规的mod-proxy HTTP。这对您来说是最少的更改,它将带您使用最广泛使用且稳定的Tomcat部署体系结构。

/里奇


我想我可以试一试。您对性能差异是否有确切的数字?
马库斯·唐宁

如何使用常规的mod-proxy并仍然获得正确的主机名(通过Tomcat)?我敢肯定,目前他们都被接受为本地主机。
Marcus Downing 2009年

2
ProxyPreserveHost On可能正是您要寻找的。 httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypreservehost
斯蒂芬Veiss

5

我当前的首选堆栈是使用nginx替代Apache。必要时,php-fpm可以满足对PHP的需求。这样的设置非常适合部署Rails,Magento和SugarCRM等应用程序。


4

Glassfish将比Tomcat具有更高的可伸缩性,因为它使用了Grizzly(基于NIO)。由于Java的要求,除了Tomcat,Jetty或Glassfish的变体之外,您没有太多选择。可以使用Quercus运行PHP ,但最好仅使用Nginx进行部署。


2

Java上有PHP实现,我知道(但尚未使用)的是这一实现。有一篇关于如何在GlassFish(包括WordPress)上安装它的博客文章,但我想在Tomcat上的安装是相同的。关于.htaccess,您尚未编写出确切的内容,但是如果用于URL重写,则存在 UrlRewriteFilter,它以相同的语义执行相同的工作。


.htaccess文件主要是由WordPress生成的文件,因此它们包含一些简单的RewriteRules
Marcus Downing 2009年

我想PHP将不支持它们,但是拥有读取它们并将定义传递到过滤器的过程应该不难。
David Rabinowitz,2009年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.