Nginx简介

Nginx(engine X)是一个开源、轻量级、高性能的HTTP和反向代理服务器,可以代理HTTP、 IMAP/POP3/SMTP和TCP/UDP协议;
其特点是占用内存少,并发能力强,采用C语言编写,所以在性能方面有一定保证。
Nginx是一个俄罗斯人伊戈尔·赛索耶夫开发的, 第一个公开版本0.1.0发布于2004年10月;截止到2017年7月11日,最新稳定
版是1.12。
与Nginx同类的Web服务有IIS、 Apache、 Tomcat等。

Nginx特性:

 模块化设计
 低内存消耗,高并发
 事件驱动,AIO
 高可靠性,master与worker架构
 支持热更新配置、日志文件滚动、平滑升级
 丰富的扩展模块

Nginx基本功能

 静态资源Web服务器
 基于域名/IP/端口的虚拟主机
 HTTP/HTTPS、 SMTP、 POP3和TCP/UDP反向代理
 负载均衡
 页面缓存
 支持代理FastCGI、 uWSGI等应用服务器
 支持gzip、 expires
 URL Rewrite
 路径别名

 基于IP、用户的访问控制
 支持访问速率、并发限制
 等…

Nginx架构

主进程( master process):
1. 主要功能与外界通信和工作进程管理;
2. 读取nginx配置文件并验证有效性;
3. 建立、绑定和关闭socket;
4. 按照配置文件生成、管理和结束工作进程;
5. nginx重启、停止、重载配置文件、平滑升级、管理日志文件等。

工作进程( worker process):
1. 接收客户端请求,将请求交给各个功能模块处理;
2. 系统IO调用,获取响应的数据,发送响应给客户端;
3. 数据缓存管理;
4. 接收主进程指令,比如重启、关闭等。

缓存索引重建及管理进程( cache loader & cache manager) :
cache模块,主要由缓存索引重建( cache loader)和缓存索引管理( cache manager)两个进程完成,缓存索引重
建进程是在进程在nginx服务启动一段时间之后(默认是1分钟)由主进程生成,对本地磁盘的索引文件在内存中建
立元数据库,包括扫描、过期更新等操作,完成后退出。

Nginx与Apache对比

 Nginx轻量级,比Apache占用内存更少,尤其是prefork模型;
 Nginx更抗并发,单机支持10万+QPS, Nginx处理请求是异步非阻塞的,而Aapche是阻塞的;
 Nginx采用多进程工作模式,而Apache有多进程和多进程多线程两种工作模式;
 Nginx高度模块化设计,有很多丰富的模块,更好的扩展性;
 Apache历史悠久(在九几年就已经流行了),稳定性要比Nginx高;
 采用网络I/O模型不同, Apache采用select, Nginx在Linux2.6+上采用epoll。

网络IO模型

简单来说,网络I/O是用户态和内核态之间的数据交换。
一次网络数据读取操作,大概是这样的:
应用进程通过系统调用( read) ->由用户态转到内核态->内核将请求的数据发送到内核缓冲区->应用进程查看内核
缓冲区是否有数据->如果有则把数据拷贝到用户态->完成I/O操作
 阻塞
 非阻塞
 同步
 异步
 IO多路复用

最新文章

  1. GitHub Desktop 桌面工具,离线版本下载(无需考虑网络问题)
  2. windows下使用mysql双机热备功能
  3. POJ2195 Going Home
  4. java servlet的工作原理
  5. Protractor
  6. Ubuntu 安装snmp报Unlinked OID in IPATM-IPMC-MIB: marsMIB ::= { mib-2 57 }错误
  7. 关于SVN版本分支合并的知识
  8. Swift翻译之-Swift语法入门 Swift语法介绍
  9. firefox浏览器删除插件
  10. #JavaScript对象与继承
  11. sql小总结2
  12. 在windows2003下可以用哪个版本的JDK
  13. linux下安装nginx和配置
  14. 20145315 《Java程序设计》第一周学习总结
  15. 爬虫框架Scrapy之Item Pipeline
  16. oracle 基础笔记
  17. Noip2015提高组解题报告
  18. 模仿慕课网一步步发布一个开源库到 JCenter
  19. 开元java开发工具
  20. php函数: set_include_path

热门文章

  1. “帮你”app-NABCD
  2. [转]using components in Cakephp 2+ Shell
  3. 带线表格据gt生成无线表格
  4. PAT乙级 1001(C)+1054(Java)
  5. (转载)CentOS 6.5使用aliyun镜像来源
  6. [转]Linux 技巧:让进程在后台可靠运行的几种方法
  7. selenium webdriver——控制浏览器
  8. knockout,change事件
  9. php 不重新编译增加openssl扩展
  10. Log4j官方文档翻译(三、配置)