zoukankan      html  css  js  c++  java
  • Linux:Day28(上) Nginx基础概念

    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

        主配置段的指令:

          用于调试、定位问题

          正常运行必备的配置

          优化性能配置

          事件相关配置

  • 相关阅读:
    查询数据库锁的SQL
    注解学习实例(模拟hibernate,table,column注解,拼装SQL)
    mongoDB学习笔记
    拼装SQL.例子
    MySQL实现类似Oracle序列的函数
    面试总结
    linux下常用命令
    PHP 中 flush() 与 ob_flush() 的区别
    PHP 使用共享内存的资料
    移动设备的web站开发和将web封转成移动端应用的一些资料
  • 原文地址:https://www.cnblogs.com/sq5288/p/10920392.html
Copyright © 2011-2022 走看看