Web服务器是直接影响网站性能的关键因素,也是每个站长选择网站运营环境时必然考虑的问题。目前Web服务器市场产品众多,最为主流和代表性的当属Apache、Nginx以及微软的IIS。本文目的是通过Apache和Nginx进行对比,从而帮助广大用户们能够选择适合自己的Web服务器。
一、简介
Apache:
Apache创建于1995年,并从 1999 年开始在 Apache 软件基金会旗下进行开发。Apache灵活、高效,拥有丰富的扩展模块,以及活跃的社区支持,成为目前世界上最为主流的开源免费的Web服务器软件。
Nginx:
Nginx是由俄罗斯软件工程师Igor Sysoev编写的免费开源Web服务器。自从2004年上市以来,nginx专注于高性能,高并发性和低内存使用。并且其在负载均衡,缓存,访问和带宽控制以及与各种应用程序高效集成等方面的特性,都使得它逐步深受广大用户青睐。
下面是2017年4月份更新的web服务器市场份额对比图:
数据来源:https://news.netcraft.com/archives/2017/04/21/april-2017-web-server-survey.html
二、对比
虽然Apache和Nginx各自的背景不同,但他们的作用目的是一致的,简单说就是接收用户请求,然后处理请求,最后将处理结果返回给用户。
1.链接处理
Apache和Nginx最大的不同在于它们对连接的处理方式。Apache提供一系列多重处理模块,通过这些多重处理模块来使用操作系统的资源,对进程和线程池进行管理,控制处理用户请求。
Apache提供了三种多重处理模块:mpm_prefork、mpm_worker、mpm_envent,下面我们做简要说明对比。
mpm_prefork:模块产生众多子进程,每个子进程是单线程的,每个线程链接一个请求,如此一对一的关系。所以如果请求数大于进程数时,服务器的性能就表现得差强人意了。
mpm_worker:与prefork不同,worker中子进程是多线程的,每个线程管理一个用户连接。线程数要多于进程数量,这也就意味着新的连接能立刻得到一个空闲的线程,而不用等待进程空闲。
mpm_event:该模块与worker相似,区别在于event可以处理长连接(keep-alive),以避免线程被请求长期占用而造成资源浪费,同时也增强了高并发场景下的请求处理能力。
与Apache不同,Nginx是通过异步的、非阻塞的、事件驱动的方式在实现的。Nginx的工作进程是单线程的,每个线程可以异步的处理大量的用户请求。下面是Nginx的工作原理图:
图片来源:http://www.aosabook.org/en/nginx.html
2.静态与动态内容的处理
无论是静态还是动态内容,Apache都可以处理,Apache具有内置的解析和执行各种动态脚本语言(包括PHP,Python和Perl)的功能,无需借助外部处理器。
毫无疑问,动态内容处理恐怕是Nginx的痛点。Nginx处理动态内容的效率并不高,且需借助外部的处理器。所以如果您的站点具有很多动态功能,Apache的表现可能会更切合你意。不过虽然与Apache相比Nginx的动态内容处理能力不佳,但其静态内容处理还是很高效的。
三、总结
Apache拥有丰富的模块组件支持,稳定性强,BUG少,动态内容处理强。
Nginx轻量级,占用资源少,负载均衡,高并发处理强,静态内容处理高效。
存在即有道理,Apache和Nginx作为WEB服务各有所长,个人认为二者并不存在将来谁会完全替代谁。关键在于用户要认真考虑清楚自己的应用场景,根据自己的需求和情况来斟酌选择哪个产品,适合自己的才是最好的。
相关推荐
OwnCloud选择Apache还是Nginx? 虽然Nginx也有很好的性能,但考虑到Apache更广泛的兼容性和更好的文档支持,这里推荐使用Apache作为OwnCloud的Web服务器。 #### 4. 安装Apache步骤 - 使用yum安装Apache:`sudo ...
- **资源消耗低**:与Apache等传统Web服务器相比,Nginx在处理相同工作负载时占用更少的内存资源。 ### 为什么Nginx性能如此之高? Nginx性能优异的关键在于其独特的事件驱动架构和高效的事件处理机制。 - **异步...
- **选择安装类型**:在安装初始界面选择 "Install or upgrade an existing system",系统将自动运行后续安装流程。 ##### 2. 检测光盘完整性 - **跳过检测**:直接选择 "Skip" 跳过光盘完整性的检测。 ##### 3. ...
Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ...
apache/nginx CGI网关环境Linux-dash服务器监控 Ubuntu && Debian 原始格式的 Apache CGI 网关环境的 Linux-dash 服务器监控。 应用程序读取的默认日志: /var/log/apache2/access.log 默认网络接口: eth0 && tun...
由于我们的Web服务器Nginx可能不是Apache,所以需要将目录的所有者更改为Nginx用户。运行`chown root.nginx /var/lib/php/session`命令,将目录所有者改为root用户,组改为nginx用户组。 4. **重启Nginx服务**: ...
本文将详细介绍如何在Linux环境下安装Apache服务器、配置CVS以及设置CVSweb,以便实现代码的远程浏览和管理。 首先,我们需要了解CVS。CVS是一种集中式的版本控制系统,它允许开发者在多台计算机之间共享源代码,...
在使用过程中,可以根据需要安装各种服务和工具,如Web服务器Apache或Nginx,数据库管理系统,以及防火墙等,以构建一个功能完善的服务器环境。同时,由于CentOS的开源特性,用户还可以根据自己的需求定制系统,实现...
它是一个代理 DNS,是一个在 HTTP 基础上实现 DNS 的方法,提供了:一个 FastCGI 端点连接 Web 服务器和 DNS 服务器(Nginx、Apache 和 Bind)一个 DNS 代理服务器用于 /etc/resolv.conf 或者 DHCP 声明,使用 ...
注意,在实际部署中,可能还需要根据服务器环境调整Nginx或Apache的其他配置,例如SSL证书、代理设置等。同时,确保Vue应用的静态资源路径与服务器上的实际路径一致,特别是当`assetsPublicPath`在`vue.config.js`或...
学生需要学习如何安装这些服务软件(如BIND for DNS, Postfix for SMTP, Dovecot for POP3, Apache or Nginx for WWW),并进行基本的配置和性能测试。 6. **校园网络架构设计**:设计局域网时,需要考虑拓扑结构,...
可能需要数据库支持(如MySQL或PostgreSQL)、Web服务器(如Apache或Nginx)和一定的编程知识(如PHP)来运行和维护。在安装过程中,用户可能需要配置环境变量、数据库连接信息以及网站的基本设置。 总之,Orla Web...
- **Apache/Nginx**: 配置和优化Web服务器。 - **FTP/SFTP**: 文件传输服务配置与安全考虑。 - **邮件服务**: 如Postfix/Dovecot的安装和配置。 通过以上知识点的学习和掌握,可以有效地提升在Linux运维和系统...
* e.g., Apache, nginx, or IIS * PHP 5.6+ * PHP extensions * spl * mbstring * iconv * json * gd or ImageMagick * MySQL 4.1+ 如何安装Webasyst框架 将源代码复制到Web服务器的%PATH%目录(例如, ...
在开发Web应用时,有时需要为用户提供在线预览Word文档的功能,这通常涉及到Java和JavaScript技术的结合使用。本文将详细介绍如何使用Java后端和JavaScript前端来实现这一功能,以及在此过程中所需的关键库和资源。 ...
- Web 服务器:Apache 或 Nginx - 数据库:MySQL - PHP 版本:至少 PHP 7.4 - 其他:GD 库和 XML 扩展 **1. 安装 MySQL 数据库** 首先,您需要在服务器上安装 MySQL 数据库。可以通过运行以下命令来安装 MySQL: ...
或 打开服务器管理器-添加角色-Web 服务器(IIS),再勾选CGI后安装 激活FastCGI 模块后切换到phpstudy的IIS7+php5.2-5.5即可 参照:http://www.phpstudy.net/a.php/182.html ====不能启动的问题========== 有...
4. **其他依赖**: 还需要安装一些额外的组件,如Nginx或Apache作为Web服务器,以及Passenger(用于Ruby应用部署)。 - Nginx:`sudo yum install nginx` 或 `sudo apt-get install nginx` - Passenger:`gem ...
如果你使用Nginx作为Web服务器,可以按照相似步骤进行配置,但需要修改Nginx的配置文件。 **9. 安全性考虑** 为了增强安全性,建议启用HTTPS并配置SSL证书,以及限制对phpIPAM目录的直接访问。 **10. 定期更新** ...
- 服务器配置:根据源码的技术栈,需要配置合适的Web服务器(如IIS for ASP,Apache or Nginx for PHP)和数据库服务器。 - 安全性:源码的安全性至关重要,包括SQL注入防护、XSS攻击防护、文件上传安全等,需要...