阿帕奇的替代品

Mar*_*ing 15 tomcat glassfish jetty nginx apache-2.2

我们当前的堆栈是 Apache + Tomcat + MySQL,使用ProxyPassAJP 将请求从 Apache 发送到 Tomcat。我们还在相同的站点上为 Wordpress 运行 PHP,因此需要工作.htaccess文件。为了解决一个烦人的问题(请参阅此堆栈溢出页面),我们正在考虑替代堆栈。请注意,我们通常非常喜欢 apache,但这个问题是个障碍:如果我们不能修复它,我们就不能使用 Apache。

替代方案包括:

  • 单独的Tomcat
  • Glassfish(Java 应用服务器,从 Tomcat 分叉)
  • 码头(Java 服务器)
  • 树脂
  • LightTPD(轻量级 HTTP 服务器)
  • Nginx(轻量级 HTTP 服务器)

在我看来,解决方案分为两个阵营:纯 Java 阵营,如 Glassfish;或者分裂阵营,比如我们现在的Apache + Tomcat。我们喜欢纯 Java 解决方案的想法,因为更少的活动部件意味着更少的错误;但是它们中的任何一个都支持 PHP、.htaccess文件等吗?

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

人们建议什么选择?

小智 7

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

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

原因:

  1. 它是迄今为止最成熟、最稳定的 Tomcat 连接器。
  2. 两个 AJP 实现都没有得到一致的开发;这两个项目都遇到了一些停止/启动。
  3. 在这种情况下,NBIO 不会比阻塞 IO 带来任何现实世界的性能提升。

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

/ 里奇

  • ProxyPreserveHost On 可能是您正在寻找的。http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypreservehost (2认同)

Jau*_* Ho 5

我目前的首选堆栈是使用 nginx 作为 Apache 的替代品。在需要的地方,php-fpm 填补了对 PHP 的需求。这样的设置非常适合部署应用程序,例如 Rails、Magento 和 SugarCRM。