Nginx 介绍

一、反向代理:Web服务器的“经纪人”

1.1 反向代理初印象

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

从上图可以看出:反向代理服务器位于网站机房,代理网站Web服务器接收Http请求,对请求进行转发。

1.2 反向代理的作用

①保护网站安全:任何来自Internet的请求都必须先经过代理服务器;

②通过配置缓存功能加速Web请求:可以缓存真实Web服务器上的某些静态资源,减轻真实Web服务器的负载压力;

③实现负载均衡:充当负载均衡服务器均衡地分发请求,平衡集群中各个服务器的负载压力;

二、初识Nginx:简单却不平凡

2.1 Nginx是神马?

Nginx是一款轻量级的网页服务器、反向代理器以及电子邮件代理服务器。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。

Source:Nginx(发音同engine x),它是由俄罗斯程序员Igor Sysoev所开发的。起初是供俄国大型的门户网站及搜索引擎Rambler(俄语:Рамблер)使用。此软件BSD-like协议下发行,可以在UNIX、GNU/Linux、BSD、Mac OS X、Solaris,以及Microsoft Windows等操作系统中运行。

说到Web服务器,Apache服务器和IIS服务器是两大巨头;但是运行速度更快、更灵活的对手:Nginx 正在迎头赶上。

2.2 Nginx的应用现状

Nginx 已经在俄罗斯最大的门户网站── Rambler Media(www.rambler.ru)上运行了3年时间,同时俄罗斯超过20%的虚拟主机平台采用Nginx作为反向代理服务器。

在国内,已经有 淘宝、新浪博客、新浪播客、网易新闻、六间房、56.com、Discuz!、水木社区、豆瓣、YUPOO、海内、迅雷在线 等多家网站使用 Nginx 作为Web服务器或反向代理服务器。

2.3 Nginx的核心特点

(1)跨平台:Nginx 可以在大多数 Unix like OS编译运行,而且也有Windows的移植版本;

(2)配置异常简单:非常容易上手。配置风格跟程序开发一样,神一般的配置;

(3)非阻塞、高并发连接:数据复制时,磁盘I/O的第一阶段是非阻塞的。官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数。(这得益于Nginx使用了最新的epoll模型);

PS:对于一个Web服务器来说,首先看一个请求的基本过程:建立连接—接收数据—发送数据,在系统底层看来 :上述过程(建立连接—接收数据—发送数据)在系统底层就是读写事件。

①如果采用阻塞调用的方式,当读写事件没有准备好时,必然不能够进行读写事件,那么久只好等待,等事件准备好了,才能进行读写事件,那么请求就会被耽搁 。

②既然没有准备好阻塞调用不行,那么采用非阻塞调用方式。非阻塞就是:事件马上返回,告诉你事件还没准备好呢,你慌什么,过会再来吧。好吧,你过一会,再来检查一下事件,直到事件准备好了为止,在这期间,你就可以先去做其它事情,然后再来看看事件好了没。虽然不阻塞了,但你得不时地过来检查一下事件的状态,你可以做更多的事情了,但带来的开销也是不小的。

(4)事件驱动:通信机制采用epoll模型,支持更大的并发连接。

①非阻塞通过不断检查事件的状态来判断是否进行读写操作,这样带来的开销很大,因此就有了异步非阻塞的事件处理机制。这种机制让你可以同时监控多个事件,调用他们是阻塞的,但可以设置超时时间,在超时时间之内,如果有事件准备好了,就返回。这种机制解决了上面阻塞调用与非阻塞调用的两个问题。

②以epoll模型为例:当事件没有准备好时,就放入epoll(队列)里面。如果有事件准备好了,那么就去处 理;如果事件返回的是EAGAIN,那么继续将其放入epoll里面。从而,只要有事件准备好了,我们就去处理它,只有当所有事件都没有准备好时,才在 epoll里面等着。这样,我们就可以并发处理大量的并发了,当然,这里的并发请求,是指未处理完的请求,线程只有一个,所以同时能处理的请求当然只有一 个了,只是在请求间进行不断地切换而已,切换也是因为异步事件未准备好,而主动让出的。这里的切换是没有任何代价,你可以理解为循环处理多个准备好的事 件,事实上就是这样的。

③与多线程方式相比,这种事件处理方式是有很大的优势的,不需要创建线程,每个请求占用的内存也很少,没有上下文切换, 事件处理非常的轻量级,并发数再多也不会导致无谓的资源浪费(上下文切换)。对于IIS服务器,每个请求会独占一个工作线程,当并发数上到几千时,就同时 有几千的线程在处理请求了。这对操作系统来说,是个不小的挑战:因为线程带来的内存占用非常大,线程的上下文切换带来的cpu开销很大,自然性能就上不 去,从而导致在高并发场景下性能下降严重。

总结:通过异步非阻塞的事件处理机制,Nginx实现由进程循环处理多个准备好的事件,从而实现高并发和轻量级。

(5)Master/Worker结构:一个master进程,生成一个或多个worker进程。

PS:Master-Worker设计模式核心思想是将原来串行的逻辑并行化, 并将逻辑拆分成很多独立模块并行执行。其中主要包含两个主要组件Master和Worker,Master主要将逻辑进行拆分,拆分为互相独立的部分,同 时维护了Worker队列,将每个独立部分下发到多个Worker并行执行,Worker主要进行实际逻辑计算,并将结果返回给Master。

问:nginx采用这种进程模型有什么好处?

答:采用独立的进程,可以让互相之间不会影响,一个进程退出后,其它进程还在工作,服务不会中断,Master 进程则很快重新启动新的Worker进程。当然,Worker进程的异常退出,肯定是程序有bug了,异常退出,会导致当前Worker上的所有请求失 败,不过不会影响到所有请求,所以降低了风险。

(6)内存消耗小:处理大并发的请求内存消耗非常小。在3万并发连接下,开启的10个Nginx 进程才消耗150M内存(15M*10=150M)。

(7)内置的健康检查功能:如果 Nginx 代理的后端的某台 Web 服务器宕机了,不会影响前端访问。

(8)节省带宽:支持 GZIP 压缩,可以添加浏览器本地缓存的 Header 头。

(9)稳定性高:用于反向代理,宕机的概率微乎其微。

时间: 2024-09-28 05:10:49

Nginx 介绍的相关文章

nginx介绍和常见应用

Nginx 介绍 l Nginx是俄罗斯人编写的十分轻量级的HTTP服务器 l 高性能的HTTP和反向代理服务器,同时也代理IMAP/POP3/SMTP服务器 l Nginx 发布以来,Nginx 已经因为它的稳定性.丰富的功能集.示例配置文件和低系统资源的消耗而闻名 l Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率. l 能经受高负载的考验,有报告表明能支持高达 50,000个并发连接数. l Nginx具有很高的稳定性,其它HTTP服务器当遇到访问的峰值,或者有人恶

Linux课程笔记 Nginx介绍

1  Nginx介绍 与Apache相比,在性能上,nginx占用更少的系统资源,特定的场景应用(静态数据)能支持更多的并发连接,达到更高的访问效率:在功能上,Nginx是一个优秀的反向代理和负载均衡服务器,也可以作为缓存服务器. 2  Nginx有点总结: 高并发:能支持1-2万甚至更多的并发连接(静态小文件环境下) 内存消耗少:在3万并发连接下,开启的10个Nginx进程消耗不到200M内存 可以做HTTP反向代理,即负载均衡功能,相当于专业的haproxy软件或lvs的功能 内置对RS服务

Nginx介绍及安装配置

Nginx介绍 如果听说过Apache软件那么对于Nginx也会很快就熟悉的和Apache一样nginx是开源的支持高性能高并发的WWW服务.代理服务软件以及电子邮件代理服务器并在一个BSD-like协议下发行由俄罗斯Igor Sysoev所开发开始供俄国大型的入口网址及搜索引擎Rambler使用. nginx占有内存小并发能力强特别是静态资源且功能丰富而流行起来. 从软件的功能应用方面Nginx不但是一个优秀的Web服务软件还可以具有反向代理负载均衡能和缓存服务功能.代理方面类似专业的LVS负

Nginx 介绍和安装

Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了. Igor 将源代码以类 BSD 许可证的形式发布.尽管还是测试版,但是,Nginx 已经因为它的稳定性.丰富的功能集.示例配置文件和低系统资源的消耗而闻名了. 根据最新一期(08 年 6 月份)的 NetCraft 调

LNMP架构介绍、MySQL安装、PHP安装、Nginx介绍

LNMP架构介绍 LNMP:linux+nginx+mysql+php的架构:php的动态处理交给php-fpm(127.0.0.1:9000),静态处理直接由nginx处理 工作模式: 1.在lamp中php作为独立的服务(php-fpm)存在 2.nginx支持高并发,动态请求转给php-fpm MySQL安装 请查看:http://jacksoner.blog.51cto.com/5802843/1979858 PHP安装(php-fpm) 1.[[email protected] pac

LNMP架构结介绍,MySQL和PHP的安装以及Nginx介绍

一.LNMP架构结介绍 LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构.Nginx中的PHP是以fastcgi的方式结合Nginx的,可以理解为Nginx代理了PHP的fastcgi. 详细介绍可参考:http://blog.csdn.net/u013592371/article/details/73729892 二.LNMP架构-安装MySQL LNMP中MySQL的安装步骤与LAMP中安装一样,这里简单写一下安装过程: [email protected]

lnmp架构介绍,mysql,php安装,Nginx介绍

lnmp架构介绍 MySQL安装 1.首先下载软件包 [[email protected] src]# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz --2018-02-26 21:12:00-- http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz 正在解析主

nginx介绍与安装

Nginx介绍 Nginx官网 nginx.org 一般使用稳定版stable version has been released.应用场景:web服务.反向代理.负载均衡 安装nginx 下载与解压 cd /usr/local/src/ wget http://nginx.org/download/nginx-1.12.2.tar.gz tar zxvf nginx-1.12.2.tar.gz 编译与安装 cd /usr/local/src/nginx-1.12.2/ ./configure

12.Nginx介绍,安装,配置默认虚拟主机,重定向

[toc] 12.5 Nginx介绍 官网:nginx.org 因为nginx处理静态文件的能力要比apache好很多,所以很多企业在建站的时候一般都是用java写的,然后会选择tomcat,但是tomcat处理静态文件的能力不是太好就会叠加选择nginx. nginx特点: 体积小 处理能力强 并发高 可扩展性好 Nginx应用场景: web服务 反向代理 负载均衡 Nginx著名分支,淘宝基于Nginx开发的Tengine,使用上和Nginx一致,服务名,配置文件名都一样,和Nginx的最大

12.1-12.5 LNMP架构介绍,MySQL安装,PHP安装,Nginx介绍

十二周一次课(4月23日) 12.1 LNMP架构介绍 12.2 MySQL安装 12.3/12.4 PHP安装 12.5 Nginx介绍 扩展 Nginx为什么比Apache Httpd高效:原理篇 http://www.toxingwang.com/linux-unix/linux-basic/1712.html apache和nginx工作原理比较 http://www.server110.com/nginx/201402/6543.html mod_php 和 mod_fastcgi以及