网站首页 > 技术教程 正文
一、问题?
Nginx 是如何剔除不可用的上游服务的呢?
Nginx 作为目前流行的反向代理服务,原生提供了一套失败重试机制,来保证服务的可用性。
二、失败的定义
Nginx 通过 proxy_next_upstream 参数来判断,分为 error、timeout 两种。
1. Error 的场景:常见的是上游服务器的无法提供正常服务。
- 服务重启;
- 停止;
- 异常崩溃。
2.Timeout的场景:
- 连接超时
- 读取超时
- 写入超时
三、判断逻辑
通过配置上游服务器的 max_fails 和fail_timeout ,来制定每个上游服务器,当 fail_timeout 时间内失败了 max_fails 次请求,则认为该上游服务器不可用,然后将其摘掉。 fail_timeout 时间后会再次将该服务加入到存活上游服务器列表进行重试。
上游服务配置
upstream backend {
server 192.168.0.11 fail_timeout=20s max_fails=2;
server 192.168.0.12 fail_timeout=20s max_fails=2;
server 192.168.0.13 ;
}
代理配置
进行 proxy_next_upstream 相关配置,当遇到配置的错误时,会重试下一台上游服务器。
location /test {
proxy_connect_timeout 5s;
proxy_send_timeout 5s;
proxy_read_timeout 5s;
proxy_next_upstream error timeout;
proxy_next_upstream timeout 10s;
proxy_next_upstream_tries 2;
proxy_pass http://backend;
}
四、参数说明
1.连接失败参数
proxy_connect_timeout (连接) 连接的时间,默认60s 不能超过75秒。
proxy_read_timeout (读) 读取响应的时间,默认60s
proxy_send_timeout (写) 发送请求时间,默认60s
2.失败重试机制参数说明:
proxy_next_upstream_tries 重试次数 默认0 ,表示不限制。
proxy_next_upstream timeout 重试最大超时时间, 默认0, 表示不限制。
proxy_next_upstream error timeout ...;
proxy_next_upstream 详细说明
error # 与服务器建立连接发生错误;
timeout # 在与服务器建立连接超时;
invalid_header # 服务器返回空的或无效的响应;
http_500 # 服务器返回代码为500的响应;
http_502 # 服务器返回代码为502的响应;
http_503 # 服务器返回代码为503的响应;
http_504 # 服务器返回代码504的响应;
http_403 # 服务器返回代码为403的响应;
http_404 # 服务器返回代码为404的响应;
http_429 # 服务器返回代码为429的响应;
off # 禁用将请求传递给下一个服务器。
今天的分享就到这里了,大家有没有好的方法呢 ,欢迎来留言区评论 我们一起交流学习 ,如果喜欢我的文章 欢迎点赞和转发。
@程序员白老哥 专注分享 《高并发架构设计》 #知识创作者#
猜你喜欢
- 2024-10-12 反向代理神器:Nginx Proxy Manager,支持https证书自动申请和续签
- 2024-10-12 【第1期】Nginx: nginx之反向代理 proxy_pass
- 2024-10-12 好物推荐 - NginxProxyManager(好物推荐排行榜前100名)
- 2024-10-12 Docker部署反向代理神器:Nginx Proxy Manager
- 2024-10-12 NGINX 实战操作(yarn-proxy)(nginx使用教程)
- 2024-09-22 云原生网关Traefik和Nginx Proxy Manager初体验
- 2024-09-22 技术积淀----NGINX缓存(nginx内存缓存)
- 2024-09-22 nginx动态proxy_pass(Nginx动态二级域名)
- 2024-09-22 你真的了解Nginx的proxy_pass指令吗?
- 2024-09-22 详解Nginx proxy_pass 使用(nginx proxy_pass uri)
你 发表评论:
欢迎- 最近发表
-
- Win10 TH2正式版官方ESD映像转换ISO镜像方法详解
- 使用iso镜像升级到Windows 10的步骤
- macOS Ventura 13.2 (22D49) Boot ISO 原版可引导镜像
- 安利一个用ISO镜像文件制作引导U盘的的小工具RUFUS
- CentOS 7使用ISO镜像配置本地yum源
- 用于x86平台的安卓9.0 ISO镜像发布下载:通吃I/A/N、完全免费
- AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术
- Rufus写入工具简洁介绍与教程(写入模式)
- 新硬件也能安装使用了,Edge版Linux Mint 21.3镜像发布
- 开源工程师:Ubuntu应该抛弃32位ISO镜像
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)