大数据、Java EE 学习资料请关注 B 站:https://space.bilibili.com/204792350

稍微介绍下 Nginx

简介

Ningx 是一个 HTTP 和反向代理服务器,一个邮件代理服务器和一个通用的 TCP/UDP 代理服务器 #优点 由于 Ningx 对硬件和操作系统的深度挖掘,使得在保持高并发(一般实现高并发只需要对每个连接所使用的内存尽量的少就可以达到)的同时实现高吞吐量,而它的优秀模块设计,让它的生态圈异常丰富。大量的第三方模块,让其可以轻松的在各种场景下定制化需求。还有他的可靠性,Ningx 可以在服务器上持续不间断的运行数年,并且 做到了热部署,不用停止 Nginx 服务的情况下,需要做修改或者升级,可以平滑的度过。

  • 高性能
  • 可扩展性好
  • 高可靠性
  • 热部署
  • BSD许可证

适合场景

Ningx 的主要应用场景

  • 静态资源服务
    • 通过本地文件系统提供服务
  • 反向代理服务
    • Nginx 的强大性能
    • 缓存
    • 负载均衡
  • API 服务
    • OpenResty

nginx使用场景

一个请求通常会先经过 Nginx服务器,然后 Ngixn 去访问应用服务,然后在访问 MySQL/Redis 等提供数据功能。

但是应用服务需要开发效率很高,所以运行效率很低。需要将数量不定的应用服务组成一个集群,向用户提供高可用性。由很多应用构成集群的时候,需要 Nginx 提供反向代理服务,可以将动态请求转导给应用服务。

而一旦应用构成集群,一定会带来两个需求,第一个是动态扩容,第二个是在服务出问题时需要做容灾。那么反向代理需要具备负载均衡功能,其次,在这样的链路中,Nginx 是处于企业内网的边缘节点,随着网络链路的增长,用户体验到了时延会增加,所以需要所有用户看起来不变的,或者在一段时间内不会变更的内容缓存在 Nginx,由 Nginx 向用户提供这部分的访问。 例如:css/javescript/图片等等一些静态资源是不必由应用服务来提供访问,只需要通过本地系统放置的资源,直接由 Nginx 来提供访问,可以有效的提高用户的访问速度。

Nignx 组成部分

Ningx 好比一台汽车,汽车提供了一些基本驾驶的功能,但是还需要一个驾驶员来控制汽车的走向,而汽车经过的地方由 GPS 记录下来形成轨迹,如果中间发生了什么事故,那么汽车的黑匣子会记录下问题

Ningx 由四部分组成:

  • Nginx 二进制可执行文件
  • Ningx.conf 配置文件
  • access.log 访问日志
  • error.log 错误日志

nginx 组成部分

二进制可执行文件由 Nginx 本身框架的官方模块还有第三方模块一起编译而成的一个文件。这个文件就像是汽车本身,提供了所有的所需功能。

Nginx.conf 配置文件好比驾驶员,控制着 Nginx 的所有行为。虽然二进制可执行文件提供的所有的功能,但是并不具备自行决定的行为。

访问日志相当于 GPS,记录着由 Nginx 处理过的每一个 Http 请求信息与响应信息。

而最后的错误日志就相当于黑匣子一样,当 Nginx 在运行期间出现不可预期的问题时,可以通过这个文件定位问题。

四个组成部分相辅相成,Nginx 可执行文件提供功能,配置文件定义 Nignx 处理请求的方式,而 access.log 和 error.log 记录着请求/响应信息及错误信息。

Nginx版本情况

Ningx 每发布一个版本都会伴随着三个特性,

  • feature 新增了哪些功能
  • bugfix 修复了哪些 bug
  • change 表示做了哪些重构

每个版本又分为主干版本(Mainline)和稳定版本(Stable),单数表示主干版本,双数表示稳定版本。

主干版本会新增很多功能,但是不一定稳定。

在选择 Nginx 上,有很多发行版可选择,有官方开源的 Ningx 和商业版 Nginx Plus,也有阿里巴巴的 Tengine,以及 OpenResty,这几个比较主要

Nginx 官方推出的商业版 Nginx 在整合第三方模块上和运营监控,以及技术支持上有很多优点,最大的缺点就是不开源。

Tengine 在阿里巴巴这个生态下,经历了非常严苛的考验,它的很多特性领先于 Nginx 的官方版本,但是它没有办法同 Nginx 官方版本同步升级。

所以一般选择的是开源版本的 Nginx 就够用了。

参考

# Nignx  

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×