搭建高性能web服务器之Nginx入门介绍(1.1)

《第1章研究Nginx前的准备工作,本章介绍了Nginx的特点以及在什么场景下需要使用Nginx,同时介绍了如何获取Nginx以及如何配置、编译、安装运行Nginx。本章还深入介绍了最为复杂的configure过程,这部分内容是学习本书第二部分和第三部分的基础。本节为大家介绍Nginx是什么》。

1.Nginx是什么,Nginx能帮我们做什么

2012年,Nginx荣获年度云计算开发奖(2012 Cloud Award for Developer of the Year),并成长为世界第二大Web服务器。全世界流量最高的前1000名网站中,超过25%都使用Nginx来处理海量的互联网请求。Nginx已经成为业界高性能Web服务器的代名词。

人们在了解新事物时,往往习惯通过类比来帮助自己理解事物的概貌。那么,我们在学习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服务器,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又叫:enginx 来俄罗斯的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的市场份额越来越大。

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

例如,对于高效处理大规模并发连接,它支持Linux上的epoll(epoll是Linux上处理大并发网络连接的利器,后面介绍到它的原理)、Solaris上的event ports和FreeBSD上的kqueue等。又如,对于Linux,Nginx支持其独有的 sendfile系统调用,这个系统调用可以高效地把硬盘中的数据发送到网络上(不需要先把硬盘数据复制到用户态内存上再发送),这极大地减少了内核态与用户态数据间的复制动作。

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

2011年7月,Nginx正式成立公司,由Igor Sysoev担任CTO,立足于提供商业级的Web服务器。这便是Nginx,一个以高性能,高并发而著名的web server

时间: 2024-12-18 19:46:27

搭建高性能web服务器之Nginx入门介绍(1.1)的相关文章

搭建高性能web服务器之Nginx入门介绍(1.2)

前面为讲到Nginx的起源,那么这么优秀的web server有哪些特点呢,众多web server中Nginx有什么特点呢,下面我们来讲到Nginx的特点. 1.2Nginx有哪些特点? (1)更快 这表现在两个方面:一方面,在正常情况下,单次请求会得到更快的响应:另一方面,在高峰期(如有数以万计的并发请求),Nginx可以比其他Web服务器更快地响应请求. (2)高扩展性 Nginx的设计极具扩展性,它完全是由多个不同功能.不同层次.不同类型且耦合度极低的模块组成.因此,当对某一个模块修复B

搭建高性能web服务器之Nginx安装与配置(2.3)

<上一章节介绍了如何获取Nginx以及如何配置.编译.安装运行Nginx.但是很多情况下我们是根据需要来编译Nginx,这里不得不说道nginx的./configure相关参数> 一 Nginx的./configure编译参数说明介绍 可以看出,configure命令至关重要,比如根据自己需要选择性的安装nginx是很有必要的,下文将详细介绍如何使用configure命令使用方法. 我们在解压了nginx的源码后,进入到nginx的源码目录使用"./configure --help&

搭建高性能web服务器之Nginx安装与配置(2.7)

本章将介绍了Nginx的工作原理 在正式运营环境下,部署Nginx时都是使用一个master进程来管理多个worker进程,一般情况下,worker进程的数量与服务器上的CPU核心数相等.每一个worker进程都是繁忙的,它们在真正地提供互联网服务,master进程则很"清闲",只负责监控管理worker进程.worker进程之间通过共享内存.原子操作等一些进程间通信机制来实现负载均衡等功能 Nginx是支持单进程(master进程)提供服务的,那么为什么运营环境下要按照master-

搭建高性能web服务器之Nginx安装与配置(2.8)

优雅关闭上一小节,我们讲到了关于nginx是如何工作的,本小节我们将讲到关于nginx主配置文件(nginx.conf)相关的配置语法进行相关说明 1.用于调试进程和定位问题的配置项 1.1关于nginx的守护进程 语法:daemon on | off; 是否以守护进程运行nginx   默认值:daemon on; 守护进程(daemon)是脱离终端并且在后台运行的进程.它脱离终端是为了避免进程执行过程中的信息在任何终端上显示,这样一来,进程也不会被任何终端所产生的信息所打断.Nginx毫无疑

搭建高性能web服务器之Nginx安装与配置说明(2.2)

<本章节介绍了如何获取Nginx以及如何配置.编译.安装运行Nginx.深入介绍了最为复杂的configure过程,以及编译Nginx相关参数的介绍> 上一章节,我们简单的了解Nginx安装前需要准备的依赖包以及先关系统内核优化参数,本章节我们就着实讲到nginx的安装过程,比如nginx安装的一些参数说明,安装过程中遇到的一些问题 一.源码安装nginx 1.1下载nginx源码包  我们可以在Nginx官方网站(http://nginx.org/en/download.html)获取Ngi

【转】Web服务器之Nginx详解(理论部分)

大纲 一.前言 二.Web服务器提供服务的方式 三.多进程.多线程.异步模式的对比 四.Web 服务请求过程 五.Linux I/O 模型 六.Linux I/O 模型具体说明 七.Linux I/O模型的具体实现 八.Apache 的工作模式 九.支持高并发的Web服务器 十.Nginx 详解 一.前言 注,在说Web服务器之前,先说说线程.进程.以及并发连接数. 1.进程与线程 进程是具有一定独立功能的程序,关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.从逻辑

web服务器之nginx和apache的区别

① apache属于重量级的服务器,nginx属于轻量级的服务器; 区别在于对一些功能的支持,比如:  pathinfo,php模块方面 ② nginx抗高并发能力强. 由于nginx采用的是异步非阻塞模式,而apache是阻塞模式; ③ nginx采用的是异步固定进程,而apache是同步多进程,一个连接对应一个进程; ④ nginx适合处理静态资源和反向代理,apache适合处理动态资源; ⑤ apache的重写模块比nginx要强大; ⑥ nginx支持平滑操作,在线升级; 扩展:常见的w

Nginx高性能web服务器之性能优化(八)

我们该如何充分发挥Nginx的高效和稳定性呢?这里我介绍下从编译安装开始,到系统内核,和利用第三方插件对Nginx进行优化,最大限度的发挥Nginx的性能. 一.编译安装过程的优化 1.减小Nginx编译安装后的文件大小 在编译Nginx的时候,默认是以debug模式进行的.而在debug模式下面会插入很多跟踪ASSERT之类的信息.当编译完成之后,一个Nginx要有好几M的字节.如果我们取消Nginx的debug模式,那么Nginx只有几百个字节.因为我们修改相关源码,取消debug模式: 在

Nginx高性能web服务器之安装(二)

每天坚持写一篇博文今天开始写Nginx的简单安装方式,明天继续详解下Nginx的配置文件和一些参数,仅供参考! 一.准备一台虚拟机: ip:192.168.1.214 关闭防火墙和设置selinux为disabled [[email protected] ~]service iptables stop [[email protected] ~]chkconfig iptables off [[email protected] ~]sed -i's#SELINUX=enforcing#SELINU