Nginx (engine x)是两个开放源码的,具有高效能、高mammalian、高效率的WWW服务项目和相关服务项目应用软件。
由白俄罗斯人 IgorSysoev 合作开发,译者将源码以类 BSD 许可的方式开放源码出供亚洲地区采用。
2019年,F5将全面收购 NGINX,总值约为6.7万美元。F5 阻抗平衡供应商。
Nginx的源码,因此能完全免费采用。
高效能,是说反应速度十分快,且耗用的天然资源较低。
高mammalian,全力支持并发相连1-5万,且耗用的天然资源较低。
高可信,充分体现在服务项目十分平衡。
mammalian5万,说的是动态小文档,NGINX(5万mammalian)+PHP(700个mammalian)。
优先选择Nginx其原因
1、开放源码、完全免费
2、功能强大、因此简单易用
3、高效能、高mammalian
4、高效率、高可扩展性(模块多,合作开发第三方模块)
5、社区活跃(前1万互联网网站),排名no.1,且增长快。
Nginx生态状况
OpenResty?是两个基于Nginx与Lua的高效能Web平台,其内部集成了大量精良的Lua库、第三方模块以及大多数的依赖项
用于方便地搭建能够处理超高mammalian、扩展性极高的动态Web应用、Web服务项目和动态网关。诞生于 2007 年
Kong网关是一款基于OpenResty(Nginx+Lua模块)编写的高可用、易扩展的,由Mashape公司开放源码的API Gateway项目
Kong是基于NGINX和Apache Cassandra或PostgreSQL构建的,能提供易于采用的RESTful API来操作和配置API管理系统,所以它能水平扩展多个Kong服务项目器,通过前置的阻抗平衡配置把请求均匀地分发到各个Server,来应对大批量的网络请求
Lua是脚本语言,nginx+Lua是脚本语言,对请求过滤、控制
mysql-proxy 读写分离应用软件 采用lua合作开发的
Tengine是由淘宝网发起的Web服务项目器项目(http://tengine.taobao.org/)
Nginx企业应用
| 作为Web服务项目应用软件
Nginx是两个全力支持高效能、高mammalian的Web服务项目应用软件,它具有很多优越的特性,作为Web服务项目器,和Apache相比,Nginx能够全力支持更多的mammalian相连访问,而占用的天然资源却更少,效率更高,在功能上也强大了很多,几乎不逊色于Apache,而且Nginx更新频率更快,社区用户更火爆。
1、Nginx是两个动态Web服务项目应用软件,采用Nginx运行HTML、JS、CSS、小图片等动态数据(此功能类似lighttpd应用软件)apache,lighttpd,IIS,Node.js
2、全力支持动静分离功能apache,lighttpd,IIS
3、全力支持动态Web服务项目扩展PHP(fastcgi_pass)JAVA(proxy_pass)Python(uwsgi_pass)memcache(memcache_pass)……
Nginx结合FastCGI运行PHP动态程序(采用fastcgi_pass方式)
Nginx结合proxy_pass全力支持tomcat动态程序(采用proxy_pass)
Nginx结合uwsgi_pass全力支持Python(采用uwsgi_pass)
4、全力支持安全的Web服务项目(https)全站HTTPS是以耗用性能为代价的,其实能登陆用https,支付采用https
| 作为反向代理或阻抗平衡服务项目应用软件
在反向代理或阻抗平衡服务项目方面,Nginx能作为Web服务、PHP/Tomcat/Python等动态服务项目及Memcached缓存的相关服务项目器,它具有类似专业反向代理应用软件(如Haproxy)的功能,同时也是两个优秀的邮件相关服务项目应用软件(最早合作开发这个产品的目的之一也是作为邮件相关服务项目),在Nginx的代理功能方面,已经全力支持TCP和UDP的代理,Nginx的代理功能已经越来越强大了
1、阻抗平衡同类应用软件:haproxy,lvs,硬件:F5,netscalernginx早期只全力支持http,现在也全力支持tcp/udp。全力支持tcp阻抗:阻抗mysql、应用服务项目。
2、反向代理与阻抗平衡区别强调
正向代理:由内向外。代替 效率低代替局域网内PC,请求外部应用服务项目。
反向代理:由外向内,代替,效率低代替外部的用户请求内部的应用服务项目器。
阻抗平衡:转发、效率高(LVS)甩手掌柜,后抛请求。
3、阻抗平衡和Web服务项目的走向
| 缓存服务项目器
在Web缓存服务项目方面,Nginx可通过自身的proxy_cache模块实现类Squid等专业缓存应用软件的功能。
常见缓存应用软件:squid,varnish,nginx,ats
| Nginx主要应用场景总结
1、动态Web服务项目器: 采用Nginx运行HTML、JS、CSS、小图片等动态数据(此功能类似lighttpd应用软件)。
2、配合运行动态Web服务项目器:Nginx结合FastCGI运行PHP等动态程序(例如采用fastcgi_pass方式)。Nginx结合proxy_pass全力支持Java动态程序(tomcat/resin服务项目)。Nginx结合uwsgi_pass全力支持Python。
3、反向代理/阻抗平衡http阻抗平衡
4、做Web缓存服务项目器(把文档放入内存里)。
5、全力支持安全的Web服务项目(https)
| Nginx核心特点
动态小文档高mammalian,占用天然资源少,而且应用软件本身小
1、全力支持高mammalian:能全力支持几万mammalian相连(特别是动态小文档业务环境)
2、天然资源耗用少:在3万mammalian相连下,开启10个Nginx线程耗用不到200MB内存
3、能做HTTP反向代理及加速缓存,即阻抗平衡功能,内置对RS节点服务项目器健康检查功能,这相当于专业的haproxy应用软件或lvs的功能。具有squid等专业缓存应用软件等的缓存功能
| Nginx epoll模型和Apache select模型区别
Nginx采用最新的epoll(Linux2.6内核)和kqueue(freebsd)异步网络I/O模型,而Apache则采用的是传统的select模型
目前Linux下能够承受高mammalian访问的Squid、Memcached应用软件都采用的是epoll模型
简单总结:
1、epoll和select网络IO处理模型
2、epoll异步网络IO模型,全力支持高mammalian
3、select传统的网络IO模型,高mammalian能力弱
4、Apache则采用的是传统的select模型,Nginx采用高mammalian的epoll模型
异步和同步:以及异步的动态化的案例
网络IO模型概述
通常来说,网络IO能抽象成用户态和内核态之间的数据交换。一次网络数据读取操作(read),能拆分成两个步骤:
1、网卡驱动等待数据准备好(内核态)
2、将数据从内核空间拷贝到进程空间(用户态)
根据这两个步骤处理方式不一样,我们通常把网络IO划分成阻塞IO和非阻塞IO
| Nginx应用软件核心组成
1、Nginx可执行命令:
它是Nginx本身框架以及相关模块等构建的两个二进制文件,这个文档就相当于汽车本身,所有的功能都由它提供
2、nginx.conf配置文档:
它相当于驾驶人员,虽然二进制可执行文档已经提供了许多的功能,但是这些功能究竟有没有开启,或者开启后定义怎样的行为去处理请求,都是由nginx.conf这个文档决定的,所以他就相当于这个汽车的驾驶员,控制这个汽车的行为
3、访问日志access.log:
它相当于这辆汽车经过所有地方形成的GPS轨迹,access.log会记录Nginx处理过的每一条HTTP的请求信息、响应信息
4、错误日志error.log:
它相当于飞机的黑匣子,当出现了一些不可预期的问题时,能通过error.log将问题定位出
Nginx应用软件安装
| yum安装
配置nginx源
安装并启动
| 编译安装
下载源码包
安装依赖
编译安装步骤
验证最终的安装是否正确
configure参数作用
配置 nginx PATH环境变量
配置 systemd 启动方式
https://www.oldboyedu.com/blog/4332.html