Nginx(一):Nginx介绍
关于Nginx:
Nginx主要的2个用途是静态页面web服务器和7层反向代理web服务器(常见的协议都可以做反向代理),而且它本身还具有很大的缓存功能,但是一般缓存文件元数据(描述符)或者文件数据,但是缓存能力有限,如果要发挥其缓存能力就需要用第三方扩展。
其实真正实现缓存功能是varnish、squid(轻量级的,很多用于CDN服务器)。Varnish是专业级的缓存工具,但任何缓存工具本身都是反向代理,所以它本身也是一个web的反向代理服务,不过它的反向代理功能就差很多。
在web反向代理领域尤其是负载均衡方面有一个强大的对手就是HAproxy,从名字上看是HA,但是它本身实现的并不是一种高可用服务,它提供的是基于应用层和TCP的反向代理,它可以应用在MySQL和HTTP等做负载均衡。
在中大型站点中可能会用到MogileFS,它用作图片存储,是一种分布式文件系统。
Apache功能也很多,但是它诞生到现在太久了,所以它是一个重量级的WEB服务器,它不支持高并发,但是它以稳定为主。在MPM中早先流行的是prefork,它的模式是一个进程响应一个用户请求,如果一个进程需要1M内存,那如果1万呢,要多少内存?太消耗资源,这也就是后来Apache引入了event机制。面对Apache的现状也就是出现了c10k的问题,就是1万连接。还有人专门讨论过,所以就出现了轻量级的WEB服务器,能够突破10K。
基本功能:
静态资源的WEB服务器,另外还可以自动缓存打开的文件描述符(如果文件被用户访问过它就会直接缓存在内存中)
反向代理服务器,缓存、负载均衡
支持Fastcgi协议,可以和PHP的FPM协议工作。
Nginx是模块化的,从1.9.1开始支持动态装载。支持ZIP过滤去,SSI和图像大小调整。不过Tengine可以使用DSO。
基于名称和IP做虚拟主机、支持长连接、支持平滑升级、URL地址重写、支持速率和并发限制等。
基本结构:
Nginx的结构和Apache类似,有一个Master进程和多个work进程(也可称作线程,原因看说明1)。至于有多少可以自己调整,一个work进程可以相应多个用户请求,所以不是一对一的。理论来说一个work进程就够了,但是到底要启动多少个work进程,这取决于你的CPU物理核心数。work进程数量小于物理核心数量。也就是尽量避免进程切换,同时也要给操作系统留一个物理核心。极具性能的做法是,留出1个物理核心给操作系统,这个可以指定。其余的都分配给Nginx的work进程。对于操作系统来说一个物理核心就是一个CPU。比如2个物理CPU,每个是6核心,同时启动超线程,那么在系统上看到的就是24核心,也就是24个CPU。
一般会这样做,就是明确指定操作系统使用一个物理核心,然后手动的把其他核心的都绑定到Nginx的work进程上去。这就是Nginx优化之一。这么做就是为了避免切换次数。
如果Nginx作为反向代理的话,还会启动其他进程,比如管理缓存的。
Nginx是基于事件驱动机制,包括kqueue、epoll,/dev/poll;另外它还支持消息通知也就非事件驱动的select、poll等,不过这些也不是真正意义的通知。
支持sendfile,sendfile可以提高效率
用户访问网页的基本过程(不包含缓存功能):
一个请求发到内核(通过socket套接字,到网卡,然后会被Linux的防火墙接收,如果请求的对象是自己,它会判断是不是本地进程的端口,如果是就直接提交到用户空间的相应进程,否则就丢弃)
内核交给用户空间的服务进程,服务进程发现用户请求的是一个页面文件,然后服务进程发起系统调用
内核通过磁盘IO获取响应内容
内核获取了数据之后交给服务进程
然后服务进程封装成响应报文,然后再送进内核
由内核向外响应
Nginx(一):Nginx介绍相关推荐
- Nginx安装方式介绍
Nginx安装方式介绍 Nginx的安装方式有两种分别是: 通过Nginx源码通过Nginx源码简单安装 (1)通过Nginx源码复杂安装 (3) 通过yum安装 (2) 如果通过Nginx源码安装需 ...
- Nginx 的配置文件介绍
Nginx配置文件主要分成四部分: 1 2 3 4 5 6 7 8 9 10 11 12 main(全局设置).server(主机设置).upstream(负载均衡服务器设置)和 location(U ...
- Nginx的Gzip介绍之压缩和解压缩
Nginx的Gzip介绍之压缩和解压缩 本节介绍如何配置响应的压缩或解压缩以及如何发送压缩文件. 介绍 压缩响应通常会大大减少传输数据的大小.但是,由于压缩是在运行时发生的,因此还会增加大量的处理开销 ...
- CentOS服务器下nginx防盗链介绍与配置
转载来源 : CentOS服务器下nginx防盗链介绍与配置 : safebase.cn/article-256622-1.html 一.防盗链介绍 1.什么是防盗链 简单的说,就是某些不法的网站,通 ...
- Nginx——基本功能介绍
1.静态HTTP服务器 首先,Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML.图片)通过HTTP协议展现给客户端. 配置: 1 2 3 4 5 6 server {listen ...
- nginx中location介绍
http://www.cnblogs.com/lidabo/p/4169396.html 博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 :: 管理 :: ...
- Nginx超详细介绍 nginx入门 nginx配置 nginx详解 nginx优化
# 此文加上部署课程一起 nginx文档 nginx配置基本全了 nginx七种状态(tcp是11种状态) #nginx七种状态 Active connections: 2 server accept ...
- nginx常用功能介绍
一.什么是nginx? nginx是一款轻量级的Web 服务器 .反向代理服务器及电子邮件(IMAP/POP3)代理服务器.主要有反向代理,负载均衡的功能. 官方网站为:http://nginx.or ...
- Nginx常用命令介绍
#安装nginx准备工作 yum install gc yum -y install pcre-devel yum install -y zlib-devel #编译安装 ./configure ma ...
- Nginx research, nginx module development
catalog 1. 初探nginx架构 2. handler模块 3. Nginx编译.安装.配置 4. Hello World模块开发 1. 初探nginx架构 nginx在启动后,在unix系统 ...
最新文章
- 用leangoo怎么做迭代管理?(Sprint Backlog、任务看板、燃尽图)
- redis常用命令(基础篇)
- 【kudu】未解决 Flink 读取 kudu KuduReaderIterator not found it may have expired
- Android零基础入门第85节:Fragment使用起来非常简单
- Bailian2699 自整除数【进制】
- 视频开头独白怎么做?一分钟学会
- 悟空遥控器 android 5.1,悟空遥控器服务端
- 5分钟_SpringBoot集成ES实现存储、查询
- 绘制热力图seaborn.heatmap,cmap设置颜色的参数
- 把乐谱换成c语言程序的软件,有没有什么软件可以把音乐换成简谱?
- Java求一元二次方程的根
- 【iOS沉思录】如何招聘一个靠谱的 iOS程序员+面试题详解
- 重构笔记——提炼函数
- 野火STM32资源免费下载(视频,资料、手册、书籍等免费下载),知识传递
- 自动投票软件的编写代码
- 进击的PyTorch,和它背后的开源领袖
- mobx autoRun computed 你学会了吗?
- 【转】CAN接口电路的 EMC设计方案(工业)
- ad中电容用什么封装_电容补偿柜是做什么用的?
- 利用C语言完成倒计时关机
热门文章
- 咦?Storyboard在WPF变换中怎么不能用了?
- 创建log文件的代码
- Jquery 实现动态添加输入框编号
- 《企业软件交付:敏捷与高效管理精要》——2.2 MyCo公司和MyProj企业软件交付项目...
- Lua环境配置和工具介绍
- 要理解递归,得先理解递归--用Java语言由浅入深讲解汉诺塔游戏
- EasyUI 的Tab 标签添加右键菜单
- SQL应用与开发:(七)数据操作 #183; 查 #183; (一)常规型
- iPhone7,苹果最后的摇钱树
- codeforces 369C Valera and Elections