菜鸟的Nginx学习总结

菜鸟的Nginx学习总结

  • 说明
  • 一、反向代理
    • (1)概念
    • (2)实现
  • 二、负载均衡
    • (1)负载均衡策略:轮询
    • (2)负载均衡策略:权重
    • (3)负载均衡策略:IP Hash
  • 三、动静分离

说明

本文主要记录个人在学习Nginx时的一些总结,本文会持续更新,不断地扩充

本文仅为记录学习轨迹,如有侵权,联系删除

注意:这里不讲Nginx环境的安装,另外里面还需要用到docker的相关知识,因为是基于docker进行的Nginx学习,这里直接上Nginx的核心知识点,如需要安装环境可以看一下菜鸟学习Docker实例,里面有记录如何搭建Nginx的环境

一、反向代理

(1)概念

说到反向代理就必须要了解正向代理,什么是正向代理,举个例子,我们在国内访问谷歌是访问不到的,于是我们可以借助谷歌助手,谷歌助手将访问的谷歌资源返回给我们就是一个类似的正向代理,谷歌助手就是一个代理
菜鸟的Nginx学习总结_第1张图片
反向代理跟正向代理有点类似,都是代理,但是却有些不同,举个例子,你打电话需要人工服务,拨通了10086后,10086那边就会给你接一个空闲的客服过来询问你的需求,这就是类似的反向代理,10086理解为代理,它会通过自己的算法给你接一个空闲的客服过来,至于是那个客服你是不知道的。

菜鸟的Nginx学习总结_第2张图片

网上找到一张图可以看一下,有助于对这两者的理解
菜鸟的Nginx学习总结_第3张图片

(2)实现

先模拟几个站点,真实中应该是几个服务器,并且保证可以访问
菜鸟的Nginx学习总结_第4张图片
下面要实现的功能是通过访问nginx服务器,通过它(反向代理)来访问上面两个站点,首先docker运行一个nginx镜像实例,这里的端口号是81

docker run --name nginx01 -d -p 81:80 -v $PWD/nginx/html:/usr/share/nginx/html -v $PWD/nginx/conf/nginx.conf:/etc/nginx/nginx.conf  -v $PWD/nginx/logs:/var/log/nginx -v $PWD/nginx/conf.d:/etc/nginx/conf.d -d nginx

上面的命令简单说一下就是运行了一个实例,叫nginx01,并且做了数据挂载,主要修改的配置是"$PWD/nginx/conf.d"里面挂载的default.conf配置文件,具体的解释可以看一下菜鸟学习Docker实例,这里就不再细讲

开始进行相应的配置
菜鸟的Nginx学习总结_第5张图片
完之后就可以直接访问了,注意,这里访问nginx01这个站点即可访问到一开始说到的那两个站点
在这里插入图片描述
在这里插入图片描述
反向代理成功!

二、负载均衡

关于负载均衡,这里简单说一下
菜鸟的Nginx学习总结_第6张图片

如图,当有请求进来时,负载均衡服务器会根据设置好的负载均衡策略,决定将请求分配给那一台服务器

(1)负载均衡策略:轮询

轮询:这是默认的策略,将客户端发起的请求平均的分发给服务器

首先准备两个站点,两个站点的url基本一样,只是服务器或端口号有区别,如下,均可以访问
菜鸟的Nginx学习总结_第7张图片

配置文件如下
菜鸟的Nginx学习总结_第8张图片
访问路径:http://39.96.22.34:81/test/a.html,由于上面提到的两个站点的url一样,服务器或端口号不同,并且,访问路径包含/test/,所以反向代理会执行均衡策略
菜鸟的Nginx学习总结_第9张图片

(2)负载均衡策略:权重

这种均衡策略主要用于不同服务器的性能不一样的情况,假设两台服务器一个台的计算能力是10,一台的计算能力是2,这种情况下用默认的轮询的方式就不合适了,于是就有了权重的方式来进行负载均衡

在上面的例子的基础之上增加一些配置,如下
菜鸟的Nginx学习总结_第10张图片
如上图,这样的情况下,如果有6个请求,则有5个会被分配到服务器1,1个分配服务器2,即按照权重的比例来分配请求。

菜鸟的Nginx学习总结_第11张图片

(3)负载均衡策略:IP Hash

这种均衡策略就是根据ip来进行请求的分配,第一次访问分配到了服务器1,那么下一次同一个ip访问时,会被分配到上次绑定的服务器1

配置方式也简单,如下图
菜鸟的Nginx学习总结_第12张图片
用同一ip访问,结果所有的请求都分配到第一次访问的服务器那里
在这里插入图片描述
由于第一次分配的是服务器2,所以之后同一个ip访问都只会分配给服务器2。

三、动静分离

什么是动静分离,根据上面的学习,我们通过Nginx代理的方式访问服务器,Nginx得去跟目标服务器进行连接,然后把目标服务器的资源返回给代理服务器,再给到客户端,这一次过程进行了4次连接,如下图
在这里插入图片描述
上面请求的是动态资源,而如果是静态资源,则完全可以存放在代理服务器里面,这样访问静态资源只需要连接两次即可,提高性能,如下图
菜鸟的Nginx学习总结_第13张图片
要实现动静分离,由于这里是采用的docker的方式,所以需要将静态资源先挂载进容器里面,这里需要注意一点,挂载数据的时候可以将外面的文件挂载进容器,尽管容器里面不存在该文件

菜鸟的Nginx学习总结_第14张图片
新建一个镜像实例nginx02,创建的时候将需要的静态资源挂载进容器

docker run --name nginx02 -d -p 82:80   -v $PWD/nginx/img:/data/img   -v $PWD/nginx/html:/usr/share/nginx/html -v $PWD/nginx/conf/nginx.conf:/etc/nginx/nginx.conf  -v $PWD/nginx/logs:/var/log/nginx -v $PWD/nginx/conf.d:/etc/nginx/conf.d -d nginx

注意挂载静态资源的命令:-v $PWD/nginx/img:/data/img

创建完可以进去该容器里面看一下,图片已经挂载进去
在这里插入图片描述

添加动静分离的配置
菜鸟的Nginx学习总结_第15张图片

启动容器,访问:http://39.96.22.34:82/img/
菜鸟的Nginx学习总结_第16张图片
访问http://39.96.22.34:82/img/1.jpg
菜鸟的Nginx学习总结_第17张图片
这样就实现了静态资源的访问,以后静态资源包括css和js等都可以用这种方式进行动静分离

你可能感兴趣的:(Nginx)