@[TOC](文章目录)
一:Nginx介绍
1.1:nginx应用
■一款高性能、轻量级Web服务软件
nginx (engine x)是一个可以作为HTTP WEB服务器、反向代理服务器、邮件代理服务器和一个通用的TCP / UDP代理服务器(1.9.0版本后)的多功能架构组件,同时也可以提供一定的缓存服务功能
1.2:nginx基本架构:
1、一个master进程生成多个worker子进程(每个进程只有一个线程),一个worker响应多个用户请求;
2、非阻塞、IO复用、事件驱动:select,poll, epoll, kqueue,/dev/poll;
3、支持sendfile,sendfile64;
4、支持文件AIO(异步I/O);
5、支持mmap;
6、灵活的文件配置;
7、占用内存小:10,000个非活动HTTP保持连接占用大约2.5M内存
1.3:nginx基本功能
-
实现与服务静态文件(静态资源的web服务器),能缓存打开的文件描述符;
-
反向代理服务器,缓存、负载均衡、健康状态检测;
-
支持FastCGI;
-
模块化机制,非DSO机制,支持多种过滤器gzip,SSI和图像的模块完成图形大小调整等;
支持SSL;
二:Nginx应用场景
nginx应用比较多的场景是WEB服务器和反向代理服务器,这两个场景的相关配置后面的文章我们会分别操作配置,这里先来认识下:
- Web服务器:
这是应用比较多的场景,配置虚拟主机提供HTTP WEB服务。可以先通过动态/静态内容分离,而后为静态内容(html/css/js/图片等)提供HTTP访问功能;而动态内容可以整合代理模块,代理给上游服务器,来支持对外部程序的直接调用或者解析,如FastCGI支持PHP。 - 反向代理服务器:
这是应用非常多的场景,为后端服务器代理。接收客户端请求,根据负载均衡策略转发给后端多个上游服务器处理;然后再等待后端服务器返回请求响应,接收到后再返回给请求的客户端。
三:nginx优点:
1:高并发性能的并发模型:性能好、占用内存少、稳定
- nginx的并发模型中最好设置worker进程与CPU核心数量差不多,而一个worker进程可以处理多个请求,比apache一个进程/一个线程响应一个请求的并发模型,可以大大减少进程/线程数量,减少重复的数据,所以内存使用效率较高,占用内存资源少,同时减少CPU调度和上下文切换次数,所以nginx要比apache更"轻量",且性能更好;
- 一个worker进程绑定一个CPU核心,更是可以让nginx充分发挥CPU的计算能力来处理请求。
- 使用IO复用机制避免阻塞,可以处理更多的任务;
- 多个worker进程互不影响,不像多线程模型,一个线程出问题可能使整个进程内其他线程都崩溃,所以nginx稳定,健壮性好。
●系统资源消耗低
●对HTTP并发连接的处理能力高
◆单台物理服务器可支持30000 ~ 50 000个并发请求
2.高扩展性
-
Nginx的模块化设计极具扩展性,它完全是由多个不同功能、不同层次、不同类型且耦合度极低的模块组成。因此,当对某一个模块修复Bug或进行升级时,可以专注于模块自身,无须在意其他。
-
这种低耦合度的优秀设计,造就了Nginx庞大的第三方模块,当然,公开的第三方模块也如官方发布的模块一样容易使用。
3:功能强大,应用前景广阔
- Nginx提供大量的功能模块,支持诸多特性,应用场景多
- 作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,能够支持高达50000个并发连接数的响应。
- 作为负载均衡服务器:Nginx既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服务。Nginx用C编写, 不论是系统资源开销还是 CPU 使用效率都比Perlbal要好的多。
4:配置/操作简便
- Nginx安装非常的简单,配置文件非常简洁(还能够支持perl语法),Bugs非常少的服务器: Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下进行软件版本的升级。