nignx实现多端口负载均衡实例

本文介绍如何使用Nginx配置多端口负载均衡,包括不同分配方式如轮询、权重轮询、IP哈希等,并提供实战配置示例。

首先配置要去nignx.conf的配置里去配置多端口实现

在http模块里面写上如下配置:

upstream是nignx分配方式,当前默认是轮询

1.轮询:轮询是upstream的默认分配方式,即每个请求按照时间顺序轮流分配到不同的后端服务器,如果某个后端服务器down掉后,能自动剔除。

2.weight(轮询的增强):即可以指定轮询比率,weight和访问几率成正比,主要应用于后端服务器异质的场景下。

3.ip_hash :每个请求按照访问ip(即Nginx的前置服务器或者客户端IP)的hash结果分配,这样每个访客会固定访问一个后端服务器,可以解决session一致问题。

4.fair :  fair顾名思义,公平地按照后端服务器的响应时间(rt)来分配请求,响应时间短即rt小的后端服务器优先分配请求。

5.url_hash:与ip_hash类似,但是按照访问url的hash结果来分配请求,使得每个url定向到同一个后端服务器,主要应用于后端服务器为缓存时的场景下。

#分配方式  默认是轮询 即每个请求按照时间顺序轮流分配到不同的后端服务器,
	#如果某个后端服务器down掉后,能自动剔除。
	upstream demo{
	    server 192.168.0.101:8080;
		server 192.168.0.101:8181;
	}

 

在http里的server模块里面写上如下配置 

 listen       8090; #代理后要访问的端口
 server_name  localhost;  #指定访问的连接
 location / {
          proxy_pass  http://demo;  #代理转发
	  #proxy_redirect http://host:8080 http://$host:$server_port;
 }

然后启动一个服务(代码示例)端口是8080都可以,如果是一个服务器的话就再用命令启动一个,端口不一样即可

@RestController
public class test {
    @RequestMapping("/")
    public int  test(ServletRequest request){
        System.out.println(request.getLocalAddr());
        System.out.println(request.getLocalPort());
        return request.getLocalPort();

    }
}

然后服务启动成功,需要用到nginx里配置的server_name名称和listen端口来请求我们的服务

 

因为是随机访问的,有时候nginx会访问8080的端口,有时候会访问8181端口,怎么样很神奇把,怪不得都在用nginx做负载均衡和反向代理呢,很棒

当然,来回切换服务器,会导致,session不共享,最简单的跨域解决办法根据请求的ip地址,去取一个hash,根据ip地址的hash会将的请求发到同一台服务器  

upstream demo{
	  ip_hash;
	  server 192.168.0.101:8080;
	  server 192.168.0.101:8181;
}

然后用命令重新加载nginx配置即可  

这样多端口负载均衡做出来了

 

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值