个人对nginx简单认识

来源:互联网 发布:51单片机原理及应用 编辑:程序博客网 时间:2024/04/30 12:24

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类:核心模块有HTTPEVENTMAIL模块;基础模块有 HTTP accessHTTP fastcgiHTTP proxyHTTP rewrite模块;第三方模块有:HTTP upstream request hashnoticeHTTP access key模块。而从功能上也可以分为3类:handles(处理器模块)处理请求,输出内容,修改头文件;filters(过滤器模块)对handles的输出内容做修改,有nginx输出;proxies(代理类模块)如:http upstream,与后方服务(如fcgi)交互,实现代理、LB等。

 

  Nginx配置----LB模块----nginx的负载均衡策略----支持四种调度算法

  内置算法:轮询rr、权重wrrip_hash;第三方扩展算法:fairurl_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文件中。

0 0