• 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

        主配置段的指令:

          用于调试、定位问题

          正常运行必备的配置

          优化性能配置

          事件相关配置

  • 相关阅读:
    设置通过数字证书方式登录远程连接Linux服务器,禁止root账户远程密码方式远程连接服务器
    Windows server 2003 粘滞键后门+提权
    CVE-2017-7494复现 Samba远程代码执行
    SQL盲注学习-时间型
    SQL盲注学习-布尔型
    关于绿盟RSAS使用时遇到的问题
    SQL注入学习
    CentOS7,zabbix3.4通过,zabbix-Java-gateway监控Tomcat
    (转)输入pipt提示:AttributeError: 'module' object has no attribute 'HTTPSConnection'
    pip安装cx_Oracle报错:error code 1 in /tmp/pip-build-root/cx-Oracle
  • 原文地址:https://www.cnblogs.com/sq5288/p/10920392.html
Copyright © 2020-2023  润新知