优缺点对比分析:Apache和Nginx

Bignet /2019-08-08

Nginx或Apache,我应该选择哪个Web服务器?这是我们的香港服务器租用客户经常面临的问题,特别是当他们开始建立业务或他们现有的Web服务器出现问题时。作为网络托管,专业的香港服务器租用托管服务提供商的技术支持服务,安装,配置和管理网络服务器是我们客户的一项重要任务。

 

Web服务器中,Apache和Nginx是Linux平台上的顶级供应商。但是盲目地选择Web服务器并不是这样。您要使用的Web服务器的选择取决于您运行的网站类型和服务器规范。在我们管理的香港服务器中,我们根据七个主要方面确定Web服务器。

 Web服务器

稳定性

 

由于内存不足,您的服务器是否经常崩溃?您不能只为您的香港服务器添加越来越多的内存,因为它不便宜或不是永久修复。

 

内存不足的主要原因是Web服务器。在内存使用方面,与Nginx Web服务器相比,Apache是流氓。 Apache配置为通过为每个连接创建进程来处理连接。这些单线程进程中的每一个都分配了一定量的内存。因此,当流量激增时,将会有太多的Web服务器请求进入。这会导致更多进程被激活,从而导致内存使用并导致服务器崩溃。

 

通过将Apache的MPM模块从pre-fork切换到worker,我们可以减少内存开销。但是如果内存仍然存在问题,我们将考虑切换到Nginx Web服务器。 Nginx使用单个线程来处理Web服务器连接。即使连接增加,也不会生成新线程。这有助于节省内存并避免崩溃。

 

因此,对于在内存受限的服务器实例(如VPS)中运行网站的Web托管提供商,我们将Nginx配置为Web服务器以避免崩溃。

 

速度

 

Apache Web服务器基于进程。但Nginx基于事件。因此,当Web服务器请求数量增加时,Apache必须启动更多进程。进程数量的增加会使CPU过载。 Web服务器性能受到影响。由于流量,网站开始减速,并且需要很长时间才能加载。

 

Nginx旨在即使在交通激增的情况下也能提供稳定性。它只需要为每个CPU运行一个进程而不是每个连接一个进程。由于其基于事件的设计结构,Nginx可以处理比Apache可以处理的请求多四倍的请求。这有助于避免服务器中的负载高峰。因此,对于必须处理不断增加的Web流量的服务器,我们将Nginx配置为Web服务器。对于具有稳定流量和CPU使用率的服务器,Apache足以处理请求。 

    

可扩展性

 

Apache使用进程来处理Web服务器连接。因此,与Apache Web服务器的可能连接数量是有限的。但在Nginx中,每个工作进程可以同时处理数千个Web服务器连接。在硬件限制内,Nginx可以轻松扩展以适应不断增长的流量,这是Apache无法做到的。

 

安全

 

Apache和Nginx都有一个安全的代码库,但它们间歇性地容易受到安全漏洞的攻击。凭借其集中的单一配置管理,Nginx比Apache更安全。在我们的托管Web服务器中,我们在Apache和Nginx中配置了其他安全模块和强化工具,以进一步保护它们免受攻击。

 

定制

 

Apache中,有一个名为httpd.conf的主配置文件,用于全局服务器配置。此外,用户可以选择管理自己的配置参数。这是在目录中的.htaccess文件的帮助下完成的。用户可以使用此文件来设置重定向规则,密码保护,目录列表,限制等。

 

但是,在Nginx中,nginx.conf文件只能集中配置。所有更改都将由服务器管理员进行,并且各个用户将无法覆盖这些设置。因此,在共享Web托管(例如共享虚拟主机)中,每次都很难调整主配置文件中的每个用户设置,并且Apache具有.htaccess自定义,因此Apache是首选。但是,解析目录级配置文件可能是Apache Web服务器的开销,进一步降低了速度。在这种情况下,我们将根据用户要求限制此功能。

 

网站类型

 

有两种类型的网站文件:静态和动态。静态文件包括CSS,JS,图像等,无需任何实时处理。动态页面只能在处理后生成。这些包括诸如PHP,Python或其他应用程序(如Nodejs)之类的文件。

 

Apache Web服务器能够熟练地解析和执行各种脚本语言,从而可以非常快速地处理动态页面。 Nginx没有这种有效处理动态页面的能力。但它可以快速提供静态网站内容及其静态内容缓存。

 

在只有Nginx Web服务器的香港服务器中,我们配置PHP-FPM应用程序来处理像PHP这样的动态内容。为了进一步加快网站速度,我们配置了Varnish或Memcached等缓存工具。

 

负载均衡

 

许多方案中的首选负载均衡器设置(例如,运行多个应用程序实例或分布式Web服务器要求)涉及高Web流量。 Nginx可以轻松配置为负载均衡器,以收集Web流量并将其分发到适当的Web服务器并解析生成的输出。静态页面由Nginx本身处理,动态页面请求被传递到适当的Web服务器。此负载平衡有助于提高网站速度,而不会产生资源开销。通过在Nginx中配置缓存,我们进一步简化了负载均衡器设置,以减少站点延迟并提高服务器性能。

 

以上是我们介绍给您的Nginx和Apache之间的标准Web服务器标准之间的区别。但在现实生活中,这些参数可能不那么清晰,难以区分。在大多数情况下,网站可以是静态和动态页面的组合,而不仅仅是一种类型。在这种情况下,我们使用Nginx和Apache的组合。我们将Nginx配置为反向代理。 Nginx将充当收集Web服务器请求的前端。静态页面由Nginx本身处理。诸如PHP,Python等动态页面被移交给Apache Web服务器,后者位于后端并侦听另一个端口。然后Apache的结果通过Nginx移交给客户端。通过使用Nginx和Apache的反向代理设置,我们可以卸载两台服务器之间的Web流量,并从两台服务器获得最佳结果。

 

  总之,我们在Web服务器中执行进一步调整以提供最佳性能。为确保Web服务器即使在增加的负载下也能正常工作,我们会定期进行压力测试和持续更新。总之,在评估服务器实例类型和业务目的后,我们的支持工程师将建议客户如何在服务器中配置Web服务器。这有助于我们配置快速,稳定,高性能的Web服务器。


新人注册,即送价值满880元现金劵

立即注册>>
客服 电话 反馈 活动 回顶部

服务热线

+852-5764-9835

1对1贴心服务

7*24小时热线