• Nginx 初探


    Nginx简介

    Nginx(engine X)是一个开源、轻量级、高性能的HTTP和反向代理服务器,可以代理HTTP、 IMAP/POP3/SMTP和TCP/UDP协议;
    其特点是占用内存少,并发能力强,采用C语言编写,所以在性能方面有一定保证。
    Nginx是一个俄罗斯人伊戈尔·赛索耶夫开发的, 第一个公开版本0.1.0发布于2004年10月;截止到2017年7月11日,最新稳定
    版是1.12。
    与Nginx同类的Web服务有IIS、 Apache、 Tomcat等。

    Nginx特性:

    模块化设计
    低内存消耗,高并发
    事件驱动,AIO
    高可靠性,master与worker架构
    支持热更新配置、日志文件滚动、平滑升级
    丰富的扩展模块

     

    Nginx基本功能

    静态资源Web服务器
    基于域名/IP/端口的虚拟主机
    HTTP/HTTPS、 SMTP、 POP3和TCP/UDP反向代理
    负载均衡
    页面缓存
    支持代理FastCGI、 uWSGI等应用服务器
    支持gzip、 expires
    URL Rewrite
    路径别名 

    基于IP、用户的访问控制
    支持访问速率、并发限制
    等…

    Nginx架构

    主进程( master process):
    1. 主要功能与外界通信和工作进程管理;
    2. 读取nginx配置文件并验证有效性;
    3. 建立、绑定和关闭socket;
    4. 按照配置文件生成、管理和结束工作进程;
    5. nginx重启、停止、重载配置文件、平滑升级、管理日志文件等。

    工作进程( worker process):
    1. 接收客户端请求,将请求交给各个功能模块处理;
    2. 系统IO调用,获取响应的数据,发送响应给客户端;
    3. 数据缓存管理;
    4. 接收主进程指令,比如重启、关闭等。

    缓存索引重建及管理进程( cache loader & cache manager) :
    cache模块,主要由缓存索引重建( cache loader)和缓存索引管理( cache manager)两个进程完成,缓存索引重
    建进程是在进程在nginx服务启动一段时间之后(默认是1分钟)由主进程生成,对本地磁盘的索引文件在内存中建
    立元数据库,包括扫描、过期更新等操作,完成后退出。

    Nginx与Apache对比

    Nginx轻量级,比Apache占用内存更少,尤其是prefork模型;
    Nginx更抗并发,单机支持10+QPSNginx处理请求是异步非阻塞的,而Aapche是阻塞的;
    Nginx采用多进程工作模式,而Apache有多进程和多进程多线程两种工作模式;
    Nginx高度模块化设计,有很多丰富的模块,更好的扩展性;
    Apache历史悠久(在九几年就已经流行了),稳定性要比Nginx高;
    采用网络I/O模型不同, Apache采用selectNginxLinux2.6+上采用epoll

    网络IO模型

    简单来说,网络I/O是用户态和内核态之间的数据交换。
    一次网络数据读取操作,大概是这样的:
    应用进程通过系统调用( read) ->由用户态转到内核态->内核将请求的数据发送到内核缓冲区->应用进程查看内核
    缓冲区是否有数据->如果有则把数据拷贝到用户态->完成I/O操作
    阻塞
    非阻塞
    同步
    异步
    IO多路复用

     

  • 相关阅读:
    理解WebKit和Chromium: Web应用和Web运行环境
    理解WebKit和Chromium: 网页渲染的基本过程
    【闲谈】我的大学
    使用GDAL将下载的Google卫星图像转为带坐标的tif
    Linux下使用GDAL进行开发(automake使用)
    Linux下编译GDAL
    【Unity技巧】统一管理回调函数——观察者模式
    【Unity技巧】使用单例模式Singleton
    【Unity插件】LitJson杂谈
    理解WebKit和Chromium:Chromium资源磁盘缓存
  • 原文地址:https://www.cnblogs.com/yexiaochong/p/7407175.html
Copyright © 2020-2023  润新知