什么是Nginx?我们该怎末去学习Nginx?

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 什么是Nginx?我们该怎末去学习Nginx?

一、什么是Nginx?

Nginx (engine x) 是一个高性能的HTTP反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。

其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名.

Nginx是一款轻量级的Web 服务器/反向代理服务器电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。


# 二、什么是 正向代理 Or 反向代理? ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210421205529387.gif) ## 1、什么是正向代理? 所谓的正向代理就是介于 客户端**原始服务器** 之间的一个 **服务器**为了从原始服务器取得内容,客户端向 **代理服务器** 发送一个请求并且指定目标(**原始服务器**),然后代理向原始服务器转交请求并将获得的内容返回给客户端,客户端才能使用 **正向代理**。(下图中红框圈中的服务器就是正向代理的服务器) ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210421211123506.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hbnNoZW5fXw==,size_16,color_FFFFFF,t_70) 平时我们大家在玩吃鸡PC端游的时候都要开一个加速器,不然就没有办法快乐的游戏!! ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210421211943614.gif#pic_center) 这是因为吃鸡是访问的外网,而我们大家访问外网的速度是非常慢的,我们学编程的小伙伴应该深有体会了,所以我们大家使用的**加速器**就可以 “提升我们访问外网的速度”。然而事实并非如此,我们的加速器,其实也可以叫做VPN。加速器实际上是帮我们直接或者间接的向 原服务器发送请求获取返回数据,对于这个 原服务器 而言他只知道有一个服务器访问了自己,并不知道你访问了他。 ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/2021042121340846.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hbnNoZW5fXw==,size_16,color_FFFFFF,t_70) 正向代理的过程,隐藏了真实的客户端。客户端请求的服务都被 **代理服务器** 代替来请求。 ## 2、什么是反向代理? **反向代理服务器** 位于 **用户** 与 **目标服务器** 之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。 ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/2021042122481533.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hbnNoZW5fXw==,size_16,color_FFFFFF,t_70) 我们在访问B站时,我们只需要输入B站的网址就可以进入到B站。这是为什么?是因为B站只设置了一台服务器吗?毋庸置疑,B站每天都有海量的用户进行访问,肯定不是一台服务器可以顶得住的。实际上B站也使用了代理服务器,我们只用访问代理服务器的域名就可以被分配到目标服务器上,从而实现访问。 ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210421231331825.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hbnNoZW5fXw==,size_16,color_FFFFFF,t_70) 比如下图中,有三台目标服务器! 一台在北京,是一台1024G的服务器,还有一台在上海,是一台514G的,最后一台在深圳,是一台257G的服务器!当我们在客户端输入B站的网址进行访问时,代理服务器就会将我们的请求分配到一台目标服务器,这样我们就可以进入到B站。这样的服务器就是代理服务器,Nginx就是这样的可以实现这样的效果。 但是你以为Nginx的用处仅仅是这样吗?那就大错特错了,nginx还可以提供负载均衡的功能,我们可以根据每台服务器的性能来进行服务量的分配,比如北京那太服务器是1024G的,上海的服务器是514G的,而深圳的服务器是257G的。那么,假如在同一时间有六台客户机发起请求,那麽我们可以多给内存比较大的服务器(北京)多一些请求,而内存小一点的少一些请求(深圳),这样可以实现最好的效果!当然,nginx的用处并不仅仅局限于此! ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210421230110217.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hbnNoZW5fXw==,size_16,color_FFFFFF,t_70) ## 3、小总结 短小精悍的一句话结束战斗 **正向代理隐藏真实客户端,反向代理隐藏真实服务端!!** ## 三、Nginx 的安装 和 使用 ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/202104221559273.png) nginx的官网: [http://nginx.org/en/download.html](http://nginx.org/en/download.html)(nginx官网的下载速度是非常鸡肋的,所以我给大家提供好了百度网盘) 我将nginx的windows和linux安装包存入来了某盘供大家下载使用: 链接:[https://pan.baidu.com/s/1FBHFCbvyArHRTPif0ERgkA](https://pan.baidu.com/s/1FBHFCbvyArHRTPif0ERgkA) 提取码:lay4 (由于nginx本身比较小就只有1MB左右,某盘的限速就微乎其微了) ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422160054763.gif) ### 1、windows 下的安装 和 使用 windows下的安装是非常简单的,可以说是不用安装。 我们只需要将下载好的压缩包进行解压(最好不要放在C盘中,除此之外**存放的路径中不能含有中文**,否则会启动失败),压缩之后就可以使用了!! ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422153521548.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hbnNoZW5fXw==,size_16,color_FFFFFF,t_70) 我们进入conf目录查看nginx的配置文件: ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422154917646.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hbnNoZW5fXw==,size_16,color_FFFFFF,t_70) 在这里我们可以看到nginx已经配置了一个**81端口**的服务并且指定了页面,我们可以将nginx启动起来看看是什么样子的! ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422155053953.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hbnNoZW5fXw==,size_16,color_FFFFFF,t_70) 启动方式: #### 1-1、双击 nginx.exe 启动 这样可以启动,但是双击之后会出现命令窗口一闪而过,效果并不好! ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422160309856.gif#pic_center) #### 1-2、在 cmd 中开启 首先打开nginx文件夹目录,在导航栏出点击(使整个路径都被选中),接下来输入cmd ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422154543769.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hbnNoZW5fXw==,size_16,color_FFFFFF,t_70) ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422154616580.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hbnNoZW5fXw==,size_16,color_FFFFFF,t_70) 这样就可以快速在命令窗口中定位到文件夹了(打开的时候cmd就已经定位在nginx的目录下了) ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422154656149.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hbnNoZW5fXw==,size_16,color_FFFFFF,t_70) 我们开启nginx服务! 我们在cmd中输入nginx.exe (可以只输入开头两个字母,使用Tab键补全) ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422155254919.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hbnNoZW5fXw==,size_16,color_FFFFFF,t_70) ![服务启动过程](https://ucc.alicdn.com/images/user-upload-01/20210422160441216.gif#pic_center) 当光标不停闪烁就说明启动成功了! 我们在地址栏中输入localhost:81 ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422155348166.png) ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422155420203.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hbnNoZW5fXw==,size_16,color_FFFFFF,t_70) 启动成功! #### 1-3、nginx的关闭 nginx的关闭必须重新开启一个新的cmd命令窗口来进行关闭,将开启nginx的cmd关闭并不能关闭nginx服务。 重新在nginx的目录下开启一个cmd窗口,输入 nginx.exe -s stop 命令来关闭nginx服务! ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422155831807.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hbnNoZW5fXw==,size_16,color_FFFFFF,t_70) ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422160612718.gif#pic_center) 关闭成功! ### 2、Linux下的安装 和 使用 关于linux的上 nginx 的安装,如果有服务器的话可以直接使用XShell进行连接没有服务器的话可以在 Vm 上安装一台虚拟机,(因为我个人比较喜欢使用XShell,所以我使用XShell连接我的本地Vm虚拟机) 首先启动Vm虚拟机,输入**ip addr**获取虚拟机的临时ip ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422161648668.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hbnNoZW5fXw==,size_16,color_FFFFFF,t_70) 这个就是我们虚拟机的临时ip,我们将其连接到XShell中 ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422161810558.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hbnNoZW5fXw==,size_16,color_FFFFFF,t_70) ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422161914634.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hbnNoZW5fXw==,size_16,color_FFFFFF,t_70) ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422161935750.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hbnNoZW5fXw==,size_16,color_FFFFFF,t_70) 连接成功! (1)./configure是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC(C Complie) 或GCC(GNU Compile Collections),并不是需要CC或GCC,它是个shell脚本。使用它之后, 会生成一个makefile文件。 (2)make是用来编译的,它从Makefile中读取指令,然后编译。它需要用到Makefile文件; (3)make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。 输入命令 whereis nginx 检查虚拟机中是否已经安装nginx,当没有输出时就说明没有nginx。 ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/2021042216243891.png) 将我们下载好的安装包通过xftp传输进我们的虚拟机! ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422162826700.gif#pic_center) 当传输完成之后我们就可以查看到nginx的安装包了 ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422194016393.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hbnNoZW5fXw==,size_16,color_FFFFFF,t_70) 接下来解压安装包 tar -zxvf nginx-1.20.0.tar.gz , ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422194201399.png) 进入到nginx-1.20.0 中 我们就会发现,他的目录结构和weindows中的文件目录基本上是相同的,这个绿色的configure,我们输入 **./configure** 命令执行它,他会帮我们进行一些配置! ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422194553831.png) ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422194725302.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hbnNoZW5fXw==,size_16,color_FFFFFF,t_70) 接下来输入make 命令 进行编译, ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422195104916.gif#pic_center) 接下来查看nginx是否安装成功,以及安装之后的位置在哪里。 ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422200913248.png) ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422200931570.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hbnNoZW5fXw==,size_16,color_FFFFFF,t_70) 我们的nginx已经安装成功了!!!! 解下了我们来查看一下nginx的配置文件。 ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422201133657.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hbnNoZW5fXw==,size_16,color_FFFFFF,t_70) 我们可以发现这次nginx的配置文件开放的端口是**80端口**! ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422201212164.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hbnNoZW5fXw==,size_16,color_FFFFFF,t_70) 接下来我们进入到sbin目录下启动nginx,并且去浏览器进行访问,看是否可以访问到! 因为配置文件中开放的端口为80,首先我们要去查看一下防火墙对于80端口是否开启(如果使用的是云服务器,还需要去安全组中开放80端口) ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422202241840.gif#pic_center) 至于nginx的关闭是和windows是一样的! ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210422202609500.gif#pic_center) ### 3、注意 还有一个重要的命令是 **./nginx -s reload** ,每次修改完配置文件之后要使用该命令进行重新加载! # 总结 反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理,这样可以极大的缓解服务器的鸭梨! 以上是个人见解,可能会有问题和错误,希望小伙伴们可以指正😘😘。 **树苗如果因为怕痛而拒绝修剪,那就永远不会成材。** ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/2021042220430085.jpg#pic_center)
目录
相关文章
|
6天前
|
负载均衡 应用服务中间件 数据处理
Nginx学习使用
Nginx学习使用
46 0
|
5天前
|
监控 Unix 应用服务中间件
Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器
Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器
|
6天前
|
负载均衡 应用服务中间件 Linux
深入浅出学习透析Nginx服务器的架构分析及原理分析「底层技术原理+运作架构机制」
深入浅出学习透析Nginx服务器的架构分析及原理分析「底层技术原理+运作架构机制」
44 0
|
6天前
|
缓存 负载均衡 安全
Nginx 学习
Nginx 学习
30 0
|
6天前
|
应用服务中间件 nginx
【Nginx学习】—Nginx基本知识
【Nginx学习】—Nginx基本知识
|
5月前
|
应用服务中间件 Linux 网络安全
小白带你学习linux Nginx基本部署 (二十一)
小白带你学习linux Nginx基本部署 (二十一)
34 0
|
6月前
|
负载均衡 算法 应用服务中间件
Nginx学习使用
Nginx学习使用
47 1
|
6月前
|
应用服务中间件 API nginx
通过 docker 学习 nginx,附全部配置及 API 测试,使用 apifox 直接打开
本篇文章以前端的视角,介绍下 nginx 的常见配置,并通过 docker 的方式学习 nginx,这保证所有实例配置都能正常运行。
|
7月前
|
数据采集 缓存 负载均衡
Nginx 的学习与实战
Nginx是开源、高性能、高可靠的 Web 和反向代理服务器,能支持高达 50,000个并发连接数。Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,其特点是占有内存少,并发能力强。
51 2
|
7月前
|
应用服务中间件 Linux nginx
Nginx学习研究-Docker安装Nginx 实现反向代理
Nginx学习研究-Docker安装Nginx 实现反向代理
146 0