Nginx内容及使用Nignx实现负载均衡

我们作为初级小白,在最初写的代码时,都是在自己的主机上运行的。但是当项目过大时,是无法在单节点上操作的(效率太低)

于是我们选择集群,即将该节点复制n份(大家都干一样的话)

当同样的工作同时大批量过来时,可以将它们分布到n个节点上,缓解压力

即服务器用空间换时间

但又有个问题是,用户根本无法记住这么多服务器的ip,顶多记个域名(www.baidu.com)

所以我们将具体访问哪个服务器的任务交给Nginx

而我们只需要给Nignx配置它需要代理的服务器

什么是Nginx

【摘自百度】Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是一款轻量级的Web 服务器/反向代理服务器[电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。

大型项目根本不可能在单节点上运行,所以找个代理器将项目为我们分配到不同的服务器

正向代理和反向代理

正向代理:需要在客户端配置代理服务器进行指定网站访问(比如下个VPN去Github)

反向代理:暴露的是代理服务器地址,隐藏了真实服务器IP地址

负载均衡

增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VGQk3ISs-1659263011886)(C:\Users\pon18\AppData\Roaming\Typora\typora-user-images\image-20220730150921279.png)]

nginx分配服务器策略

第一种 轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down掉,能自动剔除。

第二种weight

weight代表权重默认为 1,权重越高被分配的客户端越多

第三种ip_hash

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器

第四种fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

动静分离

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DoGTLJaL-1659263011887)(C:\Users\pon18\AppData\Roaming\Typora\typora-user-images\image-20220730165201764.png)]

配置文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CyYrEHim-1659263011889)(C:\Users\pon18\AppData\Roaming\Typora\typora-user-images\image-20220730122209493.png)]

...              #全局块
 
events {         #events块
   ...
}
 
http      #http块
{
    ...   #http全局块
    server        #server块
    { 
        ...       #server全局块
        location [PATTERN]   #location块
        {
            ...
        }
        location [PATTERN] 
        {
            ...
        }
    }
    server
    {
      ...
    }
    ...     #http全局块
}

1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。

2、events块:事件

配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。

3、http块:包含包含两部分:http全局块和server块。可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。

4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。

5、location块:配置请求的路由,以及各种页面的处理情况。

#注释
#user 适用于linux操作系统,因为linux需要指定由哪个用户来启动linux(因为linux有权限)
#user  nobody;
#工作进程 后面的参数是说nginx有几个工作进程,一般是几个CPU就给几个工作进程
worker_processes  1;

#事件
events {
    worker_connections  1024;#一个工作进程可有的连接
}

#代理http协议
#Nignx开启后,占用一个端口,监听某个端口上的协议
http {
    include       mime.types;  #mime.types中说明了可以接收的文件类型
    default_type  application/octet-stream;  #默认接收的类型

    sendfile        on;   #发送文件,在浏览器上发送文件,Nginx可以接收文件
    #tcp_nopush     on;   #不开启接收推送(比如网站上的广告弹窗)

    #keepalive_timeout  0;
    keepalive_timeout  65;  #存活时间65s
	
	upstream logic{
		server localhost:8080;
		server localhost:9000;
	}

    server {       #server对象
	   #在哪个端口监听 
        listen       80;  
        server_name  localhost;
		
        location / {   #请求地址是/,即所有的请求地址
            #root   html;
            #index  index.html index.htm;
			proxy_pass http://logic/;   #将地址转到另一个地址位置
        }
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TkQwD4bw-1659263011889)(C:\Users\pon18\AppData\Roaming\Typora\typora-user-images\image-20220731145938329.png)]

实例演示

在nginx.conf配置文件中添加如下内容:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jk2RxpHi-1659263011890)(C:\Users\pon18\AppData\Roaming\Typora\typora-user-images\image-20220730163646894.png)]

开启两个SpringBoot项目,一个端口号为8080,另一个设置为9000

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wpvQHZys-1659263011890)(C:\Users\pon18\AppData\Roaming\Typora\typora-user-images\image-20220730162653963.png)]

开启两个项目,开启Nignx.exe

在浏览器地址栏中输入相关的接口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5j75JHdh-1659263011891)(C:\Users\pon18\AppData\Roaming\Typora\typora-user-images\image-20220730163403011.png)]

不停刷新就会出现不同页面(访问不同端口中的接口获取到不一样的数据)

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值