Nginx记录-Nginx介绍
Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性:
作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。能够支持高达 50,000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型.
作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服务。Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。
作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。
Nginx 安装非常的简单,配置文件 非常简洁(还能够支持perl语法),Bugs非常少的服务器: Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在 不间断服务的情况下进行软件版本的升级。
代码结构
nginx工作(worker)码包括核心和功能模块。 nginx的核心是负责维护严格的运行循环,并在请求处理的每个阶段执行模块代码的适当部分。 模块构成了大部分的演示和应用层功能。 模块读取和写入网络和存储,转换内容,执行出站过滤,应用服务器端包含操作,并在代理启动时将请求传递给上游服务器。
nginx的模块化架构通常允许开发人员扩展一组Web服务器功能,而无需修改nginx内核。 nginx模块略有不同,即核心模块,事件模块,阶段处理程序,协议,可变处理程序,过滤器,上游和负载平衡器。nginx不支持动态加载的模块; 即在构建阶段将模块与核心一起编译。
在处理与接受,处理和管理网络连接和内容检索相关的各种操作时,nginx在基于Linux,Solaris和BSD的操作系统中使用事件通知机制和一些磁盘I/O性能增强,如:kqueue,epoll, 和事件端口。 目标是为操作系统提供尽可能多的提示,以便及时获取入站和出站流量,磁盘操作,读取或写入套接字,超时等异步反馈。 对于每个基于Unix的nginx运行的操作系统,大量优化了复用和高级I/O操作的不同方法的使用。
nginx架构的高级概述如下图所示 -

工作模式
如前所述,nginx不会为每个连接生成一个进程或线程。 相反,工作(worker)进程接受来自共享“listen”套接字的新请求,并在每个工作(worker)内执行高效的运行循环,以处理每个工作(worker)中的数千个连接。 没有专门的仲裁或分配与nginx工作(worker)的联系; 这个工作(worker)是由操作系统内核机制完成的。 启动后,将创建一组初始侦听套接字。 然后,工作(worker)在处理HTTP请求和响应时不断接受,读取和写入套接字。
运行循环是nginx工作(worker)代码中最复杂的部分。 它包括全面的内部调用,并且在很大程度上依赖异步任务处理的想法。 异步操作通过模块化,事件通知,广泛使用回调函数和微调定时器来实现。 总体而言,关键原则是尽可能不阻塞。 nginx仍然可以阻塞的唯一情况是工作(worker)进程没有足够的磁盘存储。
由于nginx不会连接一个进程或线程,所以在绝大多数情况下,内存使用非常保守,非常有效。 nginx也节省CPU周期,因为进程或线程没有持续的创建 - 销毁模式。 nginx的作用是检查网络和存储的状态,初始化新连接,将其添加到运行循环中,并异步处理直到完成,此时连接被重新分配并从运行循环中删除。 结合仔细使用系统调用(syscall)和精确实现支持接口(如pool和slab内存分配器),nginx通常可以在极端工作负载下实现中到低的CPU使用。
在一些磁盘使用和CPU负载模式,应调整nginx工作(worker)的数量。 在这里说一点基础规则:系统管理员应该为其工作负载尝试几个配置。 一般建议可能如下:如果负载模式是CPU密集型的,例如,处理大量TCP/IP,执行SSL或压缩,则nginx工作(worker)的数量应与CPU内核数量相匹配; 如果负载大多是磁盘I/O绑定,例如,从存储或重代理服务不同的内容集合 - 工作(worker)的数量可能是核心数量的一到两倍。有些工程师会根据个人存储单元的数量选择工作(worker)的数量,但这种方法的效率取决于磁盘存储的类型和配置。
nginx的开发人员将在即将推出的版本中解决的一个主要问题是如何避免磁盘I/O上的大多数阻塞。 目前,如果没有足够的存储性能来提供特定工作(worker)生成的磁盘操作,该工作(worker)可能仍然阻止从磁盘读取/写入。 存在许多机制和配置文件指令来减轻此类磁盘I/O阻塞情况。要注意的是,诸如:sendfile和AIO之类的选项的组合通常会为磁盘性能带来很大的余量。 应该根据数据集,可用于nginx的内存量和底层存储架构来规划安装一个nginx服务器。
现有工作(worker)模式的另一个问题是与嵌入式脚本的有限支持有关。 一个使用标准的nginx分发,只支持嵌入Perl脚本。一个简单的解释:关键问题是嵌入式脚本阻止任何操作或意外退出的可能性。 这两种类型的行为将立即导致工作(worker)挂起的情况,同时影响到数千个连接。 更多的工作(worker)计划是使nginx的嵌入式脚本更简单,更可靠,适用于更广泛的应用。
nginx进程角色
nginx在内存中运行多个进程; 有一个主进程和几个工作(worker)进程。 还有一些特殊用途的过程,特别是缓存加载器和缓存管理器。 所有进程都是单线程版本为1.x的nginx。 所有进程主要使用共享内存机制进行进程间通信。主进程作为root用户运行。 缓存加载器,缓存管理器和工作(worker)则以无权限用户运行。
主程序负责以下任务:
- 读取和验证配置
- 创建,绑定和关闭套接字
- 启动,终止和维护配置的工作(
worker)进程数 - 重新配置,无需中断服务
- 控制不间断的二进制升级(如果需要,启动新的二进制并回滚)
- 重新打开日志文件
- 编译嵌入式Perl脚本
工作(worker)进程接受,处理和处理来自客户端的连接,提供反向代理和过滤功能,并执行几乎所有其他的nginx能力。 关于监视nginx实例的行为,系统管理员应该关注工作(worker)进程,因为它们是反映Web服务器实际日常操作的过程。
缓存加载器进程负责检查磁盘缓存项目,并使用缓存元数据填充nginx的内存数据库。 本质上,缓存加载器准备nginx实例来处理已经存储在磁盘上的特定分配的目录结构中的文件。 它遍历目录,检查缓存内容元数据,更新共享内存中的相关条目,然后在所有内容清洁并准备使用时退出。
缓存管理器主要负责缓存到期和无效。 在正常的nginx操作期间它保持在内存中,并且在失败的情况下由主进程重新启动。
nginx缓存简介
在nginx中的缓存以文件系统上的分层数据存储的形式实现。 缓存密钥是可配置的,并且可以使用不同的请求特定参数来控制进入缓存的内容。 缓存密钥和缓存元数据存储在共享存储器段中,高速缓存加载器,缓存管理器和工作(worker)可以访问它们。 目前,除了操作系统的虚拟文件系统机制暗示的优化之外,没有任何内存中的文件缓存。 每个缓存的响应都放在文件系统上的不同文件中。 层次结构(级别和命名细节)通过nginx配置指令进行控制。 当响应写入缓存目录结构时,文件的路径和名称将从代理URL的MD5哈希导出。
将内容放置在缓存中的过程如下:当nginx从上游服务器读取响应时,内容首先写入缓存目录结构之外的临时文件。 当nginx完成处理请求时,它重命名临时文件并将其移动到缓存目录。 如果用于代理的临时文件目录位于另一个文件系统上,则该文件将被复制,因此建议将临时文件目录和缓存目录保存在同一文件系统上。 当需要显式清除缓存目录结构时,从文件中删除文件也是非常安全的。 nginx有第三方扩展,可以远程控制缓存的内容,还有更多的工作计划将此功能集成到主分发中。
Nginx记录-Nginx介绍的更多相关文章
- Nginx记录-Nginx基础(转载)
1.Nginx常用功能 1.Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理. Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能.Nginx可以根据不同的 ...
- Nginx记录-Nginx配置
1. 启动,停止和重新加载Nginx配置 要启动nginx,请运行可执行文件. 当nginx启动后,可以通过使用-s参数调用可执行文件来控制它. 使用以下语法: nginx -s signal 信号( ...
- Nginx记录-nginx 负载均衡5种配置方式(转载)
nginx 负载均衡5种配置方式 1.轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. 2.weight 指定轮询几率,weight和访问比率成 ...
- Nginx之基本介绍(一)
这是一篇介绍Nginx基本信息和配置文件详情的文章,适合入门者,如果你想深入了解Nginx请绕道 什么是Nginx? Nginx是轻量级,高性能,跨平台的web服务器 Nginx的特点 更快 单个请求 ...
- Nginx基础知识介绍
Nginx基础知识介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Nginx概述 Nginx是免费的.开源的.高性能的HTTP和正向/反向代理服务器.邮件代理服务器.以及T ...
- Nginx 1.相关介绍
转 https://www.cnblogs.com/wcwnina/p/8728391.html Nginx的产生 没有听过Nginx?那么一定听过它的"同行"Apache吧!Ng ...
- Nginx的相关介绍
前言 说到服务器,一定会想到apache的httpd和Nginx Apache的发展时期很长,而且是毫无争议的世界第一大服务器.它有着很多优点:稳定.开源.跨平台等等.它出现的时间太长了,它兴起的年代 ...
- nginx的一些介绍和使用
nginx 的安装 我们首先进行下载安装:http://nginx.org/download/nginx-1.4.2.tar.gz 安装准备: nginx依赖于pcre库,要先安装pcre 1 yum ...
- Nginx负载均衡介绍
Nginx真心牛逼 nginx不单可以作为强大的web服务器,也可以作为一个反向代理服务器,而且nginx还可以按照调度规则实现动态.静态页面的分离,可以按照轮询.ip哈希.URL哈希.权重等多种方式 ...
随机推荐
- Sprint4
进展:今天一天满课,晚上也没有做什么,所以今天一天没什么进展. 燃尽图:
- StringBuffer 与 StringBuilder类的使用
/*如果需要频繁修改字符串 的内容,建议使用字符串缓冲 类(StringBuffer). StringBuffer 其实就是一个存储字符 的容器. 笔试题目:使用Stringbuffer无 参的构造函 ...
- 17_常用API_第17天(包装类、System、Math、Arrays、大数据运算)_讲义
今日内容介绍 1.基本类型包装类 2.System类 3.Math类 4.Arrays类 5.大数据运算 01基本数据类型对象包装类概述 *A:基本数据类型对象包装类概述 *a.基本类型包装类的产生 ...
- HTTPS链式编程——AFNetworking 3.0
1. HTTPS 证书认证(导入相关证书) #pragma mark - https认证 - (AFSecurityPolicy*)customSecurityPolicy { // 先导入证书 NS ...
- 软工网络15团队作业8——Beta阶段敏捷冲刺(Day3)
提供当天站立式会议照片一张 每个人的工作 1.讨论项目每个成员的昨天进展 赵铭: 还是在学习知晓云数据库怎么用 吴慧婷:这两天进一步进行界面设计,暂时完成了背单词界面的初步设计. 陈敏: 完成了背单词 ...
- HDU 2106 母猪的故事
http://acm.hdu.edu.cn/showproblem.php?pid=2160 Problem Description 话说现在猪肉价格这么贵,著名的ACBoy 0068 也开始了养猪生 ...
- 三星vs苹果 2018Q3 财报 以及国内最赚钱的公司...
三星文字版为: 10月31日消息,据国外媒体报道,当地时间周三韩国三星电子公布季度财报,得益于市场对其存储芯片和其他零部件的强劲需求,营业利润创下历史新高.三星不仅在自家设备上使用自己生产的芯片,还向 ...
- [转帖] Oracle 关闭自动收集统计信息
--关闭自动统计信息 https://blog.csdn.net/royzhang7/article/details/51172556 明天再仔细看一下. select client_name,sta ...
- IPV6 简单总结
1. 转帖别人的内容 来源:https://www.2cto.com/net/201112/114937.html 2. 本地用IPV6单播地址 (包括链路本地单播地址 和 站点本地单播地址) 2.1 ...
- ACM数论之旅11---浅谈指数与对数(长篇)(今天休息,不学太难的数论> 3<)
c/c++语言中,关于指数,对数的函数我也就知道那么多 exp(),pow(),sqrt(),log(),log10(), exp(x)就是计算e的x次方,sqrt(x)就是对x开根号 pow()函数 ...