Nginx 正则表达式与rewrite
目录
一、正则表达式
二、rewrite
2.1 rewrite简述
2.2 rewrite 跳转
2.3 rewrite 执行顺序
2.4 rewrite 语法格式
三、location
3.1 location 类别
3.2 location常用匹配规则
3.3 location优先级
3.4 示例说明
3.5 匹配规则总结
3.6 三个匹配规则定义
四、实战案例
4.1 基于域名的跳转
4.2 基于客户端 IP 访问跳转
4.3 基于旧域名跳转到新域名后面加目录
4.4 基于参数匹配的跳转
4.5 基于目录下所有 php 结尾的文件跳转
4.6 基于一条最普通url请求的跳转
一、正则表达式
常用的正则表达式
^ | 匹配输入字符串的起始位置 |
$ | 匹配输入字符串的结束位置 |
* | 匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll” |
+ | 匹配前面的字符一次或多次。如“ol+”能匹配“ol”及“oll”、“olll”,但不能匹配“o” |
? | 匹配前面的字符零次或一次,例如“od(es)?”能匹配“do”或者“does”,”?”等效于”{0,1}” |
. | 匹配除“\n”之外的任何单个字符, 若要匹配包括“\n”在内的任意字符,请使用诸如“[.\n]”之类的模式 |
\ | 将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用。如“\n”匹配一个换行符,而“\$”则匹配“$” |
\d | 匹配纯数字 |
{n} | 重复 n 次 |
{n,} | 重复 n 次或更多次 |
{n,m} | 重复 n 到 m 次 |
[] | 定义匹配的字符范围 |
[c] | 匹配单个字符 c |
[a-z] | 匹配 a-z 小写字母的任意一个 |
[a-zA-Z0-9] | 匹配所有大小写字母或数字 |
() | 表达式的开始和结束位置 |
| | 或运算符 |
二、rewrite
注:
rewrite与location主要区别:
rewrite 是在同一域名内更改获取资源的路径
location 是对一类路径做控制访问或反向代理,还可以 proxy_pass 到其他机器
2.1 rewrite简述
- rewrite功能就是,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标记位实现URL重写以及重定向。
- 比如:更换域名后需要保持旧的域名能跳转到新的域名上、某网页发生改变需要跳转到新的页面、网站防盗链等等需求。
- rewrite只能放在server{},location{},if{}中,并且默认只能对域名后边的除去传递的参数外的字符串起作用,
- 例如:http://www.kgc.com/abc/bbs/index.php?a=1&b=2 只对/abc/bbs/index.php重写
2.2 rewrite 跳转
跳转的场景
- 调整用户浏览的URL,看起来更规范,呵护开发及产品人员的需求
- 为了让搜索引擎搜寻网站内容及用户体验更好,企业会将动态URL地址伪装成静态地址提供服务
- 网址换新域名后,让旧的访问跳转到新的域名上。例如,访问京东的360buy.com会跳转到jd.com。
- 服务端某些业务调整,比如根据特殊变量、目录、客户端的信息进行URL调整等
跳转的实现
- Nginx:通过ngx_http_rewrite_module 模块支持URL重写、支持if条件判断,但不支持else
- 跳转:从一个 location跳转到另一个location,循环最多可以执行10次,超过后nginx将返回500错误
- PCRE支持:perl兼容正则表达式的语法规则匹配
- 重写模块 set 指令:创建新的变量并设其值
2.3 rewrite 执行顺序
- 执行server块里面的rewrite指令
- 执行location匹配
- 执行选定的location中的rewrite指令
2.4 rewrite 语法格式
语法格式:rewrite <regex> <replacement> [flag];
regex :表示正则匹配规则
replacement :表示跳转后的内容
flag :表示 rewrite 支持的 flag 标记
flag标记说明 | |
last | 本条规则匹配完成后,继续向下匹配新的location URL规则,一般用在 server 和 if 中 |
break | 本条规则匹配完成即终止,不再匹配后面的任何规则,一般使用在 location 中 |
redirect | 返回302临时重定向,浏览器地址会显示跳转后的URL地址 |
permanent | 返回301永久重定向,浏览器地址栏会显示跳转后的URL地址 |
注:
- last – 基本上都用这个Flag
- break – 中止Rewirte,不在继续匹配
- redirect – 返回临时重定向的HTTP状态302
- permanent – 返回永久重定向的HTTP状态301
last和break最大的不同在于
- break 是终止当前location的rewrite检测,而且不再进行location匹配
- last是终止当前location的rewrite检测,但会继续重试location匹配并处理区块中的rewrite规则
可用作判断的全局变量
$args #这个变量等于请求行中的参数。
$content_length # 请求头中的Content-length字段。
$content_type # 请求头中的Content-Type字段。
$document_root # 当前请求在root指令中指定的值。
$host # 请求主机头字段,否则为服务器名称。
$http_user_agent # 客户端agent信息
$http_cookie # 客户端cookie信息
$limit_rate # 这个变量可以限制连接速率。
$request_body_file # 客户端请求主体信息的临时文件名。
$request_method # 客户端请求的动作,通常为GET或POST。
$remote_addr # 客户端的IP地址。
$remote_port # 客户端的端口。
$remote_user # 已经经过Auth Basic Module验证的用户名。
$request_filename # 当前请求的文件路径,由root或alias指令与URI请求生成。
$query_string # 与$args相同。
$scheme #HTTP 方法(如http,https)。
$server_protocol # 请求使用的协议,通常是HTTP/1.0或HTTP/1.1。
$server_addr # 服务器地址,在完成一次系统调用后可以确定这个值。
$server_name # 服务器名称。
$server_port # 请求到达服务器的端口号。
$request_uri # 包含请求参数的原始URI,不包含主机名,如:”/foo/bar.php?arg=baz”。
$uri # 不带请求参数的当前URI,$uri不包含主机名,如”/foo/bar.html”。
$document_uri # 与$uri相同。
例:http://localhost:88/test1/test2/test.php
$host:localhost
$server_port:88
$request_uri:http://localhost:88/test1/test2/test.php
$document_uri:/test1/test2/test.php
$document_root:D:\nginx/html
$request_filename:D:\nginx/html/test1/test2/test.php
三、location
3.1 location 类别
location 大致可以分为三类:
精准匹配 | location = / {...} |
一般匹配 | location / {...} |
正则匹配 | location ~ / {...} |
3.2 location常用匹配规则
= | 进行普通字符精确匹配,也就是完全匹配 location = yudh www.kgc.com/yudh |
^~ | 表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其它 location |
~ | 区分大小写的匹配。 location ~ \.jpg$ {} jpg |
~* | 不区分大小写的匹配。 location ~ \.jPg$ {} jpg |
!~ | 区分大小写的匹配取非 |
!~* | 不区分大小写的匹配取非 |
3.3 location优先级
①首先精确匹配 =
②其次前缀匹配 ^~
③其次是按文件中顺序的正则匹配 ~或~*
④然后匹配不带任何修饰的前缀匹配 abc
⑤最后是交给 / 通用匹配
3.4 示例说明
(1)location = / http://www.kgc.com/ 他不会匹配/data http://www.kgc.com/data
=为精确匹配 / ,主机名后面不能带任何字符串,比如访问 / 和 /data,则 / 匹配,/data 不匹配
再比如 location = /abc,则只匹配/abc ,/abc/或 /abcd不匹配。若 location /abc,则即匹配/abc 、/abcd/ 同时也匹配 /abc/。(2)location / {} http://www.kgc.com/data http://www.kgc.com/data/abc /a/usr/local/nginx/html/data/abc
因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求 比如访问 / 和 /data, 则 / 匹配, /data 也匹配,
但若后面是正则表达式会和最长字符串优先匹配(最长匹配)(3)location /documents/ {} http://www.kgc.com/documents/abc
匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索其它 location
只有其它 location后面的正则表达式没有匹配到时,才会采用这一条(4)location /documents/abc {} www.baidu.com/
匹配任何以 /documents/abc 开头的地址,匹配符合以后,还要继续往下搜索其它 location
只有其它 location后面的正则表达式没有匹配到时,才会采用这一条(5)location ^~ /images/ {}
匹配任何以 /images/ 开头的地址,匹配符合以后,停止往下搜索正则,采用这一条http://www.kgc.com/documents/abc/testlocation /documents/abc/test/ {}
location ^~ /documents/ {}
location ~* /documents/ {}
location ^~ /documents/abc {} (6)location ~* \.(gif|jpg|jpeg)$ {}
匹配所有以 gif、jpg或jpeg 结尾的请求
然而,所有请求 /images/ 下的图片会被 location ^~ /images/ 处理,因为 ^~ 的优先级更高,所以到达不了这一条正则(7)location /images/abc {}
最长字符匹配到 /images/abc,优先级最低,继续往下搜索其它 location,会发现 ^~ 和 ~ 存在location /documents/ {}
location /documents/abc/ {}
location /documents/abc/test/ {}(8)location ~ /images/abc {}
匹配以/images/abc 开头的,优先级次之,只有去掉 location ^~ /images/ 才会采用这一条(9)location /images/abc/1.html {} location /images/abc/test
匹配/images/abc/1.html 文件,如果和正则location ~ /images/abc/1.html 相比,正则优先级更高
3.5 匹配规则总结
首先看 优先级:精确>前缀>正则>一般>通用
优先级相同:正则看上下顺序,上面的优先;一般匹配看长度,最长匹配的优先
精确、前缀、正则、一般 都没有匹配到,最后再看通用匹配 一般匹配
3.6 三个匹配规则定义
实际网站使用中,至少有三个匹配规则定义
1、第一个必选规则
直接匹配网站根,通过域名访问网站首页比较频繁,使网。
可以是一个静态首页,也可以直接转发给后端应用服务器用这个会加速处理,比如说官
location = / {root html;index index.html index.htm;
}
2、第二个必选规则
处理静态文件请求,这是nginx作为http服务器的强项
有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用
location ^~ /static/ {root /webroot/static/;
}/static/location ~* \.(html|gif|jpg|jpeg|png|css|js|ico)$ {root /webroot/res/;
}
3、第三个必选规则
通用规则,比如用来转发带.php、.jsp后缀的动态请求到后端应用服务器
非静态文件请求就默认是动态请求
location / {proxy_pass http://tomcat_server;
}
四、实战案例
4.1 基于域名的跳转
公司旧域名www.ljm.com有业务需求变更,需要使用新域名www.lucien.com代替,但是旧域名不能废除,需要跳转到新域名上,而且后面的参数保持不变
vim /usr/local/nginx/conf/nginx.conf
server {listen 80;server_name www.ljm.com; #域名修改 charset utf-8;access_log /var/log/nginx/www.ljm.com.access.log; #日志修改location / {#添加域名重定向if ($host = 'www.ljm.com'){#$host为rewrite全局变量,代表请求主机头字段或主机名rewrite ^/(.*)$ http://www.lucien.com/$1 permanent;#$1为正则匹配的内容,即域名后边的字符串}root html;index index.html index.htm;}
}
浏览器输入模拟访问 http://www.lic.com/test/1.html
会跳转到www.kiki.com/test/1.html,查看元素可以看到返回301,实现了永久重定向跳转,而且域名后的参数也正常跳转
4.2 基于客户端 IP 访问跳转
公司业务新版本上线,要求所有 IP 访问都显示一个固定维护页面
只有公司 IP :192.168.184.80访问正常
vim /usr/local/nginx/conf/nginx.conf
server {listen 80;server_name www.ljm.com; #域名修改 charset utf-8;access_log /var/log/nginx/www.ljm.com-access.log main; #日志修改#设置是否合法的IP标记set $rewrite true; #设置变量$rewrite,变量值为boole值true#判断是否为合法IPif ($remote_addr = "192.168.184.60"){#当客户端IP为192.168.184.10时,将变量值设为false,不进行重写set $rewrite false;}#除了合法IP,其它都是非法IP,进行重写跳转维护页面if ($rewrite = true){ #当变量值为true时,进行重写rewrite (.+) /weihu.html; #重写在访问IP后边插入/weihu.html}location = /weihu.html {root /var/www/html; #网页返回/var/www/html/weihu.html的内容}location / {root html;index index.html index.htm;}
}
mkdir -p /var/www/html/
echo 'hello weihu!' > /var/www/html/weihu.html
systemctl restart nginx
浏览器访问
只有 IP 为 192.168.184.10 能正常访问,其它地址都是维护页面
4.3 基于旧域名跳转到新域名后面加目录
我们访问 http://www.ljm.com,现在需要将这个域名下面的访问都跳转到http://www.lucien.com/lucien
vim /usr/local/nginx/conf/nginx.conf
server {listen 80;server_name www.ljm.com; #域名修改 charset utf-8;access_log /var/log/nginx/ljm.com-access.log;#添加location /post {rewrite (.+) http://www.lucien.com/lucien$1 permanent; #这里的$1为位置变量,代表/post}location / {root html;index index.html index.htm;}
}
4.4 基于参数匹配的跳转
现在访问http://www.kgc.com/100-(100|200)-100.html 跳转到http://www.kgc.com页面
vim /usr/local/nginx/conf/nginx.conf
server {listen 80;server_name www.kgc.com; #域名修改 charset utf-8;access_log /var/log/nginx/www.kgc.com-access.log;if ($request_uri ~ ^/100-(100|200)-(\d+).html$) {rewrite (.+) http://www.kgc.com permanent;}location / {root html;index index.html index.htm;}
}
systemctl restart nginx
使用浏览器访问http://www.kgc.com/100-200-100.html 或 http://www.kgc.com/100-100-100.html 跳转到http://www.kgc.com页面
4.5 基于目录下所有 php 结尾的文件跳转
要求访问 http://www.kgc.com/upload/123.php 跳转到首页
vim /usr/local/nginx/conf/nginx.conf
server {listen 80;server_name www.kgc.com; #域名修改 charset utf-8;access_log /var/log/nginx/www.kgc.com-access.log;location ~* /upload/.*\.php$ {rewrite (.+) http://www.kgc.com permanent;}location / {root html;index index.html index.htm;}
}systemctl restart nginx
或
systemctl reload nginx浏览器访问 http://www.kgc.com/upload/123.php 跳转到http://www.kgc.com页面
4.6 基于一条最普通url请求的跳转
要求访问一个具体的页面如 http://www.kgc.com/abc/123.html 跳转到首页
vim /usr/local/nginx/conf/nginx.conf
server {listen 80;server_name www.kgc.com; #域名修改 charset utf-8;access_log /var/log/nginx/www.kgc.com-access.log;location ~* ^/abc/123.html {rewrite (.+) http://www.kgc.com permanent;}location / {root html;index index.html index.htm;}
}systemctl restart nginx
浏览器访问 http://www.kgc.com/abc/123.html 跳转到http://www.kgc.com页面
相关文章:

Nginx 正则表达式与rewrite
目录 一、正则表达式 二、rewrite 2.1 rewrite简述 2.2 rewrite 跳转 2.3 rewrite 执行顺序 2.4 rewrite 语法格式 三、location 3.1 location 类别 3.2 location常用匹配规则 3.3 location优先级 3.4 示例说明 3.5 匹配规则总结 3.6 三个匹配规则定义 四、实战…...

tekton什么情况下在Dockerfile中需要用copy
kaniko配置如下 如果docker中的workDir跟tekton中的workDir不一致需要copy。也可以通过mv,cp达到类似效果...

第九届世界渲染大赛在哪里提交作品呢?
自第九届世界渲染大赛开放投稿以来,已经过去了10天。在这段时间里,众多CG爱好者已经完成了他们的动画创作。然而,许多参赛者对于如何提交他们的作品仍然感到困惑。接下来,让我们一起了解具体的投稿流程和入口,确保每位…...

fastjson(autoType)反序列化漏洞
1. 温少和他的fastjson 阿里巴巴的 FastJSON,也被称为 Alibaba FastJSON 或阿里巴巴 JSON,是一个高性能的 Java JSON 处理库,用于在 Java 应用程序中解析和生成 JSON 数据。FastJSON 以其卓越的性能和功能丰富的特点而闻名,并在…...

Java入门基础16:集合框架1(Collection集合体系、List、Set)
集合体系结构 Collection是单列集合的祖宗,它规定的方法(功能)是全部单列集合都会继承的。 collection集合体系 Collection的常用方法 package com.itchinajie.d1_collection;import java.util.ArrayList; import java.util.HashSet;/* * 目…...
Qt如何调用接口
在Qt中,你可以使用QNetworkAccessManager类来调用API。以下是一个简单的示例: cpp #include <QCoreApplication> #include <QNetworkAccessManager> #include <QNetworkRequest> #include <QNetworkReply> int main(int arg…...

Android14之解决编译libaaudio.so报错问题(二百二十七)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列…...

【专题】2024年7月人工智能AI行业报告合集汇总PDF分享(附原数据表)
原文链接:https://tecdat.cn/?p37350 随着人工智能技术的飞速发展,AI已经成为当今时代的重要驱动力。本报告将聚焦于人工智能AI行业的最新动态,涵盖客户服务、体验营销、资产管理以及国产AI大模型应用等多个领域。通过深入研究和分析,我们…...

干货分享|如何使用Stable Diffusion打造会说话的数字人?
数字人已不是什么新鲜名词了。在许多领域,尤其是媒体和娱乐领域,经常可以看到卡通形象的人物或逼真的虚拟主持人。在Stable Diffusion中,我们可以上传一段录制好的音频文件,然后使用SadTalker插件,将音频和图片相结合&…...

OrangePi AIpro学习4 —— 昇腾AI模型推理 C++版
目录 一、ATC模型转换 1.1 模型 1.2 ATC工具 1.3 实操模型转换 1.4 使用ATC工具时的一些关键注意事项 1.5 ATC模型转换命令举例 二、运行昇腾AI模型应用样仓程序 2.1 程序目录 2.2 下载模型和模型转换 2.3 下载图片和编译程序 2.4 解决报错 2.5 运行程序 三、运行…...
vue js 多组件异步请求解决方案
接口之间异步问题可以采用Promiseasyncawait 链接: https://blog.csdn.net/qq_39816586/article/details/103517416 使用场景: 1.保障用户必须完成自动登录,才调用后续逻辑 2.保障必须完成初始启动,才调用后续逻辑 3.保障先执行on…...

【Android】不同系统版本获取设备MAC地址
【Android】不同系统版本获取设备MAC地址 尝试实现 尝试 在开发过程中,想要获取MAC地址,最开始想到的就是WifiManager,但结果始终返回02:00:00:00:00:00,由于用得是wifi ,考虑是不是因为用得网线的原因,但…...
残差网络--NLP上的应用
在自然语言处理(NLP)领域,残差网络(ResNet)同样有着广泛的应用。虽然最初的残差网络设计是为了处理图像任务,但其核心思想也被成功地迁移到了自然语言处理任务中,以解决深层神经网络中的退化问题…...
1章4节:数据可视化, R 语言的静态绘图和 Shiny 的交互可视化演示(更新2024/08/14)
在数据科学的世界中,“一图胜千言”的古老谚语依然适用。数据可视化不仅仅是将数据以图形化的方式展现,更是帮助我们发现数据背后隐藏模式、趋势和异常的强大工具。R语言作为数据科学的主要编程语言之一,以其强大的可视化能力而闻名,许多数据科学家和分析师因此选择了R作为…...
浅谈个人用户如何玩转HTTP代理
今天,准备和大家聊聊我是如何玩转HTTP代理的,希望能给大家带来一些启发和帮助。 犹记得刚开始接触HTTP代理时,我对它还是一无所知。那时我总被各种网络限制所困扰,无法随心所欲地访问我想看的网站。直到HTTP代理的出现,…...

动手研发实时口译系统
重磅推荐专栏: 《大模型AIGC》 《课程大纲》 《知识星球》 本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容(AIGC)技术。通过深入的技术解析和实践经…...

C#(asp.net)电商后台管理系统-计算机毕业设计源码70015
摘 要 随着互联网技术的不断发展,电商行业也越来越受到人们的关注。为了提高电商行业的管理效率和服务水平,本文提出了一种基于ASP.NET电商后台管理系统的设计与实现方案。 电商管理系统基于VisualStudio开发平台,采用C#编程语言和ASP.NET等技…...

Unity 中创建动画的教程
Unity 动画创建教程 在游戏开发中,生动的动画能够极大地提升玩家的体验。在这篇教程中,我们将一起探索如何在 Unity 中创建动画。 一、准备工作 首先,确保您已经安装了最新版本的 Unity 引擎。创建一个新的 Unity 项目或者打开您现有的项目…...

2024年最全渗透测试学习指南,小白也能轻松hold住!零基础到精通,看完这篇就够了!
可能会有很多人觉得渗透测试门槛很高,学习周期长,似乎只有天赋异禀者方能涉足。实则不然,渗透测试行业虽有其专业门槛,但绝非如外界渲染的那样高不可攀。归根结底,所需的基础不过是扎实的编程语言功底,同时…...

有道云docx转换markdown,导入hugo发布到github page,多平台发布适配
版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ 有道云导出docx 有道云笔记右上角更多按钮选择【导出为Word】,可以导出docx文档 docx转换markdown 尝试了几个docx转markdown的python库后&…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...
OCR MLLM Evaluation
为什么需要评测体系?——背景与矛盾 能干的事: 看清楚发票、身份证上的字(准确率>90%),速度飞快(眨眼间完成)。干不了的事: 碰到复杂表格(合并单元…...
[USACO23FEB] Bakery S
题目描述 Bessie 开了一家面包店! 在她的面包店里,Bessie 有一个烤箱,可以在 t C t_C tC 的时间内生产一块饼干或在 t M t_M tM 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC,tM≤109)。由于空间…...
Python学习(8) ----- Python的类与对象
Python 中的类(Class)与对象(Object)是面向对象编程(OOP)的核心。我们可以通过“类是模板,对象是实例”来理解它们的关系。 🧱 一句话理解: 类就像“图纸”,对…...
深度解析:etcd 在 Milvus 向量数据库中的关键作用
目录 🚀 深度解析:etcd 在 Milvus 向量数据库中的关键作用 💡 什么是 etcd? 🧠 Milvus 架构简介 📦 etcd 在 Milvus 中的核心作用 🔧 实际工作流程示意 ⚠️ 如果 etcd 出现问题会怎样&am…...