当前位置: 首页 > news >正文

看完这篇还不了解 Nginx,那我就哭了!

导语:Nginx是一个风靡全球的服务器高性能的HTTP和反向代理服务器,也是一个通用的TCP/UDP代理服务器,最初由俄罗斯人Igor Sysoev编写,BAT、京东 、新浪、网易、Facebook等这些 Top 级公司都将其作为企业 IT 架构的一部分。它可以轻松在百万并发连接下实现高吞吐量的 Web 服务,同时诸多应用场景下的问题都可以通过种种 Nginx 模块得以解决。

在互联网与我们生活已密不可分的今天,大规模、高性能的网站架构技术已成为每个互联网技术人员的必备技能。Nginx作为一款开源的Web服务器软件,因其具有性能稳定、高并发、低内存耗用、高性能的处理能力等特点,而被广泛应用到国内外各互联网厂商的实际生产架构中。由于互联网技术迭代非常快,云计算、微服务等新技术层出不穷,Nginx也一直处于活跃开发的状态,并在新版本中增加了很多强大的功能,与这些新技术紧密集成。同时基于其开源版本衍生出来的OpenResty和淘宝的Tengine等软件也根据自身需求提供了优秀的扩展功能,满足了云计算、微服务等各种技术的应用需求,并在实际生产环境中得到了广泛应用。

 

作为一款Web服务器软件,Nginx实现了Web服务器的基本功能,用户通过简单的配置指令就可以快速完成Web服务器的搭建。它还是网络通信协议处理软件,支持TCP/UDP、HTTP、HTTP/2、gRPC、FastCGI、SCGI、uWSGI、WebDAV等协议的处理,并实现了相应通信协议的请求解析、长连接、代理转发、负载均衡、会话保持等互联网架构中常见的应用功能。同时,它还是一款高并发服务软件,其采用的固定数量的多进程模型、事件驱动处理机制、工作流处理方式及模块化架构等软件开发设计,已成为高并发服务软件开发的典范。

 

Nginx的产生

Nginx同Apache一样都是一种WEB服务器。基于REST架构风格,以统一资源描述符(Uniform Resources Identifier)URI或者统一资源定位符(Uniform Resources Locator)URL作为沟通依据,通过HTTP协议提供各种网络服务。

然而,这些服务器在设计之初受到当时环境的局限,例如当时的用户规模,网络带宽,产品特点等局限并且各自的定位和发展都不尽相同。这也使得各个WEB服务器有着各自鲜明的特点。

Apache的发展时期很长,曾是世界第一大服务器。它有着很多优点:稳定、开源、跨平台等等。它出现的时间太长了,它兴起的年代,互联网产业远远比不上现在。所以它被设计为一个重量级的。它不支持高并发的服务器。在Apache上运行数以万计的并发访问,会导致服务器消耗大量内存。操作系统对其进行进程或线程间的切换也消耗了大量的CPU资源,导致HTTP请求的平均响应速度降低。

这些都决定了Apache不可能成为高性能WEB服务器,轻量级高并发服务器Nginx就应运而生了。

俄罗斯的工程师Igor Sysoev,他在为Rambler Media工作期间,使用C语言开发了Nginx。Nginx作为WEB服务器一直为Rambler Media提供出色而又稳定的服务。然后呢,Igor Sysoev将Nginx代码开源,并且赋予自由软件许可证。

由于:Nginx使用基于事件驱动架构,使得其可以支持数以百万级别的TCP连接

高度的模块化和自由软件许可证是的第三方模块层出不穷

Nginx是一个跨平台服务器,可以运行在Linux,Windows,FreeBSD,Solaris, AIX,Mac OS等操作系统上

这些优秀的设计带来的极大的稳定性,所以,Nginx火了!早在2019 年 2 月,Nginx 就取代 Apache HTTPD,成为互联网上部署最广泛的服务器。据 Netcraft在Web服务器调查显示,NGINX 的市场份额超过40%。

 

Nginx的主要应用场景:

 

如果你是一个前端工程师,在用 Node.js 写 Web 程序,使用 Nginx 可以让你高效处理静态资源文件;

如果你是一个运维工程师,那么在你有效配置 Nginx 后,可以为公司节省大量的 IT 成本;

如果你是一个后端开发工程师,遇到性能瓶颈时,你完全可以使用 Nginx 的第三方模块或 OpenResty 的 Lua 模块,非常高效地解决你的性能瓶颈。

 

 

如何写好Nginx:

Nginx自诞生至今已有十几年时间,虽然相关资料很多,但国内可获得的资料很多是直接翻译自官方文档,这些资料让读者只是停留在知其然而不知其所以然的层面,即便有深入讲解某一功能的资料,也仅能让读者管中窥豹,而无法全面了解Nginx的功能并在实际工作中熟练应用。

 

RECOMMEND

推荐阅读

01

《深入理解Nginx:模块开发与架构解析(第2版)》

陶辉 著

 

点击购买

推荐理由:本书致力于说明开发Nginx模块的必备知识,书中首先通过介绍官方Nginx的基本用法和配置规则,帮助读者了解一般Nginx模块的用法;然后介绍如何开发HTTP模块来得到定制化的Nginx;接着,综合Nginx框架代码分析了Nginx架构的设计理念和技巧。第2版新增了如何在模块中支持HTTP变量,以及与slab共享内存等相关的内容。可帮助读者更好地开发出功能丰富、性能一流的Nginx模块。

02

《Nginx应用与运维实战》

王小东 著

 

点击购买

推荐理由:这是一部基于Nginx新版本和云原生应用场景系统讲解Nginx的著作,是作者十余年运维经验的总结。本书从应用、运维以及与Kubernetes和微服务集成3个维度对Nginx的基础知识、工作原理、核心应用、运维管理、集成扩展等重点内容进行了全面、细致的讲解。完全以实战为导向,包含大量的配置案例和示例代码,能帮助读者快速掌握并在实际工作中熟练应用Nginx。

更多精彩回顾

书讯 |华章计算机拍了拍你,并送来了8月书单(下)

书讯 | 华章计算机拍了拍你,并送来了8月书单(上)

上新 | 首本深入讲解Linux内核观测技术BPF的书上市!
书单 | 《天才引导的历程》| 西安交通大学送给准大一新生的礼物

赠书 | 【第17期】云原生应用:任何企业都是软件公司

干货 | 机器人干活,我坐一边喝茶——聊聊最近爆火的RPA

收藏 | 揭秘阿里巴巴的客群画像

相关文章:

  • 流量红利已经耗尽?这几本书带你玩转电商各路技巧
  • 乘风破浪的迁移学习!四字成语讲明白这个大热研究方向
  • 详解阿里巴巴1688日常业务中的榜单算法
  • 干货请收好:终于有人把用户画像的流程、方法讲明白了
  • 【第18期】​未来的计算世界里,将会是“万物皆流”?
  • 又双叒叕到了薅羊毛时刻!花160元买400元的书
  • ​TypeScript都不会用,也敢说会前端?
  • 你该拥有一本“星空书”
  • 程序员七夕表白攻略:原来数学才是世界上最浪漫的学科!
  • 一文了解基于复杂网络的机器学习
  • 快速掌握计算机视觉大部分领域,学习人脸图像是唯一选择
  • 分布式追踪不是银弹 | 正确使用分布式追踪和 APM 系统
  • 银行数字化转型的技术展望
  • 理解JVM字节码,做点有意的事儿
  • 平安科技王健宗:所有 AI 前沿技术,都可以在联邦学习中大展身手!
  • 【剑指offer】让抽象问题具体化
  • Android单元测试 - 几个重要问题
  • CSS 三角实现
  • iOS编译提示和导航提示
  • Otto开发初探——微服务依赖管理新利器
  • SpringCloud集成分布式事务LCN (一)
  • unity如何实现一个固定宽度的orthagraphic相机
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • 初识 beanstalkd
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 大数据与云计算学习:数据分析(二)
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 手机端车牌号码键盘的vue组件
  • 物联网链路协议
  • 移动端 h5开发相关内容总结(三)
  • 异常机制详解
  • 用Python写一份独特的元宵节祝福
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 阿里云移动端播放器高级功能介绍
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • #pragma 指令
  • (14)Hive调优——合并小文件
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)scrum常见工具列表
  • .CSS-hover 的解释
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .NET下的多线程编程—1-线程机制概述
  • /boot 内存空间不够
  • @31省区市高考时间表来了,祝考试成功
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)
  • [ 数据结构 - C++]红黑树RBTree
  • [Android] Android ActivityManager
  • [android] 切换界面的通用处理
  • [AutoSAR 存储] 汽车智能座舱的存储需求
  • [dfs搜索寻找矩阵中最长递减序列]魔法森林的秘密路径
  • [Flutter]WindowsPlatform上运行遇到的问题总结