• Nginx 知识


    Nginx与Apache的异同

      Nginx和Apache都是HTTP服务器软件,在功能实现上都采用模块化的结构设计,都支持通用的语言接口,如PHP,PERL,PYTHON等,同时还支持正反向代理,虚拟主机,URL重写,压缩传输,SSL加密传输。

      二者之间的最大差别是Apache的处理速度很慢且占用较多内存资源,nginx则不然。

    在功能实现上,Apache的所有模块都支持动静态编译,而nginx则都是静态编译的,同时Apache对FCGI的支持不好。而nginx则非常好

    在处理连接方式上,nginx支持epoll,而Apache则不支持

    在空间使用上,nginx安装包仅几百K,而Apache则较nginx庞大

    注:FCGI 像是一个常驻(long-live)型的CGI,可一直运行者,只要激活,不需每次花时间去fork一次,同时还支持分布式运算,即FCGI程序可以在网站服务器以外的主机上执行,并接受来自其他网站服务器的请求。

      FCGI是跟语言无关的,可伸缩架构的CGI的开放扩展,其主要行为是将CGI解释器进程保持在内存中,以获得较高的性能,众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI进程保持在内存中,并接受FCGI管理器的调度,则可获得较高的性能,伸缩性,fail-over特性等。

       epoll 是Linux内核为处理大批量文件描述符而作的改进的poll,是Linux多路复用I/O接口,select/poll的增强版本,它能显著提高程序在大量并发中只有少量活跃下的CPU的利用率

      

      nginx 优势

      作为WEB服务器,NGINX处理静态文件,索引文件,自动索引效率高

      作为web代理服务器,nginx可实现无缓存的反向代理加速,提高网站运行速度

      作为负载均衡服务器,nginx可以在内部之间支持PHP,也可支持HTTP代理服务器对外进行服务,同时还支持简单的容错和利用算法进行负载均衡

      在性能方面,nginx是专门为性能优化而开发的,在实现上注重效率,同时采用poll模型,可以支持更多并发连接,最大50000个并发连接,且占内存资源低

      在稳定性方面,nginx采用了分段资源分配技术,使得CPU与内存的占用率很低,保持10000个无活动的连接,只占用2.5M内存。因此具有很强的抗DOS攻击能力

      在高性能方面,nginx支持热部署,启动快,因此可以在不间断服务器的情况下对软件版本或配置升级。

      Nginx 的模块与工作原理

      nginx由内核和模块组成,内核设计微小简洁,完成的工作也非常简单,仅通过查找配置文件将client端请求映射到一个location block,而在location中所配置的每个指令将启动不同的模块去完成相应的工作。

      nginx模块从结构上分为核心模块,基础模块和第三方模块,HTTP模块,event模块和mail模块属核心模块,HTTP access模块,HTTP FCGI模块,HTTP PROXY模块,HTTP rewrite模块属第三方模块 ,而HTTP upstream request hash模块,notice模块和HTTP access key模块属第三方模块。

      nginx的模块从功能上分如下三类,

    handlers(处理器模块),此类模块直接处理请求,并进行输出内容和修改headers信息等操作,handlers处理器模块一般只能有一个

    filters (过滤模块)此类模块主要对 处理器模块输出的内容进行修改操作,最后由nginx输出。

    proxies(代理类模块)。此类模块是nginx的HTTP upsteram 之类的模块,这些模块主要与后端一些服务比如FCGI等进行交互,实现服务代理和负载均衡等功能。

      在工作方式上,nginx分为单工作进程和多工作进程两种模式,在单工作进程模式下,除主进程外,还有一个工作进程,工作进程是单线程的,在多工作模式下,每个工作进程包含多个线程,nginx默认为单工作进程模式

     nginx的模块直接编译进nginx,因此属静态编译方式,启动后,模块自动加载,Apache则首先将模块编译为一个.so文件,然后在配置文件中定是否加载,在解析配置文件时,nginx每个模块都可能去处理某个请求,但是同一个处理请求只能有一个模块完成。

    end!

    以上内容整理自《高性能Linux服务器实战》。

  • 相关阅读:
    final详解
    静态与非静态
    静态内部类详解
    iso-----genisoimage/md5sum命令用法
    Docker-----版本选择
    Docker-----deepin系统下docker安装registry
    shell高级-----正则表达式
    kolla-ansible-----rally模块
    shell高级-----创建函数
    jenkins入门-----(1)安装、配置
  • 原文地址:https://www.cnblogs.com/changbo/p/4966578.html
Copyright © 2020-2023  润新知