10.3 Nginx
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的更多相关文章
- 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 ...
- Nginx 笔记与总结(10)Nginx 与 PHP 整合
Apache + PHP 的编译 和 Nginx + PHP 的编译,区别: Apache 一般把 PHP 当作自己的一个模块来启动: Nginx 则是把 HTTP 请求变量(如 get,user_a ...
- 转 10 个 Nginx 的安全提示
Nginx是当今最流行的Web服务器之一.它为世界上7%的web流量提供服务而且正在以惊人的速度增长.它是个让人惊奇的服务器,我愿意部署它. 下面是一个常见安全陷阱和解决方案的列表,它可以辅助来确保你 ...
- win 10安装Nginx,php,mysql 小计
一直没有尝试Nginx作为Web服务器,时常用的是apache,在Ubuntu下,输入一些安装命令就可以把LAMP环境比较轻松的搭建起来. 系统: windows 10 NT ,Nginx-1.14. ...
- 10、nginx+uwsgi+django部署(动静分离)
10.1.说明: 1.介绍: 创建Django项目,可以通过 pyhon3 manage.py runserver 0.0.0.0:8080 & 命令更方便地调试程序,但是如果当一个项目完成了 ...
- Nginx系列(10)- Nginx配置文件详解
nginx文件结构 ... #全局块 events { #events块 ... } http #http块 { ... #http全局块 server #server块 { ... #server全 ...
- 10.6 Nginx 高并发连接
Nginx 高并发连接 什么是IO,输入输出 Web服务器IO的整个详细过程 (1)客户发起请求到服务器网卡: (2)服务器网卡接受到请求后转交给内核 ...
- window 7/8/10 安装nginx
1.百度 nginx 找到 http://nginx.org/ 官网 2.找到一个nginx 版本 如 最新版本 2018-12-25 nginx-1.15.8 mainline v ...
- 【10】Nginx:后面有无 / 的区别
写在前面的话 在 nginx 中,我们很多时候都有一个疑问,在 proxy_pass 或者 root 或者 location 后面需不需要加上 /,加和不加有啥区别. root / alias 后面 ...
- 10.13 Nginx 负载均衡
七层负载均衡server { listen 80; server_name localhost; location / { proxy_pass http://name; //调用集群 } } ups ...
随机推荐
- jQuery中的样式(七):addClass()、removeClass()、toggleClass()、hasClass()、css()、width()、height()等
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...
- 前端性能优化之http缓存
前不久,公司前端开会,领导抽问了4个问题,前3个简单大家都答起来了,第4个问题关于缓存的这方面我只是了解,结果刚好问到我了(会的不问,专门挑我不熟悉的问,我这运气真是没话说),20多个前端看着我,答得 ...
- Python中的文件处理和数据存储json
前言:每当需要分析或修改存储在文件中的信息时,读取文件都很有用,对数据分析应用程序来说尤其如此. 例如,你可以编写一个这样的程序:读取一个文本文件的内容,重新设置这些数据的格式并将其写入文件,让浏览器 ...
- Mybatis源码解析4——SqlSession
上一篇文章中,我们介绍了 SqlSessionFactory 的创建过程,忘记了的,可以回顾一下,或者看下下面这张图也行. 接下来,可乐讲给大家介绍 Mybatis 中另一个重量级嘉宾--SqlSes ...
- 洛谷P3768 简单的数学题解题报告
$$\begin{eqnarray}&\sum_{i=1}^{n}\sum_{j=1}^{n}ij\gcd(i,j)\\&\sum_{d=1}^{n}\sum_{i=1}^{n}\su ...
- [考试总结]noip模拟44
这个真的是一个 \(nb\) 题. 考试快要结束的时候,在机房中只能听到此起彼伏的撕吼. 啊---------- 然后人们预测这自己的得分. \(\color{red}{\huge{0}}\) \(\ ...
- Vue状态管理Vuex简单使用
状态管理保存在store\index.js中,简单说明如下 import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export def ...
- 获取input对应的的选项
需求是把所有题目中的选项ABCDEF等对应保存到后台, 这个问卷中有多选项和单选项 var data = {}; $(".u-box .u-item").each(function ...
- python库--pandas--部分实例
>>> pd.pivot( index=np.array(['one', 'one', 'one', 'two', 'two', 'two']), columns=np.array( ...
- linux系列之:告诉他,他根本不懂kill
目录 简介 使用kill来杀死进程 kill的深入用法 僵尸进程和kill java thread dump 总结 简介 和很多程序员打过交道,这些程序员可能熟知for遍历的好几种写法,但是却对写出来 ...