nginx中多个server块共用upstream会相互影响吗

这篇具有很好参考价值的文章主要介绍了nginx中多个server块共用upstream会相互影响吗。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

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 作用
test1 192.168.10.129 nginx代理服务器
test2 192.168.10.130、192.168.10.150 upstream服务器(用nginx模拟)

test1配置(角色:nginx代理)

配置域名解析:

vim /etc/hosts
	# 将域名解析到本机,待会儿在本机测试
	127.0.0.1 test1.com
	127.0.0.1 test2.com

nginx配置:

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 server
		proxy_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_fails=1 fail_timeout=15s;
	server 192.168.10.150 max_fails=1 fail_timeout=15s;
}

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相互影响

建议

如果影响业务,有2种解法:

  1. 将重要的服务的upstream分离出来。(实测不会相互影响)
  2. 调整max_fails和fail_timeout参数,如server 192.168.10.130 max_fails=99999 fail_timeout=5s;



那年,郭少在京城



这篇文章的最新版请看我的另一个博客:https://www.cnblogs.com/NetRookieX/p/17959533






文章来源地址https://www.toymoban.com/news/detail-792133.html

到了这里,关于nginx中多个server块共用upstream会相互影响吗的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue 实现多个路由共用同一个页面组件

    这样的弊端是如果router-view里包含其他组件,切换其他组件会让其他组件也重新渲染。 这样的问题是导致切换路由会闪烁一下。因为切换后所有钩子函数都重新触发了。

    2024年02月07日
    浏览(35)
  • 多个Vue项目如何共用一个node_modules

    多个项目共同用一个项目的node_modules 问题:多个vue项目的node_modules依赖包相同,怎么共用同一个node_modules依赖包? 1.以管理员身份打开命令窗口cmd 2.输入命令:mklink /d 需要链接的项目地址 引用的源文件项目地址 1.如:源文件项目地址为:D:worksourceFilenode_modules 2.如:需要链

    2024年02月04日
    浏览(34)
  • Nginx-报错no live upstreams while connecting to upstream

    生产环境Nginx间歇性502的事故分析过程 客户端请求后端服务时一直报错 502 bad gateway ,查看后端的服务是正常启动的。后来又查看Nginx的错误日志,发现请求后端接口时Nginx报错 no live upstreams while connecting to upstream ,查看该错误的解释可以得到的结果是upstream中没有可以提供服

    2024年02月10日
    浏览(29)
  • nginx偶发502 no live upstreams while connecting to upstream

    客户截屏系统偶发报错 后台排查nginx后台偶尔大量报错 no live upstreams while connecting to upstream 在nginx服务器上nestat查看 发现存在大量的 TIME_WAIT状态的连接 问题表现在nginx与下游服务器的连接出现了异常,在突发流量以后由于TIME_WAIT状态的连接过多导致无法创建足够的连接。 为

    2024年02月09日
    浏览(27)
  • Nginx系列--upstream模块的使用

    原文网址:Nginx系列--upstream模块的使用_IT利刃出鞘的博客-CSDN博客 说明         本文介绍nginx的upstream模块的使用。         nginx的upstream模块是用于负载均衡的。 upstream模块介绍         Nginx的负载均衡功能依赖于ngx_http_upsteam_module模块,所支持的代理方式包括proxy_pass,

    2024年02月06日
    浏览(26)
  • Nginx报错信息*upstream prematurely closed connection while reading responseheader from upstream’

    Nginx 报错信息 upstream prematurely closed connection while reading response header from upstream 通常意味着后端服务(在这种情况下是监听在 8089 端口的服务)在 Nginx 期望读取响应头的时候关闭了连接。这可能是由于几种原因造成的,包括后端服务崩溃、超时设置不当或资源限制。 要解决这

    2024年02月04日
    浏览(32)
  • 解决Nginx错误:Upstream prematurely closed connection while reading response header from upstream

    【nginx error log】 /var/log/nginx/error.log: 级别:error 类型: [other] 次数: 1 错误信息(只取第一条): upstream prematurely closed connection while reading response header from upstream, client: 50.30.156.24 server: xx requests: \\\"GET x HTTP/1.1\\\" upstream: \\\"x 在使用Nginx作为反向代理服务器时,可能会遇到这样的错误:“ups

    2024年02月03日
    浏览(31)
  • tengine/nginx https请求 转发 http upstream

    当前的互联网应用基本都要支持https协议,而当浏览器头通过https协议将请求发到到负责负载的nginx后,会由当前nginx再以http协议向后端upstream进行请求,之所以这么做是因为https协议的安全性也带来的额外的性能消耗。而源端基本都是在一个内网里面的,对于通讯协议的安全性

    2024年01月23日
    浏览(32)
  • linux中如何使用nginx部署多个静态资源文件?

    一、切换到nginx的配置文件路径下:cd /usr/local/nginx/conf 二、编辑nginx的配置文件:vim nginx.conf 三、修改或添加location代码块,如下 location /project1{ alias /usr/local/nginx/dist#静态资源路径 index index.html index.htm; } location /project2{ alias /usr/local/nginx/dist#静态资源路径 index index.html index.htm

    2024年02月05日
    浏览(29)
  • vCenter Server出现no healthy upstream的解决方法

    一天,访问vCenter,浏览器报:no healthy upstream,其他什么也没有   该 网上找了一些故障原因,诸如:vCenter Server部分服务没有运行,或者运行出现错误;vCenter Server设置的DNS服务器出现错误或者vCenter Server本地hosts文件配置错误,等等,经过排查都不是该故障的根本原因,应为

    2024年02月13日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包