nginx负载均衡详解(轮询、权重、负载均衡)

 更新时间:2026年03月02日 10:38:39   作者:一恍过去  
Nginx是一个高性能的开源Web服务器和反向代理服务器,主要用于高性能的高性能的Web服务器和反向代理服务器,它以其卓越的性能、可扩展性和稳定性而闻名

前言

Nginx是一个开源的高性能的Web服务器和反向代理服务器。它由俄罗斯的程序员Igor Sysoev创建,并于2004年首次公开发布。

Nginx以其卓越的性能、可扩展性和稳定性而闻名,并被广泛用于构建和部署Web应用程序。

Nginx有以下特点和功能:

  • 1. 高性能: Nginx采用了事件驱动的异步架构,通过使用较少的系统资源即可处理大量的并发连接。它能够处理高流量的请求,并以高速度响应客户端。
  • 2. 反向代理: Nginx作为反向代理服务器,可以将客户端的请求转发到后端服务器,并将响应返回给客户端。它可以实现负载均衡、缓存、SSL终端和安全等功能。
  • 3. 静态资源服务: Nginx可以高效地提供静态文件(如HTML、CSS、JavaScript、图像、视频等)的下载服务。它可以通过简单的配置实现快速的文件传输和目录索引。
  • 4. 动态内容支持: Nginx可以通过与后端应用服务器(如PHP、Python、Java等)的集成,处理动态生成的内容,并将其传递给客户端。
  • 5. 可扩展性: Nginx的模块化结构使其易于扩展和定制。它支持第三方模块的添加,以满足特定的需求和功能扩展。
  • 6. 简单的配置: Nginx的配置文件采用简洁而灵活的语法,易于理解和管理。它具有清晰的结构,使得对服务器行为的控制和调整变得简单。
  • 7. 高可靠性: Nginx具有出色的稳定性和鲁棒性。它可以处理大规模的并发连接和高负载,并具备故障恢复和自动重启等功能。

Nginx是一个高性能的开源Web服务器和反向代理服务器,它也可以用作负载均衡器。Nginx的负载均衡功能允许将传入的请求分发到多个后端服务器,以提高系统的性能、可靠性和可扩展性。

通过使用Nginx作为负载均衡器,可以将请求有效地分发到多个后端服务器,提高系统的性能和可用性。它可以平衡服务器的负载、提供故障恢复能力,并允许动态添加或删除后端服务器,实现系统的弹性扩展。

1、负载均衡类型

Nginx负载均衡器支持以下三种负载均衡算法:

  • 轮询(Round Robin): 默认情况下,Nginx使用轮询算法将每个请求依次分配给后端服务器。它按照服务器列表的顺序依次分发请求,确保每个后端服务器都能平均接收到请求。
  • 权重(Weighted Round Robin): 在轮询算法的基础上,Nginx负载均衡器支持设置服务器的权重。通过给服务器分配不同的权重值,可以实现按比例分配负载的效果。具有更高权重值的服务器将接收到更多的请求。
  • 负载均衡(Least Connections): 负载均衡算法根据服务器的当前连接数来决定请求的分发。它将请求发送到当前连接数最少的服务器,以确保请求分布得更加均衡。这种算法适用于处理长连接或有状态会话的情况。

2、配置负载均衡

2.1、默认配置(轮询)

			upstream demo-proxy {
				#默认为轮询
				server 39.106.136.224:10008 ;
				server 39.106.136.224:10009 ;
			}

			server {
			.....
			location /demo {
				proxy_pass         http://demo-proxy;
				port_in_redirect   on;
				proxy_redirect     off;
				proxy_set_header   Host             $host;
				proxy_set_header   X-Real-IP        $remote_addr;
				proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
				proxy_set_header   Upgrade $http_upgrade;
				proxy_set_header   Connection "upgrade";
				}
			}

2.2、权重

			upstream demo-proxy {
				#设置权重
				server 39.106.136.224:10008 weight=2;
				server 39.106.136.224:10009  weight=1;
			}
			
			server {
			.....
			location /demo {
				proxy_pass         http://demo-proxy;
				port_in_redirect   on;
				proxy_redirect     off;
				proxy_set_header   Host             $host;
				proxy_set_header   X-Real-IP        $remote_addr;
				proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
				proxy_set_header   Upgrade $http_upgrade;
				proxy_set_header   Connection "upgrade";
				}
			}

2.3、ip_hash

			upstream demo-proxy {
				#ip_hash类型 
				ip_hash;
				server 39.106.136.224:10009 ;
				server 39.106.136.224:10008 ;
			}
			
			server {
			.....
			location /demo {
				proxy_pass         http://demo-proxy;
				port_in_redirect   on;
				proxy_redirect     off;
				proxy_set_header   Host             $host;
				proxy_set_header   X-Real-IP        $remote_addr;
				proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
				proxy_set_header   Upgrade $http_upgrade;
				proxy_set_header   Connection "upgrade";
				}
			}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Mac M1 Nginx 配置多站点的实现

    Mac M1 Nginx 配置多站点的实现

    这篇文章主要介绍了Mac M1 Nginx 配置多站点的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • NGINX阻止指定ip的请求问题及解决方案

    NGINX阻止指定ip的请求问题及解决方案

    web页面做了一个功能,在websocket请求失败的情况,会定时向服务端进行重试进行建立连接,这篇文章给大家介绍NGINX阻止指定ip的请求问题及解决方案,感兴趣的朋友一起看看吧
    2024-02-02
  • PHP(FastCGI)在Nginx的alias下出现404错误的解决方法

    PHP(FastCGI)在Nginx的alias下出现404错误的解决方法

    这篇文章主要介绍了PHP(FastCGI)在Nginx的alias下出现404错误的解决方法,涉及nginx平台的相关配置技巧,需要的朋友可以参考下
    2016-05-05
  • windows下RunHiddenConsole 启动 nginx与php(RunHiddenConsole下载)

    windows下RunHiddenConsole 启动 nginx与php(RunHiddenConsole下载)

    这篇文章主要介绍了RunHiddenConsole 启动 nginx与php的相关资料,希望通过本文能帮助到大家,让大家学会使用RunHiddenConsole,需要的朋友可以参考下
    2017-10-10
  • nginx https反向代理tomcat的2种实现方法

    nginx https反向代理tomcat的2种实现方法

    这篇文章主要给大家介绍了关于nginx https反向代理tomcat的2种实现方法,第一种方法是nginx配置https,tomcat也配置https,第二种方法是nginx采用https,tomcat采用http,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
    2017-12-12
  • Nginx利用Logrotate实现日志分割的详细过程

    Nginx利用Logrotate实现日志分割的详细过程

    nginx日志分割是很常见的运维工作,下面这篇文章主要给大家介绍了关于Nginx利用Logrotate日志分割的详细过程,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • nginx实现IP地址透传的示例代码

    nginx实现IP地址透传的示例代码

    默认后端服务器只能看到是前端nginx调度器访问的本机,本文主要介绍了nginx实现IP地址透传的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • nginx控制连接数及访问速率的实现

    nginx控制连接数及访问速率的实现

    本文主要介绍了Nginx中ngx_http_limit_conn_module和ngx_http_limit_req_module模块的使用,用于控制连接数和请求速率,具有一定的参考价值,感兴趣的可以了解一下
    2024-12-12
  • nginx http模块数据存储结构小结

    nginx http模块数据存储结构小结

    这篇文章主要介绍了nginx http模块数据存储结构小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • Nginx 部署的虚拟主机使用 Let's Encrypt 加密 https的方法

    Nginx 部署的虚拟主机使用 Let's Encrypt 加密 https的方法

    HTTPS 是现在网站的标配了,很多服务都是必须使用 https,如果你不使用的话,浏览器可能就不会对你非常友好了,这篇文章主要介绍了Nginx 部署的虚拟主机如何使用 Let's Encrypt 来进行加密 https,需要的朋友可以参考下
    2022-07-07

最新评论