Nginx负载均衡
实现一个本地例子
1.准备几个网站main.test
、branch1.test
、branch2.test
2. 端口配置:branch1.test:801
配置801、branch2.test:802
配置802
3.实现效果:访问main.test
时,跳转到branch1.test
、branch2.test
并输出内容
4.添加网站输出内容,如main.test
输出main.test,branch1.test
输出branch1.test,branch2.test
输出branch2.test
5.配置文件,在vhost
(没有则在nginx.conf
的http
里面)添加代理配置
# 反向代理配置
upstream server_list{
server branch1.test:801;
server branch2.test:802;
}
6.然后server
里面添加引用
server {
location / {
#引用 upstream
proxy_pass http://server_list;
}
}
7.反复访问http://main.test/
,轮流输出branch1.test
、branch2.test
的内容则成功。
下面是完整代码和几种模式
Nginx负载均衡的几种模式
轮询(默认)
每个请求按照时间顺序逐一分配到不同的服务器
# 反向代理配置
upstream server_list{
server branch1.test:801;
server branch2.test:802;
}
server {
listen 80;
server_name localhost;
location / {
root html;
#引用 upstream
proxy_pass http://server_list;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
权重 weight
weight表示权重,默认为1,权重越高分配的客户端越多
指定轮询的几率,weight和访问比率成正比,用户服务器的性能不均
# 反向代理配置
upstream server_list{
server branch1.test:801 weight=5;
server branch2.test:802 weight=1;
}
ip_hash
每个请求按访问ip的hash值分配,客户端会固定访问一个后端服务器,可以解决会话session丢失的问题
# 反向代理配置
upstream server_list{
ip_hash;
server branch1.test:801;
server branch2.test:802;
}
最少连接数
# 反向代理配置
upstream server_list{
least_conn;
server branch1.test:801;
server branch2.test:802;
}