标签:listen 哈希 weight 问题: 相同 out var oca 主机
一、实验实现的目标使用Nginx实现Web反向代理功能,实现如下功能:
后端Web服务器两台,可以使用httpd实现
Nginx采用轮询的方式调用后端Web服务器
两台Web服务器的权重要求设置为不同的值
最大失败次数为1,失败超时时间为30秒
二、方案设计
使用4台RHEL7虚拟机,其中一台作为Nginx代理服务器,
该服务器需要配置两块网卡,IP地址分别为192.168.4.102和192.168.2.102,
两台Web服务器IP地址分别为192.168.2.103和192.168.2.104。
客户端测试主机IP地址为192.168.4.101
三、实施步骤
步骤一、部署实施后端Web服务器
1、部署后端Web1服务器
yum -y install httpd
echo "192.168.2.103" > /var/www/html/index.html
systemctl restart httpd
2、部署后端Web2服务器,同Web1,只是主页文件不一样而已
步骤二:配置Nginx服务器,添加服务器池,实现反向代理功能
1、修改/usr/local/nginx/conf/nginx.conf配置文件
upstream webs { //定义一个web集群
server 192.168.2.103 weight=1 max_fails=1 fail_timeout=30; //权重为1,失败次数为1,间隔时间为30秒
server 192.168.2.104 weight=2 max_fails=1 fail_timeout=30;
}
server {
listen 80;
server_name www.test.com;
location / {
proxy_pass http://webs; //调用web集群
}
}
步骤三、验证
重启nginx服务,使用客户端测试效果,发现刷新时出现一次web1的页面就会出现两次web2的页面
四、问题:当同一个客户去不停访问上面www.test.com域名时,访问不同的服务器,会影响客户的体验
怎么解决这个问题呢?可以设置:设置相同客户端访问相同Web服务器,具体操作如下
upstream webs {
ip_hash; //ip_hash指令能够将某个客户端IP的请求通过哈希算法定位到同一台后端服务器上
server 192.168.2.103 weight=1 max_fails=1 fail_timeout=30;
server 192.168.2.104 weight=2 max_fails=1 fail_timeout=30;
}
重启nginx服务,然后在不同的客户端上去验证效果
标签:listen 哈希 weight 问题: 相同 out var oca 主机
原文地址:http://blog.51cto.com/453412/2058108