关于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可以提高效率

用户访问网页的基本过程(不包含缓存功能):

  1. 一个请求发到内核(通过socket套接字,到网卡,然后会被Linux的防火墙接收,如果请求的对象是自己,它会判断是不是本地进程的端口,如果是就直接提交到用户空间的相应进程,否则就丢弃)

  2. 内核交给用户空间的服务进程,服务进程发现用户请求的是一个页面文件,然后服务进程发起系统调用

  3. 内核通过磁盘IO获取响应内容

  4. 内核获取了数据之后交给服务进程

  5. 然后服务进程封装成响应报文,然后再送进内核

  6. 由内核向外响应

      本文转自linuxjavachen  51CTO博客,原文链接:http://blog.51cto.com/littledevil/1901385,如需转载请自行联系原作者

Nginx(一):Nginx介绍相关推荐

  1. Nginx安装方式介绍

    Nginx安装方式介绍 Nginx的安装方式有两种分别是: 通过Nginx源码通过Nginx源码简单安装 (1)通过Nginx源码复杂安装 (3) 通过yum安装 (2) 如果通过Nginx源码安装需 ...

  2. Nginx 的配置文件介绍

    Nginx配置文件主要分成四部分: 1 2 3 4 5 6 7 8 9 10 11 12 main(全局设置).server(主机设置).upstream(负载均衡服务器设置)和 location(U ...

  3. Nginx的Gzip介绍之压缩和解压缩

    Nginx的Gzip介绍之压缩和解压缩 本节介绍如何配置响应的压缩或解压缩以及如何发送压缩文件. 介绍 压缩响应通常会大大减少传输数据的大小.但是,由于压缩是在运行时发生的,因此还会增加大量的处理开销 ...

  4. CentOS服务器下nginx防盗链介绍与配置

    转载来源 : CentOS服务器下nginx防盗链介绍与配置 : safebase.cn/article-256622-1.html 一.防盗链介绍 1.什么是防盗链 简单的说,就是某些不法的网站,通 ...

  5. Nginx——基本功能介绍

    1.静态HTTP服务器 首先,Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML.图片)通过HTTP协议展现给客户端. 配置: 1 2 3 4 5 6 server {listen ...

  6. nginx中location介绍

    http://www.cnblogs.com/lidabo/p/4169396.html   博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅  :: 管理 ::   ...

  7. Nginx超详细介绍 nginx入门 nginx配置 nginx详解 nginx优化

    # 此文加上部署课程一起 nginx文档 nginx配置基本全了 nginx七种状态(tcp是11种状态) #nginx七种状态 Active connections: 2 server accept ...

  8. nginx常用功能介绍

    一.什么是nginx? nginx是一款轻量级的Web 服务器 .反向代理服务器及电子邮件(IMAP/POP3)代理服务器.主要有反向代理,负载均衡的功能. 官方网站为:http://nginx.or ...

  9. Nginx常用命令介绍

    #安装nginx准备工作 yum install gc yum -y install pcre-devel yum install -y zlib-devel #编译安装 ./configure ma ...

  10. Nginx research, nginx module development

    catalog 1. 初探nginx架构 2. handler模块 3. Nginx编译.安装.配置 4. Hello World模块开发 1. 初探nginx架构 nginx在启动后,在unix系统 ...

最新文章

  1. 用leangoo怎么做迭代管理?(Sprint Backlog、任务看板、燃尽图)
  2. redis常用命令(基础篇)
  3. 【kudu】未解决 Flink 读取 kudu KuduReaderIterator not found it may have expired
  4. Android零基础入门第85节:Fragment使用起来非常简单
  5. Bailian2699 自整除数【进制】
  6. 视频开头独白怎么做?一分钟学会
  7. 悟空遥控器 android 5.1,悟空遥控器服务端
  8. 5分钟_SpringBoot集成ES实现存储、查询
  9. 绘制热力图seaborn.heatmap,cmap设置颜色的参数
  10. 把乐谱换成c语言程序的软件,有没有什么软件可以把音乐换成简谱?
  11. Java求一元二次方程的根
  12. 【iOS沉思录】如何招聘一个靠谱的 iOS程序员+面试题详解
  13. 重构笔记——提炼函数
  14. 野火STM32资源免费下载(视频,资料、手册、书籍等免费下载),知识传递
  15. 自动投票软件的编写代码
  16. 进击的PyTorch,和它背后的开源领袖
  17. mobx autoRun computed 你学会了吗?
  18. 【转】CAN接口电路的 EMC设计方案(工业)
  19. ad中电容用什么封装_电容补偿柜是做什么用的?
  20. 利用C语言完成倒计时关机

热门文章

  1. 咦?Storyboard在WPF变换中怎么不能用了?
  2. 创建log文件的代码
  3. Jquery 实现动态添加输入框编号
  4. 《企业软件交付:敏捷与高效管理精要》——2.2 MyCo公司和MyProj企业软件交付项目...
  5. Lua环境配置和工具介绍
  6. 要理解递归,得先理解递归--用Java语言由浅入深讲解汉诺塔游戏
  7. EasyUI 的Tab 标签添加右键菜单
  8. SQL应用与开发:(七)数据操作 #183; 查 #183; (一)常规型
  9. iPhone7,苹果最后的摇钱树
  10. codeforces 369C Valera and Elections