干货篇 | Nginx 我还真不信你学不会(上)

前言

今天,我们来聊一聊Nginx——作为一个免费开源的、性能强大的、轻量级的、提供web服务和反向代理服务的中间件。它拥有如此强大的功能,以至于国内很多像淘宝,京东,百度,新浪,网易,腾讯等等这些知名大厂都在使用Nginx来提供网站服务

看到这里,你们是不是觉得我在吹牛,是不是像我说的那样都是用Nginx来提供网站服务废话不多说,直接上证据。

这里使用阿里云的服务器去查看京东和淘宝的网站。

我们使用如下命令,去访问要查询网站的服务器,并返回一些详细信息,像状态码,http协议版本号等等。

curl -i 网址

首先去访问马爸爸的淘宝网

curl -i www.taobao.com

在这里插入图片描述
如图所示,我们可以看到在我标记处那里显示着 Server:Tengine。这个 Tengine是个什么服务器,我们百度一下。
在这里插入图片描述
简介里说到,Tengine是在Nginx的基础上来进行二次开发的,也就是说它依然延续了Nginx的特性

我们再来访问一下不知妻美刘强东的京东网

curl -i www.jd.com

在这里插入图片描述
通过这两个例子,我们可以看到国内的一些知名大厂,它们的网站就是用了Nginx来提供网站服务,或者是在Nginx的基础上自已研发。

那么,什么是Nginx呢?

初始Nginx

Nginx是由一位俄罗斯的工程师是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点使用C语言设计开发的。从2004年发布至今,凭借开源的力量, 已经接近成熟与完善并逐渐赶超当时的世界第一服务器Apache。

Nginx和Apache一样,都是一种可以来提供web服务(网站服务)的中间件,我们可以用Nginx或者Apache来搭建我们的网站服务器。

Nginx基于REST架构风格,以统一资源描述符(URI)或者统一资源定位符(URL)作为沟通依据,通过HTTP协议来提供各种网络服务。

由于以下这几点原因,Nginx成为了越来越多人的选择:

  • 支持高并发,消耗内存小,性能好
    具有多种功能:
  • 静态资源web服务功能
  • 负载均衡功能
  • 网站缓存功能
  • 动静分离功能
  • 可以跨平台部署
  • 基于事件驱动架构,使用异步网络IO模型:epoll模型
  • 支持热部署:不停机更新配置文件或升级版本
  • 采用模块化设计,有较好拓展性

在这里插入图片描述
Nginx除了是一款HTTP服务器之外,也可作为反向代理服务器。

关于代理

前面我们提到,Nginx可作为反向代理服务器,那么什么是反向代理?

说到反向代理,我们先要了解什么是代理

所谓的代理,就相当于一个代表,这里会涉及到两个角色:被代理角色和目标角色。被代理角色通过代理来访问目标角色并完成一些任务的过程,就叫做代理操作过程。

举个例子:我们微信好友列表里是不是有很多微商,比如说卖手机的,你在他那里买了一台华为手机,他的背后是华为手机厂家在提供华为手机,那么那个卖手机的就相当于代理,而华为厂家就是被代理角色,你就是目标角色。

正向代理

总的来说,正向代理,它代理的是客户端,是一个位于客户端和原始服务器之间的服务器,为了从原始服务器获得数据,客户端需要向正向代理发送请求,再由正向代理向原始服务器转发请求并将获得的数据返回给客户端。

反向代理

明白了什么是正向代理,我们现在来讲讲什么是反向代理。

在过去,数据还不是很大的时候,单台服务器就能满足日常的访问需求。而如今,在大数据时代,单台服务器已经远远不能满足日益增长访问量了。

此时就出现了现在大家或多或少都能听到的一个名词:分布式。也就是指通过部署多台服务器形成集群来解决访问量过多的问题。

比如说一家银行的业务窗口只有一个,一天最多接待10个客户。现在一下子多了100个客户,银行在多开几个业务窗口就能解决这个问题了。

与此同时,我们还要考虑,一旦服务器多了起来,那么客户端来访问的时候,究竟如何将这条访问请求交给服务器集群中的哪台服务器呢?而谁又来负责将这条请求交给服务器集群中的某一台服务器呢?

反向代理就提供了一个解决方案:
在这里插入图片描述
如图所示:多个客户端给服务器发送请求,反向代理服务器(后面我们用Nginx服务器来代表反向代理服务器)收到之后,按照一定的规则将请求分发给后面的服务器来处理

此时我们发现,请求的来源也就是客户端是明确的,但是请求具体交给后端哪台服务器就不知道了。

总的来说,反向代理,代理的是服务端。访问者(客户端)并不知道自己访问的是一个代理。

反向代理的作用:

  • 保证了内网的安全
  • 通过反向代理来实现负载均衡

上述我们提到了负载均衡,那么什么是负载均衡?

负载均衡

我们知道,Nginx可以作为反向代理来实现负载均衡,那么什么是负载均衡?

上面提到的客户端发送请求给反向代理,反向代理收到的请求数量,就是我们说的负载量(负载)

反向代理服务器收到这些请求之后,会按照一定的规则来进行分发,这个规则是一种均衡规则

所以反向代理将这些请求转发到后端的服务器上的这个过程,称为负载均衡。

一般来讲,实现负载均衡的方式有硬件负载均衡和软件负载均衡

硬件负责均衡:
像F5负载均衡器,它长得跟个交换机似的。通俗点来讲就是将客户端的请求量通过F5负载到各个服务器,增加吞吐量。缺点就是造价昂贵,消费不起。

在这里插入图片描述
软件负载均衡:
这个在公司里就比较常见,像LVS,Nginx,Apache都可以提供负载均衡的功能,本文我们就先讲Nginx

总结

最后,我们来总结一下
Nginx是一个高性能,而且轻量级的HTTP服务器和反向代理服务器;我们可以使用Nginx来部署web服务器;Nginx通过反向代理功能来实现负载均衡
正向代理屏蔽了客户端,它代理的是客户端。服务器只知道请求是正向代理服务器发过来的,它并不知道是哪台具体的客户端
反向代理屏蔽了服务端,它代理的是服务器。对于客户端来讲,它只需要访问代理服务器就能获取后端服务器的数据(客户端并不知道反向代理服务器的存在,它只认为它现在访问的是后端服务器)

你们以为这就完了?开玩笑,现在才刚刚开始

下篇文章我们来讲讲如何上手Nginx以及如何使用搭建自己的web网站以及实现Nginx负载均衡功能。

咱们下期见!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鱼Linux运维

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值