电商网站分析报告,中国咖啡网站建设方案,seo百度快照优化公司,网站建设策划书事物选题背景
nginx中经常有这样的场景#xff0c;多个server块共用一个域名。 如#xff1a;upstream有2个以上的域名#xff0c;nginx配置两个server块#xff0c;共用一个upstream配置。 那么#xff0c;如果其中一个域名发生no live upstreams while connecting to ups…背景
nginx中经常有这样的场景多个server块共用一个域名。 如upstream有2个以上的域名nginx配置两个server块共用一个upstream配置。 那么如果其中一个域名发生no live upstreams while connecting to upstream错误会不会影响另一个域名呢
先说结论
会。导致另一个域名会返回5xx并且也报错no live upstreams while connecting to upstream
模拟错误no live upstreams
环境
机器ip作用test1192.168.10.129nginx代理服务器test2192.168.10.130、192.168.10.150upstream服务器(用nginx模拟)
test1配置(角色nginx代理)
配置域名解析
vim /etc/hosts# 将域名解析到本机待会儿在本机测试127.0.0.1 test1.com127.0.0.1 test2.comnginx配置
error_log /var/log/nginx/error.log;
server {listen 80;listen [::]:80;server_name test1.com;location /test {proxy_set_header Host $host;proxy_next_upstream http_502; # 关键配置遇到502则尝试下一个upstream serverproxy_pass http://test;}
}
server {listen 80;listen [::]:80;server_name test2.com;location /test {proxy_set_header Host $host;proxy_pass http://test;}
}
upstream test {server 192.168.10.130 max_fails1 fail_timeout15s;server 192.168.10.150 max_fails1 fail_timeout15s;
}test2配置(角色upstream)
server {listen 80;listen [::]:80;server_name test1.com;location /test {return 502 test1.com; # 关键配置返回502模拟错误}
}
server {listen 80;listen [::]:80;server_name test2.com;location /test {return 200 test2.com;}
}测试
在哪里测试test1
curl -i http://test2.com/test # 快速运行多遍发现不报错。
curl -i http://test1.com/test # 快速运行多遍观察/var/log/nginx/error.log会报错no live upstreams
curl -i http://test2.com/test # 报错后立即执行此命令。发现也报错了。得出结论nginx中多个server块共用upstream会相互影响
建议
如果影响业务那就将重要的服务的upstream分离出来。实测不会相互影响 那年郭少在京城 这篇文章的最新版请看我的另一个博客https://www.cnblogs.com/NetRookieX/p/17959533