NGINX+PHP好,还是NGINX+APACHE+PHP好

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NGINX+PHP好,还是NGINX+APACHE+PHP好相关的知识,希望对你有一定的参考价值。

如果单台服务器的话,nginx+APACHE+php
纯粹多此一举,多了一次请求转发,效率肯定低,而且现在FPM已经足够稳定。完全没必要。
只有多台服务器集群的话,apache+nginx反代才有意义.NGINX+APACHE+PHP
这种架构存在的原因除了apache出现比较早外,还因为当时FPM不如module模式稳定。
不见得。Nginx在前面实现动静分离,静态内容由Nginx负责,动态请求则交给后面的PHP应用服务器Apache(libphp5.so)处理。Apache专心处理PHP,这不挺好吗?
Nginx+PHP-FPM相对Nginx+Apache(libphp5.so)来说,PHP-FPM更灵活,在php-fpm.conf里可以配置监听不同端口的多个pool,每个pool又可以自由配置PHP-FPM工人进程数pm.max_children,一个pool里的工人进程繁忙不会影响到另一个pool。在Nginx里可以配置应用的不同部分使用不同的pool,而且一台服务器上可以运行多个版本的PHP-FPM,借助Nginx的upstream功能,PHP-FPM非常容易横向扩展。
新浪微博和百度贴吧都在使用Nginx+PHP-FPM的架构,PHP-FPM已经足够稳定。
ab同样并发数压力测试ZF下RPS(请求每秒)对比:

参考技术A nginx相对于apache的优点:
轻量级,同样起web 服务,比apache 占用更少的内存及资源
抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
高度模块化的设计,编写模块相对简单
社区活跃,各种高性能模块出品迅速啊
apache 相对于nginx 的优点:
rewrite ,比nginx 的rewrite 强大
模块超多,基本想到的都可以找到
少bug ,nginx 的bug 相对较多
超稳定
作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,Nginx还可作为负载均衡服务器
最核心的区别在于apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程
对web server的需求决定你的选择。大部分情况下nginx都优于APACHE,比如说静态文件处理、PHP-CGI的支持、反向代理功能、前端Cache、维持连接等等。在Apache+PHP(prefork)模式下,如果PHP处理慢或者前端压力很大的情况下,很容易出现Apache进程数飙升,从而拒绝服务的现象。所以因此可以同时采用apache和nginx来互相弥补,借助apache的安全稳定,并依靠nginx的负载均衡来实现最终的目的
参考技术B NGINX+APACHE+PHP会更好,因为可以充分利用NGINX的“反向代理”技术。将静态文件由NGINX处理,动态文件(PHP)由APACHE处理,这是最高效的处理方式。
但是,一般网站都不需要这么做,因为没有高并发的情况下,这样做并不能体现非常大的优势。
如果是商城,比较注重速度的,就使用NGINX+PHP;如果是政府网站等,比较注重稳定性的,就使用APACHE+PHP。
当然,如果不嫌麻烦,完全可以搭建NGINX+APACHE+PHP的环境。本回答被提问者和网友采纳

nginx/apache/php 与 nginx/php

【中文标题】nginx/apache/php 与 nginx/php【英文标题】:nginx/apache/php vs nginx/php 【发布时间】:2011-05-05 19:28:35 【问题描述】:

我目前有一台带有 nginx 的服务器,它反向代理到 apache(同一台服务器)来处理 php 请求。我想知道我是否放弃了 apache,所以如果我看到任何形式的性能提升,我会运行 nginx/fastcgi 到 php。我假设我会因为 Apache 相当臃肿,但同时我不确定 fastcgi/php 的可靠性如何,尤其是在高流量情况下。

我的网站每月获得大约 200,000 名唯一身份访问者,每月从搜索引擎抓取大约 6,000,000 次页面。这个数字正在稳步增加,所以我正在考虑性能选项。

我的网站在代码方面非常优化,没有任何缓存(也不想要),每个页面最多有 2 个 sql 查询,其他表没有任何连接,索引也很完美。

大约一年后,我将重写所有内容以使用 ClearSilver 作为模板,然后可能使用 python 或 c++ 来获得极好的性能。

我想我或多或少地从任何熟悉 nginx/fastcgi 并且愿意提供一些基准的人那里寻求任何建议。我的站点是一台带有 1 个四核至强、8gb 内存、150gb velociraptor 驱动器的服务器。

【问题讨论】:

【参考方案1】:

nginx 肯定会比 Apache 运行得更快。我无法谈论 fastcgi,因为我从未将它与 nginx 一起使用,但这个解决方案似乎在多台服务器上更有意义(一个用于静态内容,一个用于 fastcgi/PHP)。

如果您真的以性能为目标——甚至考虑 C/C++——那么您应该尝试 G-WAN,这是一种提供(非常快)C 脚本的一体化服务器。

G-WAN 不仅内存占用小得离谱 (120 KB),而且它的扩展能力也无与伦比。如果您从 PHP 迁移,您还有很多工作要做,但您可以从性能关键任务开始并逐步迁移。

我们已经跳槽了,不能考虑回到 Apache!

【讨论】:

G-WAN 看起来非常非常漂亮!您是否碰巧知道它每秒可以处理多少个连接? 我测得 G-WAN 每秒有 200,000 个请求。鉴于动物是一个 32 位进程这一事实,当它以 64 位代码运行时还有进步的空间(所有其他 Web 服务器在 64 位编译时比在 32 位编译时要快得多)。跨度> 并非总是如此。在非常重的并发负载(动态页面)上,Apache 在大型多核机器上的运行速度比 nginx 快得多。 Nginx 适用于静态文件或我们将其用作代理时。 @iddqd:你能提供一些支持吗? @Wernight:只有自己的测试。一年前我在 64cpu 机器上测试过它。并行度从 100 到 500。与 Apache 相比,Nginx 处理小型静态文件的速度要快得多,并且不使用 RAM。测试 Nginx 时,中大文件速度没有差别,内存占用大。服务动态页面 Django (fastcgi/mod_python) (parallelizm 500 sim. conn.) session,cache,sometimes sql,Nginx 比 Apache 慢两倍。【参考方案2】:

这是一个图表,显示了 nginx、apache 和 g-wan 各自的性能:

g-wan.com/imgs/gwan-lighttpd-nginx-cherokee.png

apache 似乎并不领先(这是一个 -Quad XEON @ 3GHz)。

【讨论】:

请注意,此图表直接来自g-wan,因此更有可能偏向g-wan。【参考方案3】:

这是 g-wan 与 nginx、varnish 等的独立基准测试http://nbonvin.wordpress.com/2011/03/14/apache-vs-nginx-vs-varnish-vs-gwan/

g-wan 每秒处理更多请求,而 CPU 时间更少。

【讨论】:

你怎么知道它是独立的? ;) ...只是好奇。 @STATUS_ACCESS_DENIED,g-wan 和 nginx 作者对该博客文章发表了评论,甚至建议对其服务器的基准进行一些调整;这对我来说表明基准没有缺陷并且做得很公平。复制那篇文章开头详述的基准测试,并让我们知道你得到了什么,独立;),g-wan 现在声称比 nginx 更好的内存管理,它消耗的内存是基准测试中所有其他 Web 服务器最少的。【参考方案4】:

NGINX 是当今网络服务器的最佳选择。

    Apache 和 NGINX 的主要区别在于它们的设计 建筑学。 Apache 使用流程驱动的方法并创建一个 每个请求的新线程。而 NGINX 使用事件驱动 在一个线程中处理多个请求的架构。 就静态内容而言,Nginx 超越了 Apache。 两者都擅长处理动态内容。 Apache 可在所有操作系统上运行,例如 UNIX、Linux 或 BSD 和 完全支持 Microsoft Windows 和 NGINX 还可以在多个平台上运行 现代类 Unix 系统并支持 Windows,但它的 Windows 上的性能不如 UNIX 平台上的稳定。 Apache 允许在每个目录的基础上通过以下方式进行附加配置 .htaccess 文件。 Nginx 不允许额外配置的地方。 请求解释-Apache pass 文件系统位置。 Nginx 传递 URI 以解释请求。 Apache有60个官方动态加载模块,可以 打开/关闭。Nginx 有 3rd Party 核心模块(不是动态的 loadable).NGINX 提供了 Web 服务器的所有核心功能, 在不牺牲轻量级和高性能品质的情况下 这使它成功。 Apache 支持通过动态模块自定义 Web 服务器。 Nginx 不够灵活,无法支持动态模块和加载。 Apache 确保在其服务器上运行的所有网站都是 免受任何伤害和黑客攻击。 Apache 提供了以下配置提示 DDoS 攻击处理,以及 mod_evasive 模块 响应 HTTP DoS、DDoS 或暴力攻击。

何时选择 Apache 而不是 NGINX?

当需要 .htaccess 文件时,您可以覆盖系统范围的设置 以每个目录为基础。 在共享主机环境中,Apache 工作得更好,因为它 .htaccess 配置。 如果出现功能限制 - 使用 Apache

何时选择 NGINX 而不是 Apache

快速静态内容处理 非常适合高流量网站

同时使用两者时

用户可以在Apache前面使用Nginx作为服务器代理。

【讨论】:

以上是关于NGINX+PHP好,还是NGINX+APACHE+PHP好的主要内容,如果未能解决你的问题,请参考以下文章

Web服务器该选择apache还是nginx?

nginx和apache有啥区别,我该用哪种?

nginx 能与apache 能共存吗

Nginx+apache/Tomcat实现反向代理与动静分离

如何设置nginx和apache

如何配置高性能的web服务器apache,nginx