Nginx是一款HTTP服务器软件,高效和稳定。
一、优点:
(1)在性能上:占用系统资源较少,支持更大的并发连接(访问量)。
(2)在功能上:nginx可充当优秀的代理服务器和loadbalanced服务器。
(3)安装简单,配置比较灵活。
二、与apache的比较
与另一款老牌HTTP服务器apache比较的话,nginx也是占尽优势的
(1)apache处理速度更慢,而且占用更多的系统资源。
(2)apache支持动、静编译;而nginx只支持静态编译,但nginx通过模块调用更好的支持fastcgi。
(3)Nginx支持epoll机制(即:linux中最常用的支持大并发的事件的触发机制)
(4)Nginx安装包才几百K !! 小不小!。。
三、nginx自身的优势
(1)as web服务器:
处理静态文件速率块,自动索引效率高
(2)as 代理服务器:
无缓存的反向代理加速,提高了网站运行效率。(反向代理:通过获取原始服务器内容到代理服务器上,并将内容传给客户端,好像这些内容是它自己的,从而实现反向代理。)
(3)as LB服务器:
内部是支持rail(框架,on ruby)和PHP;而对外则是类似HTTP服务器;支持容错和算法进行LB。
(4)on 性能
Nginx专为优化性能而生,最大支持5000并发连接。
(5)on稳定性
采用分阶段资源分配技术(体现在处理请求时的模块化特性上,处理流程就好像一条流水线,一个nginx进程可以并发的处理处于不同阶段的多个请求,处理流程具体分为了11个阶段),使cpu和内存占用率地。可以有效抵御dos攻击。
(6)on高可用
Nginx支持热部署,可不间断的服务为软件升级或者改进配置。
四、nginx的原理和组成
主要由内核和模块两大部分组成。
内核:作用是通过查找配置文件,将客户端请求映射到location block,做为url的位置匹配,其中的指令会启动不同的模块去工作。
模块:可以从结构和功能上区分。结构上分为3类:核心模块有HTTP、EVENT、MAIL模块;基础模块有 HTTP access、HTTP fastcgi、HTTP proxy、HTTP rewrite模块;第三方模块有:HTTP upstream request hash、notice、HTTP access key模块。而从功能上也可以分为3类:handles(处理器模块)处理请求,输出内容,修改头文件;filters(过滤器模块)对handles的输出内容做修改,有nginx输出;proxies(代理类模块)如:http upstream,与后方服务(如fcgi)交互,实现代理、LB等。
Nginx配置----LB模块----nginx的负载均衡策略----支持四种调度算法
内置算法:轮询rr、权重wrr、ip_hash;第三方扩展算法:fair、url_hash
Ip_hash:请求按hash结果分配,使同一个ip访问同一个后端服务器,有效的解
决了动态网页session共享的问题。
Fair:依据页面大小、加载时间进行负载均衡。即根据后端服务器响应时间进行分配,时间短优先分配。
Url_hash:按hash结果分配,使每个url定向到同一个后端服务器,进一步提高后端服务器缓存效率。
五、nginx处理常规HTTP请求大致流程
HTTP发出请求 nginx内核 Handles处理器模块(修改头文件,输出内容) Filters过滤器模块(重复经过,做修改输出内容) Http相应请求(由nginx输出)
六、nginx的工作进程
Nginx是以多进程的方式来工作的,启动后会有一个master和多个worker进程。
Master进程管理和监控worker进程;worker接收到连接后,经过:读取、解析、处理、返回请求,断开连接,,一个请求由一个worker进程处理。
一个工作进程(worker进程)对应一个主线程,是通过异步非阻塞方式实现高并发,由进程循环处理多个准备好的事件。以epoll为例,为准备好的事件都会放入epoll中,只要有事件准备好,就会进行处理。
建议worker 的配置个数为cpu个数,以防进程间相互竞争cpu资源。
七、nginx性能优化
1.编译安装过程的优化
减小编译文件大小 指定cpu类型
2.添加TCmaolloc库----thread-caching malloc
在内存分配效率和速度上很高效,提高服务器在高并发情况下的性能,降低系统负载。
3.内核参数优化
参数值写入/etc/sysctl.conf文件中。