详解如何通过nginx进行服务的负载均衡

 更新时间:2023年11月28日 08:50:50   作者:upton-nan  
负载均衡器可以将用户请求根据对应的负载均衡算法分发到应用集群中的一台服务器进行处理,本文主要为大家详细介绍了如何通过nginx进行服务的负载均衡,需要的可以参考下

简单介绍

随着互联网的发展,业务流量越来越大并且业务逻辑也越来越复杂,单台服务器的性能及单点故障问题就凸显出来了,因此需要多台服务器组成应用集群,进行性能的水平扩展以及避免单点故障的出现。应用集群是将同一应用部署到多台机器上,组成应用集群,接收负载均衡器分发的请求,进行业务处理并返回响应数据。负载均衡器可以将用户请求根据对应的负载均衡算法分发到应用集群中的一台服务器进行处理。

负载均衡器

我们可以通过nginx作为负载均衡器,实现负载均衡的功能

1.首先我们需要准备Linux系统,并启动nginx服务,并在服务器上启动两个java web的spring boot项目,其中一个web服务的端口是8080,另一个web服务的端口是8081,并将服务正常启动

2.在nginx中配置负载均衡器

打开nginx的配置文件nginx.conf并增加如下配置信息

    # upstream指令可以定义一组服务器
    upstream study-balance-server {	
        server 192.168.xxx.xxx:8080;
        server 192.168.xxx.xxx:8081;
    }
 
    server {
 
        location /study-balance/ {
            # 反向代理配置,将请求转发到指定的服务
            proxy_pass http://study-balance-server;
        }
 
    }

3.重新加载nginx配置文件

sudo ./nginx -t
 
 
sudo ./nginx -s reload

4.浏览器测试访问

访问查看web项目的日志信息或者其他标记可以区分当前项目访问的是那台端口的服务:http://服务器ip地址/study-balance/

本示例中通过访问时日志的打印时间顺序可以知道负载均衡已经正常启动

负载均衡的策略

1.nginx默认策略是轮询,详细信息如下

名称说明特点
轮询默认方式
weight权重方式根据权重分发请求,权重大的分配到请求的概率大
ip_hash依据ip分配方式根据客户端请求的IP地址计算hash值, 根据hash值来分发请求, 同一个IP发起的请求, 会发转发到同一个服务器上
least_conn依据最少连接方式哪个服务器当前处理的连接少, 请求优先转发到这台服务器
url_hash依据url分配方式根据客户端请求url的hash值,来分发请求, 同一个url请求, 会发转发到同一个服务器上
fair依据响应时间方式优先把请求分发给处理请求时间短的服务器

2.示例权重配置

# upstream指令可以定义一组服务器
upstream study-balance-server {	
    server 192.168.xxx.xxx:8080 weight=10;
    server 192.168.xxx.xxx:8081 weight=5;
}

配置的weight权重是相对的,在上述的配置中,效果就是在大数据量的请求下,最终8080接收的请求数是8081的两倍

3.示例依据ip分配方式

    # upstream指令可以定义一组服务器
    upstream study-balance-server {	
        ip_hash;
        server 192.168.xxx.xxx:8080;
        server 192.168.xxx.xxx:8081;
    }

指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证session会话。这样每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题

以上就是详解如何通过nginx进行服务的负载均衡的详细内容,更多关于nginx负载均衡的资料请关注脚本之家其它相关文章!

相关文章

  • Nginx服务优化解读

    Nginx服务优化解读

    文章介绍了如何隐藏Nginx版本号以提高安全性,以及如何配置Nginx用户与组以增强访问控制,还讨论了日志切割的方法,以防止日志文件过大,此外,还提到了Nginx和PHP-FPM的配置优化,包括进程管理、缓存设置和防盗链配置
    2026-03-03
  • Nginx如何为静态文件添加访问权限

    Nginx如何为静态文件添加访问权限

    这篇文章主要介绍了Nginx如何为静态文件添加访问权限问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Nginx配置https的实现

    Nginx配置https的实现

    本文主要介绍了Nginx配置https的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • nginx部署前端vue项目完整详细指南

    nginx部署前端vue项目完整详细指南

    在使用Nginx部署前端Vue项目时,需要确保项目的生产环境版本已经打包,并且Nginx已经安装并配置在服务器上,下面我们来看看具体步骤吧
    2025-09-09
  • nginx支持带下划线的header实现

    nginx支持带下划线的header实现

    如果header name中包含下划线,则忽略掉,本文主要介绍了nginx支持带下划线的header实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • Nginx跨域访问场景配置和防盗链详解

    Nginx跨域访问场景配置和防盗链详解

    这篇文章主要介绍了Nginx跨域访问场景配置和防盗链详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 一文带你搞懂Nginx中的配置文件

    一文带你搞懂Nginx中的配置文件

    Nginx(发音为“engine-x”)是一款高性能的 Web 服务器、反向代理服务器和负载均衡器,广泛应用于全球各类网站和应用中,下面就跟随小编一起来了解下如何配置 Nginx 以满足不同的需求吧
    2025-01-01
  • Nginx代理Redis哨兵主从配置的实现

    Nginx代理Redis哨兵主从配置的实现

    本文主要介绍了Nginx代理Redis哨兵主从配置的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • nginx+tomcat实现负载均衡,使用redis session共享

    nginx+tomcat实现负载均衡,使用redis session共享

    这篇文章主要介绍了nginx tomcat负载均衡 使用redis session共享,有兴趣的同学可以了解一下。
    2016-12-12
  • Nginx日志文件在哪及如何从中提取时间信息

    Nginx日志文件在哪及如何从中提取时间信息

    Nginx提供了一个非常灵活的日志记录功能,它可以使每个块的配置拥有各自独立的日志进行记录,并且根据记录内容的不同又分为访问日志和错误日志,这篇文章主要介绍了Nginx日志文件在哪及如何从中提取时间信息的相关资料,需要的朋友可以参考下
    2025-10-10

最新评论