第一章 Nginx基础介绍
一、Nginx概述
Nginx是一个开源且高性能、可靠的Http Web服务、代理服务。它具有有很多非常优越的特性: 单机环境下参考服务器配置。 并发连接数在7000+ -8000左右。 集群模式20000+。
作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。能够支持高达 50,000 个并发连接数的响应。
作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服 务。Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。
作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(早开发这个产品的目的之一也是作为邮件 代理服务器),Last.fm 描述了成功并且美妙的使用经验。 Nginx 安装非常的简单,配置文件 非常简洁(还能够支持perl语法),Bugs非常少的服务器: Nginx 启动特别容 易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下进行 软件版本的升级。
二、Nginx发展背景
NetCraft在2018年发布的web服务器调查报告中,排名前三的依然是Microsfot、Apache和Nginx。其中Nginx每年都在不断递增。
该软件由俄罗斯人Igor Sysoev于2004年首次公开发布。
Nginx凭借其稳定性、低资源消耗、简单配置和丰富的功能,从十多年前名不见经传的Web服务器软件,发展到如今能够跟Apache匹敌的地位。
三、Nginx特点
#1.高性能高并发
性能高,支持海量并发,当并发特别高的时候,nginx比其他的web服务响应速度快
#2.轻量且高扩展性
功能模块多,但仅需要保留必要的模块
需要哪个模块添加哪个模块,可以兼容第三方模块
#3.高可靠性
很多web服务跑一段时间后需要重启,nginx不需要
nginx支持宕机时间级别为 9999、99999
#4.支持热部署
nginx可以在开机情况下进行升级和重启
#5.互联网公司使用nginx
nginx技术成熟,可以做负载,安全,web,缓存
#6.nginx支持epool网络模型
1)epool:当用户发起请求,直接对请求的内容进行处理
当用户发起请求,epool模型会直接进行处理,效率高效,并无连接限制。
2)select:当用户发起请求,先遍历扫描数据,然后对请求的内容进行处理
当用户发起一次请求,select模型就会进行一次遍历扫描,从而导致性能低下。
总结:
1.开源: 直接获取源代码
2.高性能: 支持海量并发
3.可靠: 服务稳定
四、其他Web服务
#1.apache
Apache是一款非常有名的应用软件。它是世界上使用最广泛的Web服务器应用程序,在商业Web服务器市场中占有超过50%的份额。 Apache是类Unix操作系统中使用最广泛的Web服务器应用程序,但几乎可用于所有平台,如Windows,OS X,OS / 2等.Aracle这个词取自Native的名称 美国部落’阿帕奇’,以其在战争和战略制定方面的技能而闻名。
它是一个基于流程的模块化Web服务器应用程序,它通过每个同时连接创建一个新线程。 它支持许多功能; 其中许多都被编译为单独的模块并扩展其核心功能,并且可以提供从服务器端编程语言支持到身份验证机制的所有功能。 虚拟主机就是这样一种功能,它允许单个Apache Web服务器为许多不同的网站提供服务。
最早使用的web服务,难以掌握,性能不高
#2.nginx
1)Tengine:Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。
其详细的特性可以访问官网:https://tengine.taobao.org/
2)OpenResty:OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
OpenResty 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。
OpenResty 的目标是让你的Web服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。
#3.lighttpd
消耗的内存和cpu较低
#4.IIS
windows的web服务
#5.GWS
Google web server
#6.BWS
baidu web server
五、Nginx应用场景
Nginx是一个异步框架的Web服务器,可以用作反向代理服务、负载均衡、API服务、静态资源服务和HTTP缓存服务。
六、Nginx的版本介绍
Nginx目前分为开源版本和商业版本(Nginx Plus)
#1.开源版:nginx.org
#2.商业版:nginx.com
官方文档:https://www.nginx.com/products/nginx/#compare-versions
两个版本区别还是很大的,具体如下:
Feature |
OSS |
Nginx Plus |
Load balancer |
- |
- |
HTTP/TCP/UDP support |
Y |
Y |
Layer 7 request routing |
Y |
Y |
Active health checks |
N |
Y |
Session persistence |
N |
Y |
DNS service‑discovery integration |
N |
Y |
Content cache |
- |
- |
Static/Dynamic content caching |
Y |
Y |
Cache‑purging API |
N |
Y |
Web server/Reverse proxy |
- |
- |
Origin server for static content |
Y |
Y |
Reverse proxy: HTTP, FastCGI, memcached, SCGI, uwsgi |
Y |
Y |
HTTP/2 gateway |
Y |
Y |
gRPC proxy |
Y |
Y |
HTTP/2 server push |
Y |
Y |
Security controls |
- |
- |
HTTP Basic Authentication |
Y |
Y |
HTTP authentication subrequests |
Y |
Y |
IP address‑based access control lists |
Y |
Y |
Rate limiting |
Y |
Y |
Dual‑stack RSA/ECC SSL/TLS offload |
Y |
Y |
TLS 1.3 support |
Y |
Y |
JWT authentication |
N |
Y |
OpenID Connect SSO |
N |
Y |
NGINX Web Application Firewall (additional cost) |
N |
Y |
Monitoring |
- |
- |
AppDynamics, Datadog, Dynatrace plug‑ins |
Y |
Y |
Extended status with 90 additional metrics |
N |
Y |
High availability (HA) |
- |
- |
Active‑active and active‑passive modes |
N |
Y |
Configuration synchronization |
N |
Y |
State sharing: Sticky‑Learn session persistence, rate limiting, key‑value stores |
N |
Y |
Programmability |
- |
- |
NGINX JavaScript module |
Y |
Y |
NGINX Plus API for dynamic reconfiguration |
N |
Y |
Key‑value store |
N |
Y |
Dynamic reconfiguration without process reloads |
N |
Y |
Streaming media |
- |
- |
Live streaming: RTMP, HLS, DASH |
Y |
Y |
VOD: Flash (flv), MP4 |
Y |
Y |
Adaptive bitrate VOD: HLS, HDS |
N |
Y |
MP4 bandwidth controls |
N |
Y |
Third party ecosystem |
- |
- |
Kubernetes Ingress controller |
Y |
Y |
OpenShift Router |
Y |
Y |
Dynamic modules repository |
N |
Y |
七、Nginx的版本策略
在Nginx中,有两个分支,分别为mainline和stable:
Mainline相当于开发分支,更新比较频繁,包含一些新功能或者bug修复,版本号的第二个数字如果是奇数,则是Mainline版本,如1.17.1
Stable分支是稳定版本,除非有重大的bug,否则在它生命周期内不会更新,版本号的第二个数字如果是偶数,就是Stable版本,如:1.16.0
最新版本可访问nginx官网地址:http://nginx.org/en/download.html
Nginx官网提供的一幅图来说明版本之间的关系: