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

        主配置段的指令:

          用于调试、定位问题

          正常运行必备的配置

          优化性能配置

          事件相关配置

  • 相关阅读:
    如何使用SAP Intelligent Robotic Process Automation自动操作Excel
    OpenSAML 使用引导 IV: 安全特性
    Spring Cloud Zuul 网关使用与 OAuth2.0 认证授权服务
    微服务架构集大成者—Spring Cloud (转载)
    Spring Cloud Eureka 服务注册列表显示 IP 配置问题
    使用 Notification API 开启浏览器桌面提醒
    SignalR 中使用 MessagePack 序列化提高 WebSocket 通信性能
    配置 Nginx 的目录浏览功能
    关于 Nginx 配置 WebSocket 400 问题
    Migrate from ASP.NET Core 2.0 to 2.1
  • 原文地址:https://www.cnblogs.com/sq5288/p/10920392.html
Copyright © 2011-2022 走看看