首先配置要去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配置即可

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





