`
GavinHsueh
  • 浏览: 71045 次
文章分类
社区版块
存档分类
最新评论

WEB服务器如何选择 Apache or Nginx?

阅读更多

Web服务器是直接影响网站性能的关键因素,也是每个站长选择网站运营环境时必然考虑的问题。目前Web服务器市场产品众多,最为主流和代表性的当属ApacheNginx以及微软的IIS。本文目的是通过ApacheNginx进行对比,从而帮助广大用户们能够选择适合自己的Web服务器。

一、简介

Apache

Apache创建于1995年,并从 1999 年开始在 Apache 软件基金会旗下进行开发。Apache灵活、高效,拥有丰富的扩展模块,以及活跃的社区支持,成为目前世界上最为主流的开源免费的Web服务器软件。

 

Nginx

Nginx是由俄罗斯软件工程师Igor Sysoev编写的免费开源Web服务器。自从2004年上市以来,nginx专注于高性能,高并发性和低内存使用。并且其在负载均衡,缓存,访问和带宽控制以及与各种应用程序高效集成等方面的特性,都使得它逐步深受广大用户青睐。

 

下面是20174月份更新的web服务器市场份额对比图:

 

数据来源:https://news.netcraft.com/archives/2017/04/21/april-2017-web-server-survey.html

 

二、对比

虽然ApacheNginx各自的背景不同,但他们的作用目的是一致的,简单说就是接收用户请求,然后处理请求,最后将处理结果返回给用户。

1.链接处理

ApacheNginx最大的不同在于它们对连接的处理方式。Apache提供一系列多重处理模块,通过这些多重处理模块来使用操作系统的资源,对进程和线程池进行管理,控制处理用户请求。


Apache提供了三种多重处理模块:mpm_preforkmpm_workermpm_envent,下面我们做简要说明对比。

mpm_prefork模块产生众多子进程,每个子进程是单线程的,每个线程链接一个请求,如此一对一的关系。所以如果请求数大于进程数时,服务器的性能就表现得差强人意了。

 

mpm_workerprefork不同,worker中子进程是多线程的,每个线程管理一个用户连接。线程数要多于进程数量,这也就意味着新的连接能立刻得到一个空闲的线程,而不用等待进程空闲。

 

 

mpm_event该模块与worker相似,区别在于event可以处理长连接(keep-alive),以避免线程被请求长期占用而造成资源浪费,同时也增强了高并发场景下的请求处理能力。

 

 

Apache不同,Nginx是通过异步的、非阻塞的、事件驱动的方式在实现的。Nginx的工作进程是单线程的,每个线程可以异步的处理大量的用户请求。下面是Nginx的工作原理图:

图片来源:http://www.aosabook.org/en/nginx.html

 

 

2.静态与动态内容的处理

无论是静态还是动态内容,Apache都可以处理,Apache具有内置的解析和执行各种动态脚本语言(包括PHPPythonPerl)的功能,无需借助外部处理器。

毫无疑问,动态内容处理恐怕是Nginx的痛点。Nginx处理动态内容的效率并不高,且需借助外部的处理器。所以如果您的站点具有很多动态功能,Apache的表现可能会更切合你意。不过虽然与Apache相比Nginx的动态内容处理能力不佳,但其静态内容处理还是很高效的。

三、总结

Apache拥有丰富的模块组件支持,稳定性强,BUG少,动态内容处理强。

Nginx轻量级,占用资源少,负载均衡,高并发处理强,静态内容处理高效。

 

存在即有道理,ApacheNginx作为WEB服务各有所长,个人认为二者并不存在将来谁会完全替代谁。关键在于用户要认真考虑清楚自己的应用场景,根据自己的需求和情况来斟酌选择哪个产品,适合自己的才是最好的。

0
0
分享到:
评论

相关推荐

    1.个人网盘owncloud搭建 2.Apache+php7.4+MariaDB10.6.11搭建 3.图文结合

    OwnCloud选择Apache还是Nginx? 虽然Nginx也有很好的性能,但考虑到Apache更广泛的兼容性和更好的文档支持,这里推荐使用Apache作为OwnCloud的Web服务器。 #### 4. 安装Apache步骤 - 使用yum安装Apache:`sudo ...

    【Java面试系列】Nginx.pdf

    - **资源消耗低**:与Apache等传统Web服务器相比,Nginx在处理相同工作负载时占用更少的内存资源。 ### 为什么Nginx性能如此之高? Nginx性能优异的关键在于其独特的事件驱动架构和高效的事件处理机制。 - **异步...

    Linux+Nginx+Mysql+Php安装教程

    - **选择安装类型**:在安装初始界面选择 "Install or upgrade an existing system",系统将自动运行后续安装流程。 ##### 2. 检测光盘完整性 - **跳过检测**:直接选择 "Skip" 跳过光盘完整性的检测。 ##### 3. ...

    tomcat8 + nginx + memcached + cas 实现负载均衡的配置包

    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 ...

    dash-cgi:Apache CGI 网关环境的 Linux-dash 服务器监控

    apache/nginx CGI网关环境Linux-dash服务器监控 Ubuntu && Debian 原始格式的 Apache CGI 网关环境的 Linux-dash 服务器监控。 应用程序读取的默认日志: /var/log/apache2/access.log 默认网络接口: eth0 && tun...

    nginx 下安装配置 phpadmin报错的解决方法

    由于我们的Web服务器Nginx可能不是Apache,所以需要将目录的所有者更改为Nginx用户。运行`chown root.nginx /var/lib/php/session`命令,将目录所有者改为root用户,组改为nginx用户组。 4. **重启Nginx服务**: ...

    cvs及cvsweb安装配置

    本文将详细介绍如何在Linux环境下安装Apache服务器、配置CVS以及设置CVSweb,以便实现代码的远程浏览和管理。 首先,我们需要了解CVS。CVS是一种集中式的版本控制系统,它允许开发者在多台计算机之间共享源代码,...

    Centos6.6安装教程

    在使用过程中,可以根据需要安装各种服务和工具,如Web服务器Apache或Nginx,数据库管理系统,以及防火墙等,以构建一个功能完善的服务器环境。同时,由于CentOS的开源特性,用户还可以根据自己的需求定制系统,实现...

    HTTP协议的DNS实现DNSoverHTTP.zip

    它是一个代理 DNS,是一个在 HTTP 基础上实现 DNS 的方法,提供了:一个 FastCGI 端点连接 Web 服务器和 DNS 服务器(Nginx、Apache 和 Bind)一个 DNS 代理服务器用于 /etc/resolv.conf 或者 DHCP 声明,使用 ...

    在nginx上部署vue项目(history模式)的方法

    注意,在实际部署中,可能还需要根据服务器环境调整Nginx或Apache的其他配置,例如SSL证书、代理设置等。同时,确保Vue应用的静态资源路径与服务器上的实际路径一致,特别是当`assetsPublicPath`在`vue.config.js`或...

    计算机网络原理课程设计报告组建局域网整理.pdf

    学生需要学习如何安装这些服务软件(如BIND for DNS, Postfix for SMTP, Dovecot for POP3, Apache or Nginx for WWW),并进行基本的配置和性能测试。 6. **校园网络架构设计**:设计局域网时,需要考虑拓扑结构,...

    Orla Web-开源

    可能需要数据库支持(如MySQL或PostgreSQL)、Web服务器(如Apache或Nginx)和一定的编程知识(如PHP)来运行和维护。在安装过程中,用户可能需要配置环境变量、数据库连接信息以及网站的基本设置。 总之,Orla Web...

    Linux运维or系统工程师面试总结

    - **Apache/Nginx**: 配置和优化Web服务器。 - **FTP/SFTP**: 文件传输服务配置与安全考虑。 - **邮件服务**: 如Postfix/Dovecot的安装和配置。 通过以上知识点的学习和掌握,可以有效地提升在Linux运维和系统...

    webasyst-framework:Webasyst PHP框架

    * e.g., Apache, nginx, or IIS * PHP 5.6+ * PHP extensions * spl * mbstring * iconv * json * gd or ImageMagick * MySQL 4.1+ 如何安装Webasyst框架 将源代码复制到Web服务器的%PATH%目录(例如, ...

    java+js实现word文档在线查看(前台+后台所使用到的jar包和js包)

    在开发Web应用时,有时需要为用户提供在线预览Word文档的功能,这通常涉及到Java和JavaScript技术的结合使用。本文将详细介绍如何使用Java后端和JavaScript前端来实现这一功能,以及在此过程中所需的关键库和资源。 ...

    testlink安装

    - Web 服务器:Apache 或 Nginx - 数据库:MySQL - PHP 版本:至少 PHP 7.4 - 其他:GD 库和 XML 扩展 **1. 安装 MySQL 数据库** 首先,您需要在服务器上安装 MySQL 数据库。可以通过运行以下命令来安装 MySQL: ...

    phpstudy-x64.zip

    或 打开服务器管理器-添加角色-Web 服务器(IIS),再勾选CGI后安装 激活FastCGI 模块后切换到phpstudy的IIS7+php5.2-5.5即可 参照:http://www.phpstudy.net/a.php/182.html ====不能启动的问题========== 有...

    redmine安装for linux(内含全套安装文件及安装文档)

    4. **其他依赖**: 还需要安装一些额外的组件,如Nginx或Apache作为Web服务器,以及Passenger(用于Ruby应用部署)。 - Nginx:`sudo yum install nginx` 或 `sudo apt-get install nginx` - Passenger:`gem ...

    How To Install phpIPAM on Ubuntu 22.0420.0418.04

    如果你使用Nginx作为Web服务器,可以按照相似步骤进行配置,但需要修改Nginx的配置文件。 **9. 安全性考虑** 为了增强安全性,建议启用HTTPS并配置SSL证书,以及限制对phpIPAM目录的直接访问。 **10. 定期更新** ...

    装修网站源码

    - 服务器配置:根据源码的技术栈,需要配置合适的Web服务器(如IIS for ASP,Apache or Nginx for PHP)和数据库服务器。 - 安全性:源码的安全性至关重要,包括SQL注入防护、XSS攻击防护、文件上传安全等,需要...

Global site tag (gtag.js) - Google Analytics