搬马

导航

 

Nginx (web server, web reverse proxy)

  MIME:Multipurpose Internet Mail Extension

  

  httpd:MPM

    多进程模型:prefork, 一个进程响应一个用户请求,并发使用多个进程实现;
    多线程模型:worker, 一个进程生成多个线程,一个线程响应一个用户请求;并发使用多个线程实现;n进程,n*m个线程;
    事件模型:event, 一个线程响应多个用户请求,基于事件驱动机制来维持多个用户请求;

 

I/O类型:

  同步和异步:synchronous,asynchronous

    关注的是消息通知机制

    同步:调用发出之后不会立即返回,但一旦返回,则返回即是最终结果;

    异步:调用发出之后,被调用方立即返回消息,但返回的并非最终结果;被调用者通过状态、通知机制等来通知调用者,或通过回调函数来处理结果;

  阻塞和非阻塞:block,noblock

    关注的是调用者等待被调用者返回调用结果时的状态

    阻塞:调用结果返回之衫,调用者会被挂起;调用者只有在得到返回结果之后才能继续;

    非阻塞:调用者在结果返回之前,不会被挂起,即调用不会阻塞调用者;

I/O模型:

  blocking IO:阻塞式IO

  noblocking IO

  IO multiplexing:复用型IO

    select(),poll()

  signal driven IO:事件驱动式IO

    通知:

      水平触发:多次通知;

      边缘触发:只通知一次;

  asynchronous IO:异步IO

 

Nginx:

  Igor Sysoev,Rambler Media

    Nginx:engine X

      Tengine

      Registry

    libevent:高性能的网络库

      epoll();

  Nginx特性:

    模块化设计、较好的扩展性;

    高可靠

      master --> worker

    低内存消耗

      10000个keep-alive模式下的connection,仅需2.5MB的内存;

    劫持热部署

      不停机更新配置文件、日志文件滚动,升级程序版本;

    劫持事件驱动、AIO、mmap;

  Nginx的基本架构:

    一个master进程, 生成一个或多个worker进程;

    事件驱动:kqueue, epoll(边缘触发), /dev/poll

      复用器:select, poll, rt signal

    支持sendfile, sendfile64

    支持AIO

    支持mmap

  nginx的工作模式:非阻塞、事件驱动、由一个master进程生成多个worker线程,每个worker响应n个请求;

  nginx的模块类别:

    核心模块
    标准http模块
    可选的http模块
    邮件模块
    第三方扩展模块

  安装方法:
    源码:编译安装
    制作好的程序包:rpm包

  编译安装:

    # useradd -r nginx

    # ./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --user=nginx --group=nginx --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_mp4_module --http-client-body-temp-path=/var/tmp/nginx/client --http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi

    # make && makeinstall

    # mkdir -pv /var/tmp/nginx/{clent,fastcgi,proxy,uwsgi}

  

  配置文件:

    main配置段:全局配置段

      event{ }:定义event模型工作特性

    http{ }:定义http协议相关的配置

    配置指令:要以分号结尾,语法格式;

      directive value1 [ value2...]

    支持使用变量:

      内置变量:

        模块会提供内建变量定义

      自定义变量:

        set var_name vlaue

    主配置段的指令:

      用于调试、定位问题

      正常运行必备的配置

      优化性能配置

      事件相关配置

 

posted on 2019-05-24 21:48  搬马  阅读(119)  评论(0编辑  收藏  举报