nginx 是一款非常优秀的轻量级反向代理服务器,可以很轻松的就实现 web 的反向代理并且能够进行负载均衡。
nginx 通过 upstream 来实现负载均衡具体配置如下:
upstream web_project {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
server {
location / {
proxy_pass http://web_project;
}
}
其中 web_project 为 upstream 名称任意起名一般为服务名称或者项目名称,nginx 默认负载均衡策略为轮询
其他策略还有例如 加权轮询:
upstream web_project {
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8081 weight=2;
}
其中 weight 表示权重,数字越大,负载越重。例子中的第二个服务负载是第一个负载的2倍
在比如:IP hash:
upstream web_project {
ip_hash;
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
同一个客户端IP会被分配到同一个服务上可用来简单的解决分布式 session 不一致问题。
在比如 fair:
upstream web_project {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
fair;
}
按服务的响应时间来分配,响应时间短的优先分配
在比如 url_hash:
upstream web_project {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
hash $request_uri;
hash_method crc32;
}
URL hash 和 IP hash 相似,不过是已URL作为 hash 源,可用保证同一个请求会被分配到同一个服务,其中 hash_method 表示使用的 hash 算法。
最后再来一个完整的配置
upstream web_project {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
server {
listen 80;
server_name www.zux2.com;
root /home/webroot;
location / {
index index.html;
}
location ~.json$ { # 动态请求(所有以.json结尾的请求)负载均衡,
proxy_pass http://web_project;
}
}
更多JAVA 问题,请关注微信小程序: