nginx实现负载均衡有3中常用的方式:
- 轮询
- 热备
- 权重
轮询
使用多台Tomcat部署项目,通过nginx的反向代理轮流访问各个Tomcat访问循序和配置顺序一致。
upstream modelName {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}
server {
listen 80;
server_name projectName.cn; #配置nginx暴露的域名
root /data/projectName; #前端静态项目
local / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote-addr;
proxy_pass http://modelName; #反向代理地址
}
}
热备
只在一台Tomcat进行访问,只有在这台Tomcat挂掉才会在备份Tomcat上访问。
upstream modelName {
server 127.0.0.1:8080;
server 127.0.0.1:8081 backup;
}
server {
listen 80;
server_name projectName.cn; #配置nginx暴露的域名
root /data/projectName; #前端静态项目
local / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote-addr;
proxy_pass http://modelName; #反向代理地址
}
}
权重
按照给Tomcat配的权重,随机对Tomcat进行访问。
upstream modelName {
server 127.0.0.1:8080; #权重默认为1
server 127.0.0.1:8081 weight=2;
server 127.0.0.1:8082 weight=5;
}
server {
listen 80;
server_name projectName.cn; #配置nginx暴露的域名
root /data/projectName; #前端静态项目
local / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote-addr;
proxy_pass http://modelName; #反向代理地址
}
}
ip地址hash
由于每次请求都有可能发送到另外的Tomcat中进行访问,这时就需要处理session共享问题。
upstream modelName {
ip_hash; #ip地址hash
server 127.0.0.1:8080; #权重默认为1
server 127.0.0.1:8081 weight=2;
server 127.0.0.1:8082 weight=5;
}
server {
listen 80;
server_name projectName.cn; #配置nginx暴露的域名
root /data/projectName; #前端静态项目
local / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote-addr;
proxy_pass http://modelName; #反向代理地址
}
}
也可以使用token替代session。