首页 > 系统相关 >nginx负载均衡

nginx负载均衡

时间:2024-03-13 16:33:55浏览次数:27  
标签:负载 http practice 192.168 server nginx 均衡 服务器

nginx负载均衡

使用客户端的真实ip进行hash

  • 在经过多层代理后,ip_hash获取到的是服务器的ip,客户端真实ip需要从$http_x_forwarded_for获取;

  • 在http模块下增加map模块,返回客户端ip,在upstream模块中使用map的第二个参数进行hash;

    http {
        #参数映射(根据第一个属性的值,从下方列表中匹配值,返回到第二个属性)
        map $http_x_forwarded_for $client_real_ip {
            # 获取第一个ip
            ~^(?P<first_addr>[0-9\.]+),?.*$ $first_addr;
            # 如果http_x_forwarded_for为空则使用remote_addr服务器ip
            "" $remote_addr;
        }
    
        # 负载均衡服务池
        upstream practiceBoot {
            hash $client_real_ip;
            server 192.168.1.100:8080; # 后端服务器1
            server 192.168.1.101:8080; # 后端服务器2
        }
    
        server {
            listen 80;
    
            # 使用上游服务器组进行负载均衡
            location /practice{
                proxy_pass http://practiceBoot/practice;# 将请求代理到上游服务器组
                # 可以添加其他代理相关的配置,如代理超时、缓冲区大小等
            }
        }
    }
    

轮询

  • 轮询是默认负载均衡模式,每个请求按照顺序分配给后端服务器,保证每个服务器平等负载。

     http {
         # 定义上游服务器组
         upstream practiceBoot {
             server 192.168.1.100:8080; # 后端服务器1
             server 192.168.1.101:8080; # 后端服务器2
             # 可以继续添加更多的后端服务器
         }
     
         server {
             listen 80;
     
             # 使用上游服务器组进行负载均衡
             location /practice {
                 proxy_pass http://practiceBoot/practice; # 将请求代理到上游服务器组
                 # 可以添加其他代理相关的配置,如代理超时、缓冲区大小等
             }
         }
     }
    

IP Hash

  • 通过对客户端IP地址计算出一个Hash值,再将该值与后端服务器列表进行匹配,实现同一客户端访问同一服务器的功能。

     http {
         # 定义上游服务器组
         upstream practiceBoot {
            ip_hash;
             server 192.168.1.100:8080; # 后端服务器1
             server 192.168.1.101:8080; # 后端服务器2
             # 可以继续添加更多的后端服务器
         }
     
         server {
             listen 80;
     
             # 使用上游服务器组进行负载均衡
             location /practice {
                 proxy_pass http://practiceBoot/practice; # 将请求代理到上游服务器组
                 proxy_set_header X-Real-IP $remote_addr;
                 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                 # 其他代理设置...
             }
         }
     }
    

最少连接

  • 将请求发送到当前连接数最少的服务器,以实现最均衡的负载均衡。

    http {
         # 定义上游服务器组
         upstream practiceBoot {
            least_conn; # 使用最少连接策略
             server 192.168.1.100:8080; # 后端服务器1
             server 192.168.1.101:8080; # 后端服务器2
             # 可以继续添加更多的后端服务器
         }
     
         server {
             listen 80;
     
             # 使用上游服务器组进行负载均衡
             location /practice {
                 proxy_pass http://practiceBoot/practice; # 将请求代理到上游服务器组
                 # 可以添加其他代理相关的配置,如代理超时、缓冲区大小等
             }
         }
     }
    

基于请求URI的负载均衡

  • 可以通过反向代理设置规则,根据请求URI的不同将请求分配到相应的服务器上。

    http {
         # 定义上游服务器组
         upstream practiceBoot {
            hash $uri;
             server 192.168.1.100:8080; # 后端服务器1
             server 192.168.1.101:8080; # 后端服务器2
             # 可以继续添加更多的后端服务器
         }
     
         server {
             listen 80;
     
             # 使用上游服务器组进行负载均衡
             location /practice {
                 proxy_pass http://practiceBoot/practice; # 将请求代理到上游服务器组
                 # 可以添加其他代理相关的配置,如代理超时、缓冲区大小等
             }
         }
     }
    

标签:负载,http,practice,192.168,server,nginx,均衡,服务器
From: https://www.cnblogs.com/gainer/p/18070945

相关文章

  • OBS+Nginx+VLC推拉流
    目录概述环境准备安装Nginx安装OBS安装VLC操作步骤Nginx添加rtmp配置使用OBS推流设置推流来源设置推流地址开始直播使用VLC拉流附图概述推拉流分为推流和拉流。推流就是将client端的视频画面推送到流媒体服务器;拉流就是另外一个client端从流媒体服务器获取视频画面。本文中,使用......
  • 46_docker-compose_nginx
    1.安装Docker-composecurl-L"https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-$(uname-s)-$(uname-m)"-o/usr/local/bin/docker-composechmod+x/usr/local/bin/docker-composeln-s/usr/local/bin/docker-compose/usr/b......
  • Nginx安装nginx-rtmp-module模块
    简介nginx中的模块虽然就是类似插件的概念,但是它无法像VsCode那样轻松的安装扩展。nginx要安装其它模块必须同时拿到nginx源代码和模块源代码,然后手动编译,将模块打到nginx中,最终生成一个名为nginx的可执行文件。流程查看当前nginx的版本(假设安装位置为:/usr/local/nginx)下......
  • Rust 构建开源 Pingora 框架可以与nginx媲美
    一、概述Cloudflare为何弃用Nginx,选择使用Rust重新构建新的代理Pingora框架。Cloudflare成立于2010年,是一家领先的云服务提供商,专注于内容分发网络(CDN)和分布式域名解析。它提供一系列安全和性能优化服务,包括防火墙、DDoS防护、SSL/TLS加密和威胁分析。二、Pingora......
  • 如何下载Nginx,部署并设置自启动
    Nginx安装:将程序里的Nginx压缩包进行解压,并将里面的conf文件进行替换将前端打好的包,放在Nginx目录下的html文件夹下面,并在conf文件配置好root的路由地址例如:nginx-1.24.0/html/life/dist需要创建在原来Nginxhtml目录下创建一个life文件夹,然后将前端打包的dist放进去配......
  • 利用Nginx正向代理实现局域网电脑访问外网
    引言在网络环境中,有时候我们需要让局域网内的电脑访问外网,但是由于网络策略或其他原因,直接访问外网是不可行的。这时候,可以借助Nginx来搭建一个正向代理服务器,实现局域网内电脑通过Nginx转发访问外网的需求。在工作中我遇到了一个类似的情况:在公司网络中,由于管理要求,局域网......
  • Nginx 学习
    1.1Nginx是什么?什么场景需要?Nginx到底是什么?是高性能HTTP和反向代理的web服务器Nginx做什么事情?主流应用,HTTP服务器,Web服务器。(性能高,非常注重效率,能够经受高负载考验,支出5w并发数,CPU占用、内存占用低)反向代理服务器负载均衡服务器动静分离(url和前端)Nginx特点占用内......
  • Nginx应用场景及配置
    目录一、Web服务器1.HTTP2.HTTPS二、反向代理三、负载均衡四、重定向1.老域名跳转新域名2.路径重定向五、防盗链六、手机端重定向PC端七、基于请求路径转发不同服务一、Web服务器1.HTTPserver{listen80;server_name_;location/{root/data;......
  • 如何使用RunnerGo模拟用户分流负载
    在实际的软件使用过程中会有这样的一个情况:用户登录系统后通常会进行多样化的操作,涉及不同的功能模块,这实际上是对系统资源的一种分流负载。那么,我们如何有效地还原这种分流负载情况呢?今天给大家介绍RunnerGo的接口权重功能。通过配置接口权重,RunnerGo能够根据业务逻辑、系统压力......
  • 深入理解 Nginx:原理和基础介绍
    简介Nginx(发音为"engine-x")是一个高性能的开源Web服务器,它也可以用作反向代理服务器、负载均衡器、HTTP缓存以及作为邮件代理服务器。它的灵活性、高性能和可扩展性使其成为许多互联网公司和网站的首选服务器软件。本文将介绍Nginx的原理、基础知识以及其在互联网架构中的......