一、初识nginx
nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器和通用 TCP/UDP 代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。
nginx因为它的稳定性、丰富的模块库、灵活的配置和低系统资源的消耗而闻名.业界一致认为它是Apache2.2+mod_proxy_balancer的轻量级代替者,不仅因为响应静态页面的速度非常快,而且它的模块数量是Apache的2/3。对proxy和rewrite模块的支持很彻底,还支持mod_fcgi、ssl、vhosts ,适合用做mongrel clusters前端HTTP响应。nginx和Apache一样用模块化设计,nginx模块包括内置模块和第三方模块,其中内置模块中包含主模块和事件模块。
二、nginx可提供的服务
- web 服务
- 负载均衡 (反向代理)
- web cache(web 缓存)
三、nginx 的优点
- 高并发,静态小文件
- 占用资源少。2万并发、10个线程,内存消耗几百M
- 功能种类比较多。Web,cache,proxy。每一个功能都不是特别强
- 支持epoll模型,使得nginx可以支持高并发
- nginx 配合动态服务和Apache有区别(FASTCGI 接口)
- 利用nginx可以对IP限速,可以限制连接数
- 配置简单,更灵活
四、nginx的应用场合
- 静态服务器(图片,视频服务),如html,js,css,flv,jpg,gif等
- 动态服务,nginx—fastcgi 方式运行PHP,JSP。(PHP并发约500-1500,MySQL 并发约300-1500)
- 反向代理,负载均衡。日pv2000W以下,均可直接用nginx做代理
- 缓存服务。类似 SQUID,VARNISH
五、nginx的特性
5.1 模块化设计、较好的扩展性
因此作为程序员可以为nginx设计第三方模块,不过与httpd不同的是,nginx早期包括现在的版本虽然是模块化的,也就意味着说我们可以自行开发第三方模块对Nginx进行扩展,但是nginx不支持模块动态装卸载的,也就是说编译的时候只能静态直接编译进nginx而且随nginx的启动而启动,即模块编译好之后可以直接使用,但只能直接编译成nginx组成部分,只要nginx启动,那么这个模块就一定会启动,它不支持动态装卸载。但是Tengine对nginx的改进使得Tengine支持模块动态装卸载。
5.2 高可靠性
这是已经经过市场广泛验证的;它的高可靠性是靠其特殊的工作机制来实现的,其高可靠性依赖于主控进程与工作进程或工作线程的架构来实现的。虽然形容为特殊但是其实httpd也是这么工作的。nginx的组成部分实际上是由一个主控进程master加多个子进程worker共同组成的,它有一个主控进程master,主控进程并不