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种解法:
- 将重要的服务的upstream分离出来。(实测不会相互影响)
- 调整max_fails和fail_timeout参数,如
server 192.168.10.130 max_fails=99999 fail_timeout=5s;
那年,郭少在京城
nginx中多个server块共用upstream会相互影响吗的更多相关文章
- Nginx中的一些匹配顺序
Nginx中经常需要做各种配置,总结如下: 1.server_name配置 nginx中的server_name指令主要用于配置基于名称虚拟主机,同一个Nginx虚拟主机中,可以绑定多个server_ ...
- nginx中server块的匹配顺序
客户端发出一个http请求时,nginx收到后会取出header头中的host,与nginx.conf中每个server的server_name进行匹配,以此决定到底由哪一个server块来处理这个请 ...
- Nginx 虚拟主机中配置 server_name ⼀个server块中配置多个站点 ⼀个站点配置多个⼆级域名
⼀个server块中配置多个站点 server { listen 80; server_name ~^(www.)?(.+)$; index index.php index.html; root /h ...
- 在nginx中配置如何防止直接用ip访问服务器web server及server_name特性讲解
看了很多nginx的配置,好像都忽略了ip直接访问web的问题,不利于SEO优化,所以我们希望可以避免直接用IP访问网站,而是域名访问,具体怎么做呢,看下面. 官方文档中提供的方法: If you d ...
- Nginx中的upstream轮询机制介绍
Nginx中upstream有以下几种方式: 1.轮询(weight=1) 默认选项,当weight不指定时,各服务器weight相同, 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器d ...
- nginx中server的匹配顺序
在开始处理一个http请求时,nginx会取出header头中的host,与nginx.conf中每个server的server_name进行匹配,以此决定到底由哪一个server块来处理这个请求. ...
- nginx基本配置与参数说明以及Nginx中的upstream轮询机制介绍
转自:http://blog.csdn.net/happydream_c/article/details/54943802 一.nginx简介 Nginx (发音为[engine x])专为性能优化而 ...
- 利用Nginx中的Upstream模块配置服务器负载均衡
1. 前言 nginx有一个最大的功能就是可以实现服务器的负载均衡,本篇博文就利用nginx中的upstream模块来配置一个简单的负载均衡.关于nginx的安装和配置文件可以查阅博文:windows ...
- nginx的server块如何支持php
直接贴代码,备份用 server { listen ; server_name abc.com; index index.html index.htm index.php; root /var/www ...
- Nginx中server_name 参数详解
Nginx中的server_name指令主要用于配置基于名称的虚拟主机,server_name指令在接到请求后的匹配顺序分别为: 1.准确的server_name匹配,例如: server { lis ...
随机推荐
- WinDbg 设置在加载到某个 DLL 进入断点
本文记录如何在 WinDbg 里,设置在加载到某个 DLL 时,自动进入断点.通过此方式用来定位是哪个业务模块加载了某个 DLL 模块 在 WinDbg 里面,可以附加到现有进程,也可以启动某个进程. ...
- dotnet OpenXml SDK 形状填充渐变色的主题色
在 Office 文档的一些有趣的设计,颜色和画刷是可以继承的,这个继承包括了属性的继承.在形状填充里面使用的渐变色是可以一部分属性放在主题里面,主要找到主题里面的画刷,替换掉形状自己定义的内容,才是 ...
- 2.docker-compose安装prometheus
一.docker-compose安装 前期准备 # docker配置文件 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json < ...
- xtrabackup备份恢复
tar -xzvf percona-xtrabackup-2.1.9-744-Linux-x86_64.tar.gz cd percona-xtrabackup-2.1.9-Linux-x86_64/ ...
- ESP32 + IDF + LED
一.开发板 ESP32-S3-DevKitC-1 管脚布局 由于这个程序控制比较简单,就不赘述了,直接看程序. 二.程序 #include "freertos/FreeRTOS.h" ...
- .NET CORE 完美支持AOT 的 ORM SqlSugar 教程
1.AOT适合产场 Aot适合工具类型的项目使用,优点禁止反编 ,第一次启动快,业务型项目或者反射多的项目不适合用AOT AOT更新记录: 实实在在经过实践的AOT ORM 5.1.4.117 +支持 ...
- 【强化学习】Markov Decision processes【二】
目录 Markov Decision processes Markov Process Markov reward process Markov Decision processes 马尔可夫决策过程 ...
- three.js教程4-Group层级模型
1.组对象Group.层级模型-形成树状结构 //创建两个网格模型mesh1.mesh2 const geometry = new THREE.BoxGeometry(20, 20, 20); con ...
- 动态规划-DP 完整版
动态规划 学完了五大基础dp 做个简单总结 dp特征 动态规划问题 首要是找到做题的目的 是求最大/小值 还是其他: 其二 要确定问题的状态转移方程 这是关键: 第三 为dp数组找到边界. 最后 检查 ...
- Avalonia中的线性渐变画刷LinearGradientBrush
在WPF中使用Shape实现复杂线条动画后,尝试在Avalonia中也实现同样效果.尽管官方提供了从WPF到Avalonia的快速入门文档,但由于第一次使用Avalonia,体验过程中并不是很顺利,主 ...