配置前准备
因为资源资源有限这里想用一台的单个端口模拟三台web服务器(ip地址根据真实情况配置)。
代理服务器:192.168.1.32;
web服务器1:192.168.1.32::81;
web服务器2:192.168.1.32::82;
nginx反向代理配置
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://192.168.1.32:81;
index index.html index.htm;
}
}
nginx 也可用80端口绑定不同的域名指向不同的主机,做多主机反向代理。
nginx负载均衡配置
upstream backend {
#ip_hash;
server 192.168.1.32:81;
server 192.168.1.32:82;
}
server {
listen 80;
server_name trffweb;
location / {
#反向代理的地址
proxy_pass http://backend;
}
}
在上面的例子中,当用户访问www.linuxidc.com站点时,Nginx会负载平衡分配给后端的三个服务器。
加权负载均衡
http {
upstream linuxidc{
server 192.168.1.100 weight=3; #指定后端服务器地址,权重为3
server 192.168.1.110;
}
server {
listen 80;
server name www.linuxidc.com;
location / {
proxy_pass http://linuxidc;
}
}
}
在上面配置中,每3个请求分配给192.168.1.100,然后第4个请求会分配给192.168.1.110,如此循环下去。
IP HASH负载均衡
upstream linuxidc {
ip_hash; #采用IP HASH算法
server 192.168.1.100;
server 192.168.1.110;
server 192.168.1.120;
}
如果需要将客户与后端一台服务器“绑定”起来,可以使用ip-hash负载平衡机制。这样可以确保来自相同客户机的请求总是指向相同的服务器除非该服务器不可用。
Nginx高可用的实现,利用backup标签,可以实现高可用,当主服务挂掉后,backup服务器会自动接管服务,当主服务恢复后,backup也会自动放弃服务
http {
upstream linuxidc{
server 192.168.1.100
server 192.168.1.110 backup;
}
server {
listen 80;
server name www.linuxidc.com;
location / {
proxy_pass http://linuxidc;
}
}
}
Nginx的upstream模块相当于是建立一个函数库一样,把后端的服务器地址放在了一个池子里,而proxy模块则是从这个池子里调用了这些服务器