Nginx介绍

engine X,2002年开发,分为社区版和商业版(nginx plus)
2019年 f5 Networks 6.7亿美元收购nginx
Nginx 免费 开源 高性能
http 和反向代理服务器,邮件代理服务器
tcp和udp代理服务器
解决c10k 问题(10k connections) 二次发行版
tengine
openresty 安全

Nginx功能介绍

静态的web资源服务器(html,image,js,css,txt等)
http/https协议的反向代理
支持fastcgi/uwsgi/scgi等协议反向代理动态请求
四层反向代理
imap4/pop3协议反向代理

基础特性

模块化设计,较好的扩展性
高可靠性
支持热部署:不停机更新配置文件,升级版本,更换日志文件
低内存消耗:1w个keep-alive非活动连接,仅需2.5M内存
事件驱动,aio,mmap,sendfile等

web服务相关的功能

虚拟机主机
支持keep-alive,和管道连接(利用一个连接做多次请求)
访问日志
url rewrite
路径别名
基于ip及用户访问控制
支持速率限制及并发数限制
重新配置和在线升级而无需中断客户的工作工作进程

Nginx主进程

* Nginx 服务器启动时运行的主要进程,它的主要功能是与外界通信和对内部其他进程进程管理
* 读取Nginx配置文件并验证其有效性和正确性
* 建立,绑定和关闭Socket
* 按照配置生成,管理和结束工作进程
* 接收外界指令,比如重启,升级,及推出服务器等指令
* 平滑重启
* 平滑升级,失败回滚
* 开启日志文件,获取文件描述符
* 编译和处理Perl脚本

工作进程

* 由主进程生成,生成数量可以通过Nginx配置文件指定,正常情况下生存与主进程的整个生命周期
* 接收客户端请求
* 将请求一次送入各个功能模块进行滤处理
* IO调用,获取相应数据
* 与后端服务器通信,接受后端服务器处理结果
* 数据缓存,访问缓存索引,查询和调用缓存数据
* 发送请求结果,响应客户端请求
* 接收程序指令,比如重启,升级和退出等指令

缓存索引创建及管理进程

* 在nginx启动一段时间后(默认一分钟)有主进程生成,在缓存元数据重建完成就退出
* 根据本地磁盘上的缓存文件在内存中建立索引元数据库,
* 负责在索引元数据更新完成后,对元数据库是否过期做出判断

http连接建立和请求处理过程

Nginx启动时,Master进程:加载配置文件
Master进程:初始化监听socket
master:fork出多个worker进程
worker进程,竞争新的连接,获胜方通过三次握手,建立socket连接,并处理请求

nginx架构图

nginx 模块图

10.3 Nginx的更多相关文章

  1. ubuntu 16.10安装nginx

    1 : cd /usr/local 2 : sudo wget http://nginx.org/download/nginx-1.2.8.tar.gz 3 : sudo tar -zxvf ngin ...

  2. Nginx 笔记与总结(10)Nginx 与 PHP 整合

    Apache + PHP 的编译 和 Nginx + PHP 的编译,区别: Apache 一般把 PHP 当作自己的一个模块来启动: Nginx 则是把 HTTP 请求变量(如 get,user_a ...

  3. 转 10 个 Nginx 的安全提示

    Nginx是当今最流行的Web服务器之一.它为世界上7%的web流量提供服务而且正在以惊人的速度增长.它是个让人惊奇的服务器,我愿意部署它. 下面是一个常见安全陷阱和解决方案的列表,它可以辅助来确保你 ...

  4. win 10安装Nginx,php,mysql 小计

    一直没有尝试Nginx作为Web服务器,时常用的是apache,在Ubuntu下,输入一些安装命令就可以把LAMP环境比较轻松的搭建起来. 系统: windows 10 NT ,Nginx-1.14. ...

  5. 10、nginx+uwsgi+django部署(动静分离)

    10.1.说明: 1.介绍: 创建Django项目,可以通过 pyhon3 manage.py runserver 0.0.0.0:8080 & 命令更方便地调试程序,但是如果当一个项目完成了 ...

  6. Nginx系列(10)- Nginx配置文件详解

    nginx文件结构 ... #全局块 events { #events块 ... } http #http块 { ... #http全局块 server #server块 { ... #server全 ...

  7. 10.6 Nginx 高并发连接

    Nginx 高并发连接 什么是IO,输入输出      Web服务器IO的整个详细过程             (1)客户发起请求到服务器网卡:         (2)服务器网卡接受到请求后转交给内核 ...

  8. window 7/8/10 安装nginx

    1.百度 nginx   找到    http://nginx.org/   官网 2.找到一个nginx 版本  如 最新版本 2018-12-25  nginx-1.15.8 mainline v ...

  9. 【10】Nginx:后面有无 / 的区别

    写在前面的话 在 nginx 中,我们很多时候都有一个疑问,在 proxy_pass 或者 root 或者 location 后面需不需要加上 /,加和不加有啥区别. root  / alias 后面 ...

  10. 10.13 Nginx 负载均衡

    七层负载均衡server { listen 80; server_name localhost; location / { proxy_pass http://name; //调用集群 } } ups ...

随机推荐

  1. Java finally语句到底是在return之前还是之后执行

    看过网上关于Java中异常捕获机制try-catch-finally块中的finally语句是不是一定会被执行的讨论也有很多. 首先明确一点,下面两种情况finally肯定是不执行的: 1). ret ...

  2. linux0.01内核源码结构

    目录 boot 系统引导. fs 文件系统. include 头文件.一些C标准库,系统核心库. init 入口.main.c. kernel 内核. lib 库.C源程序,一些基本核心的程序. mm ...

  3. nacos配置

    server: port: 3377 spring: application: name: nacos-config-client cloud: nacos: discovery: #nacos 服务 ...

  4. Ubuntu下安装Python3(与旧Python2版本共存)

    官网下载Python3的源码 进行配置,在源码目录运行如下命令. ./configure --prefix=/usr/local/python3 --enable-shared 进行编译,在源码目录运 ...

  5. 痞子衡嵌入式:MCUXpresso IDE下SDK工程在Build配置上与IAR,MDK差异

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下SDK工程在Build配置上与IAR,MDK差异. 恩智浦 SW 团队每个季度都会公布 SDK.Tool ...

  6. QT如何发布应用程序和图标

    1.程序图标 ①创建一个图标格式的文件,可以网上在线将普通的图形格式转成.ico 格式的图标文件 http://www.faviconico.org/ 这个网站可以在线转换png.jpg.gif文件为 ...

  7. AndroidJetpack Fragment之Navigation和ViewPager2

    新的Fragment导航方式:Navigation 1.创建若干个fragment 2.添加导航 1)新建Navigation:右键res文件夹,New->Android Resource Fi ...

  8. golang context包

    go context标准库 context包在Go1.7版本时加入到标准库中.其设计目标是给Golang提供一个标准接口来给其他任务发送取消信号和传递数据.其具体作用为: 可以通过context发送取 ...

  9. 小程序使用 lodash 的问题

    import _ from 'lodash' 报错: vendor.js:11874 Uncaught TypeError: Cannot read property 'prototype' of u ...

  10. 史上最全git命令集

    配置化命令 git config --global user.name "Your Name" git config --global user.email "email ...