原文:https://book.2cto.com/201304/19609.html

人们在了解新事物时,往往习惯通过类比来帮助自己理解事物的概貌。那么,我们在学习Nginx时也采用同样的方式,先来看看Nginx的竞争对手—Apache、Lighttpd、Tomcat、Jetty、IIS,它们都是Web服务器,或者叫做WWW(World Wide Web)服务器,相应地也都具备Web服务器的基本功能:基于REST架构风格,以统一资源描述符(Uniform Resource Identifier,URI)或者统一资源定位符(Uniform Resource Locator,URL)作为沟通依据,通过HTTP为浏览器等客户端程序提供各种网络服务。然而,由于这些Web服务器在设计阶段就受到许多局限,例如当时的互联网用户规模、网络带宽、产品特点等局限,并且各自的定位与发展方向都不尽相同,使得每一款Web服务器的特点与应用场合都很鲜明。

Tomcat和Jetty面向Java语言,先天就是重量级的Web服务器,它的性能与Nginx没有可比性,这里略过。

IIS只能在Windows操作系统上运行。Windows作为服务器在稳定性与其他一些性能上都不如类UNIX操作系统,因此,在需要高性能Web服务器的场合下,IIS可能会被“冷落”。

Apache的发展时期很长,而且是目前毫无争议的世界第一大Web服务器,图1-1中是12年来(2010~2012年)世界Web服务器的使用排名情况。

从图1-1中可以看出,Apache目前处于领先地位。

Apache有许多优点,如稳定、开源、跨平台等,但它出现的时间太长了,在它兴起的年代,互联网的产业规模远远比不上今天,所以它被设计成了一个重量级的、不支持高并发的Web服务器。在Apache服务器上,如果有数以万计的并发HTTP请求同时访问,就会导致服务器上消耗大量内存,操作系统内核对成百上千的Apache进程做进程间切换也会消耗大量CPU资源,并导致HTTP请求的平均响应速度降低,这些都决定了Apache不可能成为高性能Web服务器,这也促使了Lighttpd和Nginx的出现。观察图1-1中Nginx成长的曲线,体会一下Nginx抢占市场时的“咄咄逼人”吧。

Lighttpd和Nginx一样,都是轻量级、高性能的Web服务器,欧美的业界开发者比较钟爱Lighttpd,而国内的公司更青睐Nginx,Lighttpd使用得比较少。

在了解了Nginx的竞争对手之后,相信大家对Nginx也有了直观感受,下面让我们来正式地认识一下Nginx吧。

提示Nginx发音:engine ['nd3In] X。

来自俄罗斯的Igor Sysoev在为Rambler Media(http://www.rambler.ru/)工作期间,使用C语言开发了Nginx。Nginx作为Web服务器,一直为俄罗斯著名的门户网站Rambler Media提供着出色、稳定的服务。

Igor Sysoev将Nginx的代码开源,并且赋予其最自由的2-clause BSD-like license许可证。由于Nginx使用基于事件驱动的架构能够并发处理百万级别的TCP连接,高度模块化的设计和自由的许可证使得扩展Nginx功能的第三方模块层出不穷,而且优秀的设计带来了极佳的稳定性,因此其作为Web服务器被广泛应用到大流量的网站上,包括腾讯、新浪、网易、淘宝等访问量巨大的网站。

2012年2月和3月Netcraft对Web服务器的调查如表1-1所示,可以看出,Nginx的市场份额越来越大。

表1-1 Netcraft对于Web服务器市场占有率前4位软件的调查(2012年2月和3月)
Web服务器 2012年2月 市场占有率 2012年3月 市场占有率 占有率变化
Apache 106 664 061 57.45% 108 035 584 57.46% 0.01
Nginx 23 590 737 12.71% 24 011 199 12.77% 0.06
Microsoft IIS 22 363 730 12.05% 22 537 872 11.99% –0.06
Google Web Server 14 316 485 7.71% 14 438 358 7.68% –0.03

Nginx是一个跨平台的Web服务器,可运行在Linux、FreeBSD、Solaris、AIX、Mac OS、Windows等操作系统上,并且它还可以使用当前操作系统特有的一些高效API来提高自己的性能。

例如,对于高效处理大规模并发连接,它支持Linux上的epoll(epoll是Linux上处理大并发网络连接的利器,9.6.1节中将会详细说明epoll的工作原理)、Solaris上的event ports和FreeBSD上的kqueue等。

又如,对于Linux,Nginx支持其独有的 sendfile系统调用,这个系统调用可以高效地把硬盘中的数据发送到网络上(不需要先把硬盘数据复制到用户态内存上再发送),这极大地减少了内核态与用户态数据间的复制动作。

种种迹象都表明,Nginx以性能为王。

2011年7月,Nginx正式成立公司,由Igor Sysoev担任CTO,立足于提供商业级的Web服务器。

转载于:https://www.cnblogs.com/huiy/p/8330162.html

转载:Nginx是什么(1.1)《深入理解Nginx》(陶辉)相关推荐

  1. Nginx核心知识100讲学习笔记(陶辉)Nginx架构基础(一)

    (转载,非常不错的文章) 一.Nginx的请求处理流程进程结构 1.Nginx的请求处理流程 2.Nginx的进程结构 3.进程作用 1.Master进程 1.是进行work进程的监控管理的 2.看看 ...

  2. 转载:第2章 Nginx的配置 概述《深入理解Nginx》(陶辉)

    原文:https://book.2cto.com/201304/19623.html Nginx拥有大量官方发布的模块和第三方模块,这些已有的模块可以帮助我们实现Web服务器上很多的功能.使用这些模块 ...

  3. 推荐我的新书《深入理解Nginx:模块开发与架构解析》

    http://www.china-pub.com/STATIC/zt_mb/zt_huodong_2013_3.asp?filename=2013_jsj_nginx_20130401 目录 < ...

  4. 转载:编译安装Nginx(1.5.1)《深入理解Nginx》(陶辉)

    原文:https://book.2cto.com/201304/19618.html 1.5 configure详解 可以看出,configure命令至关重要,下文将详细介绍如何使用configure ...

  5. 理解 Nginx HTTP 代理, 负载均衡, Buffering, Caching

    原文链接 开篇介绍 我们会在本文中深入探讨Nginx在HTTP通信方面的代理能力,所谓"代理"就是指Nginx在接收到request请求时将请求传递给后台多个http服务器进行进一 ...

  6. 《深入理解Nginx》阅读与实践(一):Nginx安装配置与HelloWorld

    最近在读陶辉的<深入理解Nginx:模块开发与架构解析>,一是想跟着大牛练练阅读和编写开源代码的能力,二是想学学Nginx优秀的架构设计,三是想找一个点深入下Linux下网络编程的细节.侯 ...

  7. nginx从入门、搭建到理解

    目录 前言 一.nginx简介 1. 什么是 nginx 和可以做什么事情 2.Nginx 作为 web 服务器 3. 正向代理 4. 反向代理 5. 负载均衡 6.动静分离 二.Nginx 的安装( ...

  8. 《深入理解Nginx》阅读与实践(四):简单的HTTP过滤模块

    一.Nginx的HTTP过滤模块特征 一个请求可以被任意个HTTP模块处理: 在普通HTTP模块处理请求完毕并调用ngx_http_send_header()发送HTTP头部或调用ngx_http_o ...

  9. 《深入理解NGINX 模块开发与架构解析》之摘抄学习

    1.基于Nginx框架开发程序有5个优势: (1).Nginx将网络.磁盘及定时器等异步事件的驱动都做了非常好的封装,基于它开发将可以忽略这些事件处理的细节; (2).Nginx封装了许多平台无关的接 ...

最新文章

  1. 【计算几何】多边形点集排序
  2. mysql partition 性能_通过分区(Partition)提升MySQL性能
  3. yolov5 deepsort 行人车辆 双向计数 跟踪检测
  4. java Spring beans
  5. CreateaJointCurve.txt
  6. linux磁盘fio压力测试,fio命令 – 对磁盘进行压力测试和验证
  7. 当游戏遇到区块链之链游经济系统思考
  8. Python数据分析-二手车数据用于机器学习二手车价格预测
  9. window10虚拟机下载地址
  10. 解决error while accessing a target resource. resource is perhaps not available or a wrong access was
  11. 华为手机怎么刷android系统,怎样刷入安卓原生系统 在手机系统更新这件事上,小米华为和OPPOvivo谁更有良心...
  12. homeassistant addons
  13. 秦九韶算法[学习笔记]
  14. python画图怎么调色_数据可视化Seaborn从零开始学习教程(二) 颜色调控篇
  15. 11月5日科技资讯|马云、马化腾任职清华;微软将数据保存在玻璃中;Visual Studio Online 上线 | 极客头条
  16. 有什么好用的Gerber图层查看工具
  17. iCloud for Android下载
  18. 叶子详解PS可选颜色
  19. 信息化建设项目前期方案编制3:工作方法
  20. linux下防止rm-rf /处理,削减删除的影响力!

热门文章

  1. 超详细的A-level课程介绍
  2. Google浏览器——session Storage和Local Storage
  3. SpringCloud-服务注册与发现-Eureka
  4. cocos2dx 3.12 Windows模拟器显示菜单栏
  5. python-模拟高铁售票系统
  6. 机械和电气工程师协同设计的神器,设计团队必备!
  7. python之线性代数矩阵运算
  8. C# 如何添加水印到PPT
  9. 使用flume问题总结2——flume event的简单理解
  10. docker 镜像的制作方法