Nginx学习笔记:负载均衡配置、常用策略等基础知识,结合实训项目

Nginx

一、定义与讲解

Nginx是一款高性能的Web服务器软件,也是反向代理服务器。Nginx服务器安装完成后,默认自带的配置文件全部存储在conf目录下,每个配置文件都提供了一个以.default结尾的备份文件,其中,nginx.conf是Nginx默认的主配置文件。
Nginx的默认配置文件主要由maineventhttpserverlocation块组成,执行顺序为从外道内依次执行
main
  events{…}
  http{
    server{
    location{…}
  }
}

说明
main主要控制Nginx子进程所属的用户和用户组、派生子进程数、进行对应CPU、错误日志位置与级别等
events控制Nginx处理连接方式
httpNginx处理http请求的主要配置块,大多数配置都在这里进行
serverNginx中主机的配置块,可用于配置多个虚拟主机
locationserver中对应目录级别控制块,可以由多个

配置例子

二、访问控制
2.1 说明与配置例子

Nginx配置访问权限控制的指令为allow和deny,在使用时,只需跟上允许或禁止的IP、IP段或all即可。
需要注意以下几点:

  • 单个IP指定作用范围小,all指定作用范围大
  • 同一个块下,先出现的访问权限设置生效,并且会对后面出现的设置进行覆盖
  • 当多个块中都出现了权限设置指令,则内层块中的权限级别要比外层块中配置的
    权限级别高。
    在这里插入图片描述
    在这里插入图片描述
2.2 访问控制的典型应用

例如,对于网站下的img目录允许所有用户访问,但对于网站下的admin目录则仅允许管理员身份的用户访问,需要使用location块来完成相关需求的匹配。
location [ = | ~ | ~* | ^~ ] URI {…}
location @name {…}
在上述语法中,=、*、^~和@都是location用于实现访问控制的前缀,在使用的时候只能选择一种,URI表示URL地址中从域名道参数之间的部门,{…}表示指令块,用于满足location匹配条件后需要执行的指令。

前缀说明
=根据其后的指定模式进行精确匹配。例如,在访问时要与/html/aaa/index.html完全一致才会执行
~使用正则表达式完成location的匹配,区分大小写
~*使用正则表达式完成location的匹配,不区分大小写
^~不使用正则表达式,完成以指定模式开头的location匹配
@用于定义一个location块,且该块不能被外部客服端访问,只能被Nginx内部配置指令所访问
2.2.1 精确匹配

精确匹配是指用户访问的URI与指定的URI完全一致的情况,才会执行其后的指令块
在这里插入图片描述

URL192.168.78.128用户192.168.78.200用户
http://192.168.78.3403 Forbidden403 Forbidden
http://192.168.78.3/js404 Not Found403 Forbidden
http://192.168.78.3/admin/auth403 Forbidden404 Not Found
http://192.168.78.3/admin403 Forbidden403 Forbidden
2.2.2 正则表达式匹配

在下图配置中,分别表示匹配网站根目录下以.html结尾的文件与匹配网站根目录下aaa目录中以.html结尾文件。
在这里插入图片描述

URL响应结果
http://192.168.78.3/test.html404 Not Found(匹配第一个正则)
http://192.168.78.3/aaa/test.html404 Not Found(匹配第一个正则)
2.2.3 最大前缀匹配

由于location可以同时定义多个,当一个配置文件中同时出现多个location时,普通location之间遵循“最大前缀匹配”,匹配度最高的location将会执行。
在这里插入图片描述

URL响应结果
http://192.168.78.3/ng.test/data404 Not Found(匹配第一个正则)
http://192.168.78.3/ng.test/log404 Not Found(匹配第四个正则)
http://192.168.78.3/ng.test/log/data404 Not Found(匹配第四个正则)
2.2.4 最大前缀与正则

当最大前缀location与正则location同时存在时,如果正则location匹配成功,则不会执行最大前缀location
在这里插入图片描述

三、负载均衡
3.1 代理与反向代理

代理也被称为正向代理,是一个位于客服端和目标服务器之间的代理服务器,客户端将发送的请求和指定的目标服务器提交给代理服务器,然后代理服务器向目标服务器发起请求,并将获得的响应结果返回给客户端的过程
在这里插入图片描述
反向代理对于客户端而言就是目标服务器,客户端向反向代理服务器发送请求后,反向代理服务器将该请求转发给内部网络上的后端服务器,并将从后端服务器上得到的响应结果返回给客户端
在这里插入图片描述

3.2 反向代理服务配置

主要的指令是proxy_pass,用于设置后端服务器的地址,该地址中包括传输数据使用的协议、服务器主机名以及可选的URI资源等,配置域名为test.ng.test和test.web.com的虚拟主机,proxy_pass指令后的http://表示传输数据所使用的协议,在物理机中以管理员身份打开文本编辑器,编辑C:\windows\system32\drivers\etc目录下的hosts文件,实现网站的域名访问
在这里插入图片描述

3.3 实训项目中,结合ftp,实现http的反向代理,作为图片服务器
步骤一:Nginx.conf配置文件加上

include vhost/*.conf;

步骤二:在配置文件目录下创建vhost目录,下面创建img.p03.com.conf文件,文件里面内容为

在这里插入图片描述

步骤三:编辑C:\windows\system32\drivers\etc目录下的hosts文件

在这里插入图片描述

步骤四:配置好FTP Server

在这里插入图片描述

步骤五:启动nginx服务,访问http://img.p03.com/jessica.jpg,就可以看到相应的图片,在网站设计中只要显示的src的时候就可以使用这一功能

在这里插入图片描述

3.4 负载均衡配置

通过Nginx中的upstream指令可以实现负载均衡,在该指令中能够配置负载服务器组,分别为轮询方式权重方式ip_hash方式、以及利用第三方模块的方式

配置方式说明
轮询方式负载均衡默认设置方式,每个请求按照时间顺序逐一分配到不同的后端服务器进行处理
权重方式利用weight指定轮询的权重比率,与访问率成正比,用于后端服务器性能不均的情况
ip_hash方式每个请求按访问IP的hash结果分配,这样可以使每个访问固定访问一个后端服务器,可以解决session共享的问题
第三方模块第三方模块采用fair时,按照每台服务器的响应时间来分配请求,响应时间短的优先分配
3.4.1 常用状态参数
配置方式说明
max_fails允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream指令定义的错误
fail_timeout在经历max_fails次失败后,暂停服务时间,在实际应用中max_fails一般与fail_timeout一起使用
backup预留的备份机器
down表示当前的server暂时不参与负载均衡
3.4.2 一般轮询负载均衡

在这里插入图片描述

3.4.3 加权轮询负载均衡

如果负载均衡服务器组中的服务器硬件配置强弱不一,则可以通过weight参数设置权重大小,如下图所示,在循环过程中,服务器192.168.78.128会在4次请求中被分配到1次,服务器192.168.78.200则会被分配到3次
在这里插入图片描述

3.4.4 ip_hash负载均衡

ip_hash方式的负载均衡,是将每个请求按照访问IP的hash结果分配,这样就可以使来自同一个IP的客服端用户固定访问一台Web服务器,有效地解决动态网页存在的Session共享问题,例如:基于Cookie的Session共享,主要注意的是,使用ip_hash方式处理负载均衡时,Web服务器在负载均衡列表中的状态不能使用weight和backup设置
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值