一.Nginx是什么
nginx是一款高性能的HTTP和反向代理服务器软件.
二.Nginx与Apache
1.相同点
- 同是HTTP服务器软件,都采用模块化结构设计
- 支持通用语言接口,如PHP,Python等
- 支持正向代理和反向代理
- 支持虚拟主机及ssl加密传输
- 支持缓存及压缩传输
- 支持URL重写
- 模块多,扩展性强
- 多平台支持
2.Nginx的优势
- 轻量级 安装文件小 运行时CPU内存使用率低
- 性能强 支持多核,处理静态文件效率高,内核采用的poll模型最大可以支持50K并发连接
- 支持热部署 同时启动速度快,可以在不间断服务的情况下对软件和配置进行升级
- 负载均衡 支持容错和健康检查
- 代理功能强大 支持无缓存的反向代理,同时支持IMAP/POP3/SMTP的代理
3.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的常用架构简介
a.小巧的LNMP
web历史上最流行最经典的环境是LAMP(Linux + Apache + Mysql + PHP),至今仍有大量网站采用此架构,Apache默认配置在未优化的情况下比较占用CPU和内存。借助于Nginx的轻量和高性能,LNMP架构只是将LAMP环境中的Apache换成Nginx,于是另一经典LNMP架构就诞生了。LNMP在服务器硬件配置相同时,想对于LAMP会使用更少的CPU和内存,是小型网站,低配服务器,和VPS的福音。
b.互补的LNAMP
LNAMP是一种互补型的架构.
Nginx的负载均衡和反向代理配置灵活,并发能力强,处理静态资源性能强,这些特性十分适合在前端调度。
缺点是处理动态资源差一些,这正是Apache的强项,所以动态资源交给Apache处理。
此架构充分利用了Nginx和Apache的长处,弥补各自的不足,兼顾动静态资源的同时又方便了扩展。
缺点是配置复杂对服务器硬件配置要求高。
c.Web调度员Nginx
当web应用发展到一定程度时,单台服务器不足以支撑业务的正常运行,为增大吞吐量往往会使用多台服务器一起提供服务,如何充分利用多台服务器的资源,就需要一个’调度员‘,这个调度员要求能高效的接收并分发请求,知道后端的服务器健康状态,要能方便的扩展和移除,这就是Nginx又一常见应用架构,此架构充分利用了Nginx的反向代理和负载均衡的优势,Nginx本身不提供web服务,而是在前端接受web请求并分发到后端服务器处理,后端服务器可以是Apache,tomcat,IIS等。