当前位置:首页 » 服务器操作系统

nginx功能描述

2015-08-02 11:38 本站整理 浏览(116)


Nginx功能描述


本节预告

nginx是什么?
nginx为什么会流行?
为什么选择nginx?
nginx工作原理
Nginx的常用架构简介
我该如何学习nginx?


Nginx是什么?

Nginx 读音'Engine X',很多工程师也喜欢读成'恩基克思'。nginx是一款高性能的HTTP和反向代理服务器软件,第一个开源版本诞生于2004年,虽然诞生较晚但经过十多年的发展,已经成为非常流行的web服务器软件,下图是w3techs公布的全球网站服务器软件统计报告

截止到2014年12月31日,Nginx仅次于apache成为第二大web服务器软件,而在全球最忙碌top10000网站中使用比例更是高达42.7%。其发展速度和流行程度已经远远超过其它同类软件,成为大型网站和高并发网站的首选。下面列出一些使用Nginx的网站:


Nginx为什么流行?

市场往往会选择简单实用的技术,Nginx之所以能够脱颖而出,可以说是nginx的特性迎合了市场的发展趋势。近几年来,随着硬件成本的降低,个人电脑和移动设备得到了普及,web服务器在互联网中的角色与十几年前的相比已大不相同。高并发已经成为趋势,而高并发又要求架构具有健壮性和可伸缩性。这些正是Nginx的特性,它是为性能而生,从发布以来一直侧重于高性能,高并发,低CPU内存消耗;在功能方面:负载均衡,反向代理,访问控制,热部署,高扩展性等特性又十分适合现代的网络架构。更可贵的是配置简单文档丰富,大大降低了学习的门槛。这样稳定,性能强,功能丰富又简单的产品当然会受欢迎了。


为什么选择Nginx?

Apache自1990年发布以来,一直是web服务器市场的王者。Nginx出现较晚,因其在高并发下卓越的表现,最初是作为Apache在高并发情况下的补充,当时Nginx+Apache是流行的架构.
现在Nginx的功能已经十分完善,多数场合下不需要Nginx+Apache这样复杂的架构,那么问题来了,选择Nginx 还是 Apache?
Nginx 和 Apache 相同点:
同是HTTP服务器软件,都采用模块化结构设计
支持通用语言接口,如PHP,Python等
支持正向代理和反向代理
支持虚拟主机及ssl加密传输
支持缓存及压缩传输
支持URL重写
模块多,扩展性强
多平台支持
Nginx的优势
轻量级 安装文件小 运行时CPU内存使用率低
性能强 支持多核,处理静态文件效率高,内核采用的poll模型最大可以支持50K并发连接
支持热部署 同时启动速度快,可以在不间断服务的情况下对软件和配置进行升级
负载均衡 支持容错和健康检查
代理功能强大 支持无缓存的反向代理,同时支持IMAP/POP3/SMTP的代理
Nginx 的劣势
相比Apache 模块要少一些,常用模块都有了,而且支持LUA语言扩展功能
对动态请求支持不如apache
Windows 版本功能有限 ,受限于windows的特性,支持最好的还是*unix系统


Nginx工作原理

Nginx由内核和一系列模块组成,内核提供web服务的基本功能,如启用网络协议,创建运行环境,接收和分配客户端请求,处理模块之间的交互。Nginx的各种功能和操作都由模块来实现。Nginx的模块从结构上分为核心模块、基础模块和第三方模块。
核心模块: HTTP模块、EVENT模块和MAIL模块
基础模块: HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块
第三方模块: HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块及用户自己开发的模块
这样的设计使Nginx方便开发和扩展,也正因此才使得Nginx功能如此强大。Nginx的模块默认编译进nginx中,如果需要增加或删除模块,需要重新编译Nginx,这一点不如Apache的动态加载模块方便。如果有需要动态加载模块,可以使用由淘宝网发起的web服务器Tengine,在nginx的基础上增加了很多高级特性,完全兼容Nginx,已被国内很多网站采用。


Nginx的常用架构简介


1.小巧的LNMP


web历史上最流行最经典的环境是LAMP(Linux + Apache + Mysql + PHP),至今仍有大量网站采用此架构,Apache默认配置在未优化的情况下比较占用CPU和内存。借助于Nginx的轻量和高性能,LNMP架构只是将LAMP环境中的Apache换成Nginx,于是另一经典LNMP架构就诞生了。LNMP在服务器硬件配置相同时,想对于LAMP会使用更少的CPU和内存,是小型网站,低配服务器,和VPS的福音。LNMP架构后续会有实战,大家后续会详细了解到。


2.互补的LNAMP


LNAMP是一种互补型的架构,前面介绍过,Nginx的负载均衡和反向代理配置灵活,并发能力强,处理静态资源性能强,这些特性十分适合在前端调度。缺点是处理动态资源差一些,这正是Apache的强项,所以动态资源交给Apache处理。此架构充分利用了Nginx和Apache的长处,弥补各自的不足,兼顾动静态资源的同时又方便了扩展。缺点是配置复杂对服务器硬件配置要求高。


3.Web调度员Nginx


当web应用发展到一定程度时,单台服务器不足以支撑业务的正常运行,为增大吞吐量往往会使用多台服务器一起提供服务,如何充分利用多台服务器的资源,就需要一个’调度员‘,这个调度员要求能高效的接收并分发请求,知道后端的服务器健康状态,要能方便的扩展和移除,这就是Nginx又一常见应用架构,此架构充分利用了Nginx的反向代理和负载均衡的优势,Nginx本身不提供web服务,而是在前端接受web请求并分发到后端服务器处理,后端服务器可以是Apache,tomcat,IIS等。
以上三种是比较流行的架构,事实上Nginx的应用场景十分灵活,在高并发的网站里有着广泛的应用,大家在以后的学习中可以多关注。
参考网址:
w3techs:http://w3techs.com/technologies/cross/web_server/ranking
http://www.toxingwang.com/linux-unix/linux-basic/1712.html
http://docs.pythontab.com/nginx/nginx-book/chapter_02.html