机器有限,我是nginx和服务放在了一台虚拟机
虚拟机同一个项目启动两次,指定不同的端口号
这是第一个,使用项目application.yml里配置的port:18888
这是第二个,指定端口:28888
接着是linux,直接上nignx.conf,重要配置
http {
#这里使用了负载均衡,默认是轮询策略,
upstream backserver {
server 127.0.0.1:18888;
server 127.0.0.1:28888;
}
server {
listen 80;
# server_name 125.125.125.125;location /book { #①
#root html;
#index index.html index.htm;
proxy_pass http://backserver/book;#如果①处写了过滤词,那么转发的时候也要写到
}
}
}
weight就是权重策略,weight=2表示该服务请求是没配置的两倍,权重越高,概率越大
upstream backserver {
server 127.0.0.1:18888 weight=2;
server 127.0.0.1:28888;
}
ip_hash,如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过
哈希算法,自动定位到该服务器。每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,ip_hash不能与backup同时使用。
upstream backserver {
ip_hash;
server 127.0.0.1:18888;
server 127.0.0.1:28888;
}
least_conn
把请求转发给连接数较少的后端服务器,有些请求占用的时间很长,会导致其所在的后端负载较高
upstream backserver {
least_conn; #把请求转发给连接数较少的后端服务器
server 127.0.0.1:18888 weight=2;server 127.0.0.1:28888;
}
fair(第三方)nginx需要下载配置fair模块,不能直接使用
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream backserver {
fair;
server 127.0.0.1:18888;
server 127.0.0.1:28888;
}
url_hash(第三方)同样不能直接使用,需要下载配置
配合缓存命中来使用,同一个资源多次请求,可能会到达不同的服务器上,导致不必要的多次下载,缓存命中率不高,以及一些资源时间的浪费。而使用url_hash,可以使得同一个url(也就是同一个资源请求)会到达同一台服务器,一旦缓存住了资源,再此收到请求,就可以从缓存中读取
upstream backserver {
hash $request_uri; #实现每个url定向到同一个后端服务器
server 127.0.0.1:18888;
server 127.0.0.1:28888;
}