文章目录
- 1. Nginx简介
-
- 1.1 背景介绍
- 1.2 名词解释
-
- 1.2.1 WEB服务器
- 1.2.2 HTTP
- 1.2.3 POP3/SMTP/IMAP
- 1.2.4 正向代理
- 1.2.5 反向代理
- 2. 常见服务器的对比
-
- 2.1 IIS
- 2.2 Tomcat
- 2.3 Apache
- 2.4 Lighttpd
- 2.5 其它服务器
- 3. Nginx的优点
-
- 3.1 速度更快、并发更高
- 3.2 配置简单、扩展性强
- 3.3 高可用性
- 3.4 热部署
- 3.5 成本低、BSD许可证
- 4. Nginx的功能特性及常用功能
-
- 4.1 基本HTTP服务
- 4.2 高级HTTP服务器
- 4.3 邮件服务
- 4.4 Nginx常用的功能模块
- 4.5 Nginx的核心组成部分
- 5. Nginx的官方简介
-
- 5.1 news
- 5.2 about
- 5.3 download
- 5.4 documention(官方文档)
- 5.5 faq(Frequently Asked Questions,常见问题解答)
- 5.6 books(Nginx官方推荐的学习书籍)
- 6. 环境准备
-
- 6.1 确认虚拟机的内核
- 6.2 确保虚拟机能够联网
- 6.3 拓展:桥接模式、仅主机模式、NAT模式的区别
- 7. 安装Nginx
视频教程:
黑马程序员Nginx教程,Java进阶从0到1学会Nginx分布式框架
如果想了解更多与Nginx相关的内容,可以查看Nginx专栏中的文章:Nginx
1. Nginx简介
1.1 背景介绍
Nginx一个具有高性能的【HTTP】和【反向代理】的【WEB服务器】,同时也是一个【POP3/SMTP/IMAP代理服务器】,是由伊戈尔·赛索耶夫(俄罗斯人)使用C语言编写的,Nginx的第一个版本是2004年10月4号发布的0.1.0版本
值得一提的是伊戈尔·赛索耶夫将Nginx的源码进行了开源,这也为Nginx的发展提供了良好的保障
1.2 名词解释
1.2.1 WEB服务器
WEB服务器也叫网页服务器,英文名叫Web Server,主要功能是为用户提供网上信息浏览服务
1.2.2 HTTP
HTTP是超文本传输协议(Hypertext Transfer Protocol)的缩写,用于从WEB服务器传输超文本到本地浏览器的传输协议,也是互联网上应用最为广泛的一种网络协议
HTTP是一个客户端和服务器端请求和应答的标准,客户端是终端用户,服务端是网站。客户端通过使用Web浏览器、网络爬虫或者其他工具,发起一个到服务器上指定端口的HTTP请求
1.2.3 POP3/SMTP/IMAP
- POP3(Post Offic Protocol 3):邮局协议的第三个版本
- SMTP(Simple Mail Transfer Protocol):简单邮件传输协议
- IMAP(Internet Mail Access Protocol):交互式邮件存取协议
通过上述名词的解释,我们可以了解到Nginx也可以作为电子邮件代理服务器
1.2.4 正向代理
正向代理更多的是为客户端服务
在没有使用正向代理之前,客户端可以按照HTTP协议的规定将请求发送到服务端,服务端再根据HTTP协议的规定将结果封装好后响应给客户端
但是可能存在这么一种情况,服务端可能会禁掉某一类客户端的访问请求,这时候该怎么办呢
我们可以通过正向代理解决这一个问题,正向代理服务器可以接收用户的请求,并且正向代理服务器会向服务端发送一个相同的请求
服务端将结果返回给正向代理服务器之后,正向代理服务器再将结果返回给客户端,客户端就能够看到服务端返回的数据了
魔法使用的就是正向代理技术,魔法的使用教程可以参考我的另一篇博文:GitHub的使用技巧(加速访问GitHub、查看GitHub的热门项目、查看GitHub推荐的项目、Fork、Issue、快速找到项目的安装包、GitHub的各种快捷键)
1.2.5 反向代理
反向代理更多的是为服务端服务
反向代理同样是客户端要访问服务端,但是客户端会先将请求发给反向代理服务器,反向代理服务器再将请求分发给服务端
反向代理的好处是可以将服务端隐藏起来,更加安全,而且反向代理可以将请求分发到各个服务器,减轻服务端的压力
2. 常见服务器的对比
在介绍这一节内容时,我们先来了解一家名为Netcraft的公司。Netcraft公司于1994年底在英国成立,多年来一直致力于互联网市场以及在线安全方面的咨询服务
Netcraft在国际上最具影响力的当属其针对网站服务器、SSL市场所做的客观严谨的分析研究,公司官网每月公布的调研数据(web server survey)已成为当今人们了解全球网站数量以及服务器市场分额情况的主要参考依据,时常被华尔街杂志、英国BBC、Slashdot等媒体报道或引用
我们查看Netcraft公布的数据
https://www.netcraft.com/blog/march-2025-web-server-survey/
可以重点看一下Apache和Nginx的曲线
从以上信息可以看出,Nginx已经成为当下最流行的Web服务器
Nginx也很自豪地宣告了这一信息
https://nginx.org/en/
2.1 IIS
IIS全称Internet Information Services,互联网信息服务,是由微软公司提供的基于Windows系统的互联网基本服务
Windows作为服务器在稳定性与一些性能上都不如类UNIX操作系统,因此在需要高性能Web服务器的场合下,IIS可能就会被“冷落"
2.2 Tomcat
Tomcat是一个运行Servlet和ISP的Web应用软件,Tomcat技术先进、性能稳定而且开放源代码,因此深受Java爱好者的喜爱,并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器
但是Tomcat天生是一个重量级的Web服务器,对静态文件和高并发的处理比较弱
2.3 Apache
Apache的发展时期很长,同时也有过一段辉煌的业绩。从上图可以看出大概在2014年以前都是市场份额第一的服务器
Apache有很多优点,如稳定、开源、跨平台等,但是它出现的时间太久了,在Apache兴起的年代,互联网的产业规模远远不如今天,所以它被设计成一个重量级的、不支持高并发的Web服务器
在Apache服务器上,如果有数以万计的并发HTTP请求同时访问,就会导致服务器上消耗大量能存,操作系统内核对成百上千的Apache进程做进程间切换也会消耗大量的CPU资源,并导致HTTP请求的平均响应速度降低,这些都决定了Apache不可能成为高性能的Web服务器,也促使了Lighttpd和Nginx的出现
2.4 Lighttpd
Lighttpd是德国的一个开源的Web服务器软件,它和Nginx一样,都是轻量级、高性能的Web服务器
欧美的业界开发者比较钟爱Lighttpd,而国内的公司更多的青睐Nginx,同时网上与Nginx的资源要更丰富些
2.5 其它服务器
Google Servers、Weblogic、Webshpere(lBM)…
经过各个服务器的对比,种种迹象都表明,Nginx将以性能为王,这也是我们为什么选择Nginx的原因
3. Nginx的优点
3.1 速度更快、并发更高
单次请求或者高并发请求的环境下,Nginx都会比其他Web服务器响应的速度更快
一方面在正常情况下,单次请求会得到更快的响应,另一方面,在高峰期(如有数以万计的并发请求),Nginx比其他Web服务器更快地响应请求
Nginx之所以有这么高的并发处理能力和这么好的性能,是因为Nginx采用了多进程和I/O多路复用(epoll)的底层实现
3.2 配置简单、扩展性强
Nginx的设计极具扩展性,它本身就是由很多模块组成,这些模块的使用可以通过配置文件的配置来添加
这些模块有官方提供的也有第三方提供的模块,如果需要,可以开发符合自己业务特性的定制模块
3.3 高可用性
Nginx采用多进程模式运行,其中有一个master主进程和N多个worker进程
worker进程的数量我们可以手动设置,每个worker进程之间都是相互独立提供服务,并且master主进程可以在某一个worker进程出错时,快速去“拉起”新的worker进程提供服务
3.4 热部署
现在互联网项目都要求以7*24小时进行服务的提供,针对于这一要求,Nginx也提供了热部署功能,即可以在Nginx不停止的情况下,对Nginx进行文件升级、更新配置和更换日志文件等功能
3.5 成本低、BSD许可证
BSD是一个开源的许可证,世界上的开源许可证有很多,现在比较流行的有六种开源许可证分别是GPL、BSD、MIT、Mozia、Apache、LGPL
这六种开源许可证的区别是什么,我们可以通过下面一张图来解释
Nginx本身是开源的,我们不仅可以免费地将Nginx应用在商业领域,而且还可以在项目中直接修改Nginx的源码来定制自己的特殊要求
这些点也都是Nginx为什么能吸引无数开发者继续为Nginx来贡献自己的智慧和青春的原因
OpenRestry(Nginx+Lua)和Tengine(淘宝使用的服务器,基于Nginx进行二次开发)正是基于Nginx开发出来的
我们打开淘宝的官网,按下F12快捷键打开控制台,打开网络专栏
接着刷新网页,将滚动条拖动到最上方,点击www.taobao.com
可以看到淘宝使用的是Tengine服务器,这也能从侧面说明Nginx在高并发的情况下是可靠的,毕竟淘宝经历了多次双十一的考验
4. Nginx的功能特性及常用功能
Nginx提供的基本功能服务从大体上归纳为“基本HTTP服务”、“高级HTTP服务”和“邮件服务”三大类
4.1 基本HTTP服务
Nginx可以提供基本HTTP服务,可以作为HTTP代理服务器和反向代理服务器,支持通过缓存加速访问,可以完成简单的负载均衡和容错,支持包过滤功能,支持SSL等
- 处理静态文件、处理索引文件以及支持自动索引
- 提供反向代理服务器,并可以使用缓存加上反向代理,同时完成负载均衡和容错
- 提供对FastCG1、memcached等服务的缓存机制,同时完成负载均衡和容错
- 使用Nginx的模块化特性提供过滤器功能。Nginx基本过滤器包括gzip压缩、ranges支持、chunked响应、XSLT、SSI以及图像缩放等。其中针对包含多个SSI的页面,经由FastCGl或反向代理,SSI过滤器可以并行处理
- 支持HTTP下的安全套接层安全协议SSL
- 支持基于加权和依赖的优先权的HTTP/2
4.2 高级HTTP服务器
- 支持基于名字和IP的虚拟主机设置
- 支持HTTP/1.0中的KEEP-Alive模式和管线(PipeLined)模型连接
- 自定义访问日志格式、带缓存的日志写操作以及快速日志轮转
- 提供3xx~5xx错误代码重定向功能
- 支持重写模块(rewrite)扩展
- 支持重新加载配置以及在线升级时无需中断正在处理的请求
- 支持网络监控
- 支持FLV和MP4流媒体传输
4.3 邮件服务
Nginx提供邮件代理服务也是其基本开发需求之一,主要包含以下特性:
- 支持IMPA/POP3代理服务功能
- 支持内部SMTP代理服务功能
4.4 Nginx常用的功能模块
- 静态资源部署
- rewrite地址重写(支持正则表达式)
- 反向代理
- 负载均衡(轮询、加权轮询、ip_hash、url_hash、fair)
- Web缓存
- 环境部署
- 用户认证模块
4.5 Nginx的核心组成部分
- nginx二进制可执行文件
- nginx.conf配置文件
- error.log错误日志记录
- access.log访问日志记录
5. Nginx的官方简介
视频教程:06-Nginx的官方简介
Nginx官网:https://nginx.org/en/
https://nginx.org/en/
5.1 news
5.2 about
5.3 download
下载Nginx时建议使用Stable version(稳定版)
下载地址:
- https://nginx.org/en/download.html(只提供主流版本的Nginx)
- https://nginx.org/download/(提供了各个历史版本的Nginx)
https://nginx.org/en/download.html
".pgp"指的是Pretty Good Privacy(PGP),这是一种加密和数字签名技术。在Nginx下载页面中,.pgp文件通常包含了软件包的签名信息
当下载开源软件时,开发者会提供一个带有签名的软件包和一个单独的.asc或.pgp文件。这个.asc或.pgp文件包含了开发者的公钥和软件包的哈希值。可以使用这个文件来验证下载的软件包是否真实且未被篡改
要验证下载的软件包,需要:
这个过程确保了下载的软件包来自可信来源,并且没有被第三方篡改
5.4 documention(官方文档)
5.5 faq(Frequently Asked Questions,常见问题解答)
5.6 books(Nginx官方推荐的学习书籍)
6. 环境准备
6.1 确认虚拟机的内核
准备一个内核为2.6及以上版本的Linux操作系统,因为Linux 2.6及以上版本的内核才支持epoll,而Nginx解决高并发压力问题需要用到epoll,所以有这样的版本要求
我们可以使用uname -a命令来查询Linux的内核版本
uname -a
6.2 确保虚拟机能够联网
ping -c 3 www.baidu.com
6.3 拓展:桥接模式、仅主机模式、NAT模式的区别
视频教程:07-Nginx系统环境准备
如果使用的是VMware Workstation软件,虚拟机的网络连接部分会有三个选择:
- 桥接模式(bridge)
- 仅主机模式
- NAT模式
不管是桥接模式、仅主机模式还是NAT模式,至少都需要两台电脑,第一台电脑就是你正在使用的真实电脑,第二台电脑就是VMvare Workstation软件模拟出来的电脑
如果选择的是桥接模式,我们需要一台外部设备,这台设备可以是一个交换机,你正在使用的真实电脑和VMvare Workstation软件模拟出来的电脑需要和交换机进行连接,这种情况下VMvare Workstation软件模拟出来的电脑相当于局域网中的一台真实电脑
使用桥接模式需要确保你正在使用的电脑要用网线和交换机进行连接,一旦你正在使用的真实电脑与交换机断开,VMvare Workstation软件模拟出来的电脑将无法上网
仅主机模式相当于用一根网线将你正在使用的真实电脑和VMvare Workstation软件模拟出来的电脑连接起来
虽然仅主机模式可以实现你正在使用的真实电脑和VMvare Workstation软件模拟出来的电脑之间的通信,但是VMvare Workstation软件模拟出来的电脑将无法上网
NAT模式相当于在你使用的真实电脑里面安装了一台虚拟电脑,两台电脑共用一个网络,只要真实电脑能够连接到网络,虚拟出来的电脑也能够访问到网络
7. 安装Nginx
参考我的另一篇文章:2025-Nginx安装教程(Linux操作系统通过宝塔安装Nginx、Linux系统通过包管理工具安装Nginx——Ubuntu、Windows操作系统安装Nginx)
评论前必须登录!
注册