Nginx功能描述
nginx是一款高性能的HTTP和反向代理服务器软件,第一个开源版本诞生于2004年,虽然诞生较晚但经过十多年的发展,已经成为非常流行的web服务器软件,下图是w3techs公布的全球网站服务器软件统计报告。
截止到2014年12月31日,Nginx仅次于apache成为第二大web服务器软件,而在全球最忙碌top10000网站中使用比例更是高达42.7%。其发展速度和流行程度已经远远超过其它同类软件,成为大型网站和高并发网站的首选。
2.1Nginx 和Apache的相同点:
- 同是HTTP服务器软件,都采用模块化结构设计
- 支持通用语言接口,如PHP,Python等
- 支持正向代理和反向代理
- 支持虚拟主机及ssl加密传输
- 支持缓存及压缩传输
- 支持URL重写
- 模块多,扩展性强
- 多平台支持
2.2 Nginx的优势与劣势
nginx的优势:
- 轻量级 安装文件小 运行时CPU内存使用率低
- 性能强 支持多核,处理静态文件效率高,内核采用的poll模型最大可以支持50K并发连接
- 支持热部署 同时启动速度快,可以在不间断服务的情况下对软件和配置进行升级
- 负载均衡 支持容错和健康检查
- 代理功能强大 支持无缓存的反向代理,同时支持IMAP/POP3/SMTP的代理
Nginx的劣势:
- 相比Apache 模块要少一些,常用模块都有了,而且支持LUA语言扩展功能
- 对动态请求支持不如apache
- Windows 版本功能有限 ,受限于windows的特性,支持最好的还是*unix系统
2.3 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,已被国内很多网站采用。
僵尸将臣