nginx知识点详解:反向代理+负载均衡+动静分离+高可用集群
一、nginx基本概念
1. nginx是什么,做什么事情?
Nginx是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强。Nginx转为性能优化而开发,能经受高负载考验。支持热部署,启动容易,运行时间长。
2. 反向代理
正向代理:在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问。
反向代理:客户端对代理无感知,客户端不需要任何配置即可访问服务器。客户端只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器,获取数据后返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。

3. 负载均衡
增加服务器的数量,将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将附在分发到不同的服务器就是负载均衡。

负载均衡是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快,给用户良好的体验。
策略:
1.轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉了,能自动剔除。
2.weight(权重):权重默认为1,权重越高被分配的客户端越多。

3.ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

4. fair方式:按后端服务器的响应时间来分配请求,响应时间短的优先分配。
4. 动静分离
把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力,加快网站的解析速度。

Nginx动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离,严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat处理动态页面。

动静分离从目前实现角度来讲大致分为2种:一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案,另外一种方法是动态跟静态文件混在一起发布,通过nginx分开。
通过location指定不同的后缀名实现不同的请求转发。通过expires参数设置,可以使浏览器缓存过期时间,减少与服务器之间的请求和流量。具体Expires定义:是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确定是否过期即可,所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件不建议使用Expires来缓存),在这里设置3d,表示在这3天之内访问这个URL,发送一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓去,返回状态码304,如果有修改,则直接从服务器重新下载,返回状态码200。
二、nginx安装、常用命令和配置文件
1. 在linux系统中安装nginx
首先打开终端:

输入ifconfig看ens33中inet中的值,如果没有显示ip地址就用nmtui指令对ens33进行连接后再次尝试:

第1步:使用远程连接工具连接linux系统。
打开Xshell(Xshell好处:1.避免切进切出影响效率 2.复制粘贴不方便)填写主机名ip其余默认:

用户名是user,输入虚拟机上Linux密码即可登录:

第2步:下载nginx相关素材(依赖)
1. 下载pcre、openssl和zlib:
下面一键安装:
sudo yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

通过下面的连接下载tar.gz文件,我下载的是1.24.0
Index of /download/ (nginx.org)
解压压缩文件:tar -xvf nginx-1.24.0.tar.gz
进入nginx文件:cd nginx-1.24.0/ 然后输入:./configure
编译安装:sudo make install
进入sbin:cd /usr/local/nginx/sbin 运行nginx:sudo ./nginx
下面这样是成功:

:q!是退出
访问端口80,但默认该端口是不开放的,因此要按照如下方法打开该端口:

查看防火墙:sudo firewall-cmd --list-all
开放80端口:sudo firewall-cmd --add-port=80/tcp --permanent
重启防火墙:sudo firewall-cmd --reload
开放端口后即可访问:

2. nginx常用命令
使用nginx操作命令前提条件:必须进入到nginx的目录里:
在[user@localhost ~]$或者[user@localhost /]$目录下:cd /usr/local/nginx/sbin
查看nginx的版本号:./nginx -v
启动nginx:./nginx
关闭nginx:sudo ./nginx -s stop
重新加载nginx(可以重新加载配置文件,使其生效):sudo ./nginx -s reload
3. nginx配置文件
打开进入文件vi 文件名
1. nginx配置文件所在位置
/usr/local/nginx/conf/nginx.conf
2. nginx配置文件的组成
由3部分组成
第1部分:全局块
主要设置一些影响nginx服务器整体运行的配置指令,主要包括配置运行Nginx服务器的用户(组),允许生成的worker process数,进程PID存放路径,日志存放路径和类型以及配置文件的引入。
比如:worker_processes 1; 当worker_processes的值越大,可以支持的并发处理数量也就越多。
第2部分:events块
events块涉及的指令主要影响Nginx服务器与用户的网络连接,选取哪种事件驱动模型来处理连接,请求,每个word process可以同时支持的最大连接数等。
worker_connection 1024;用户连接数,表示支持最大的连接数是多少。
第3部分:http块
3.1 http块
Nginx服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。需要注意的是:http块也可以包括http全局块、server块。
3.2 全局块
http全局块配置的指令包括文件引入、MIME-TYPE定义、日志自定义、连接超时时间、但连接请求上限等。
3.3 server块
这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。
小块1:全局server块
最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或IP配置
小块2:location块
一个server块可以配置多个location块。
这块的主要作用是基于Nginx服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是IP别名)之外的字符串(例如 前面的/uri-string)进行匹配,对特定的请求进行处理。地址定向,数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。
listen 80; 表示nginx目前监听的端口是80端口。
server_name localhost表示主机名称。
location / {} 本地或者路径的意思,如果请求中带有一个斜杠就进行跳转。
三、nginx实现反向代理
3.1 反向代理准备工作
1.1 实现效果:打开浏览器,在浏览器地址栏输入地址www.123.com,跳转到linux系统的tomcat主页面中。
1.2 准备工作:
第1步:在linux系统安装tomcat,将tomcat安装文件放到linux系统中,解压sudo tar -xvf apache-tomcat-8.5.93.tar.gz,进入tomcat的bin目录中,./startup.sh启动tomcat服务器,使用默认端口8080。
第2步:对外开放访问的端口:
开放8080端口:firewall-cmd --add-port=8080/tcp --permanent
重启端口:firewall-cmd --reload
查看已开放的端口:firewall-cmd --list-all
第3步:访问,注意一定要用8080端口访问


3.2 反向代理实例一
第1步:在windows系统的host文件进行域名和ip对应关系的配置
c — Windows — System32 — drivers — etc — HOSTS
添加下面内容在文件中:
192.168.182.130 www.123.com
完成后域名www.123.com即对应192.168.182.130。
在打开tomcat的前提下输入:www.123.com:8080可访问tomcat服务器:

第2步:在nginx进行请求转发的配置(反向代理配置)
usr — local— nginx— conf— nginx.conf 进入到配置文件,对下面内容进行修改:

修改完后保存输入:wq!
前面已将192.168.182.130:80与域名www.163.com进行关联,当用户访问www.163.com会跳转到http://127.0.0.1:8080。
因为之前tomcat的页面是在192.168.182.130:8080所以我改造了一下,替换为proxy_pass http://192.168.182.130:8080;记得要加分号哦!

3.3 反向代理实例二
实现目标:
使用nginx反向代理,根据访问的路径跳转到不同端口的服务中。
nginx监听端口为9001
访问 http://192.168.182.130:9001/edu/ 直接跳转到192.168.182.130:8080
访问 http://192.168.182.130:9001/web/ 直接跳转到192.168.182.130:8081
准备工作:
第1步:创建测试服务器
准备2个tomcat服务器,一个8080端口,一个8081端口。
首先要进入到usr/src目录。sudo mkdir tomcat8080,sudo mkdir tomcat8081,创建2个文件夹。
分别进入2个文件夹,放入压缩包(这里可能出现导入失败,是权限问题,sudo rz),然后解压文件sudo tar -xvf apache..按Tab自动补全,
找到tomcat目前正在执行的进程 ps -ef | grep tomcat,停用进程 kill -9 进程号,
分别进入两个文件夹的apache文件,然后进入bin文件夹,然后./startup.sh启动。
进入8081中apache的文件夹的conf文件夹中,输入vi server.xml进入配置文件,修改未在注释中的端口,防止端口冲突。输入:wq!进行保存,重新查看是否更改。
![]()

![]()
第2步:基础测试
首先要开放对外访问的端口号,9001,8080,8081,然后查看是否端口开放完毕。
查看开放的端口:sudo firewall-cmd --list-all。开放80端口:sudo firewall-cmd --add-port=80/tcp --permanent。重启防火墙:sudo firewall-cmd --reload。
然后分别进行测试,看是否能访问tomcat,出现下面界面代表成功【注意:要检查xml文件中是否有其它字符,例如鼠标滚轮滚动会造成添加其它字符,这些字符会导致服务器无法正常启动】!


创建测试页面:a.html,在其中写入代码:<h1>8080!!</h1>。创建测试目录:在tomcat8080的webapps下创建文件夹edu,在tomcat8081的webapps下创建文件夹web。将带有8080字样的a.html文件放入edu文件夹下;将带有8081字样的a.html文件放入web文件夹下。可以通过如下方式访问,也可以将ip更改为域名www.123.com进行访问:

第3步:反向代理
注意按下面规则进行配置:

首先要找到nginx配置文件,usr — local — nginx — conf 然后vi nginx.conf进入配置,开始进行反向代理配置:

usr — local — nginx — sbin 输入 sudo ./nginx -s stop关闭端口,sudo ./nginx开启端口。


~ /web/ 表示必须是:域名/web/ 才可以识别
四、nginx实现负载均衡
实现效果:浏览器地栏输入地址http://192.168.182.132/edu/a.html,负载均衡效果,平均8080和8081端口中。
准备工作:准备2台tomcat服务器,一台8080,一台8081。在两台tomcat里面的webapps目录中,创建名称为edu的文件夹,在edu文件夹中创建页面a.html,用于测试。
在8081中的webapps目录下创建edu文件夹(mkdir edu),然后放入a.html文件,文件里写8081,测试能否通过http://192.168.182.132:8081/edu/a.html来显示文字,若无则记得打开服务器。
在usr — local — nginx — conf目录中vi nginx.conf进行配置:

重启服务器,进入conf — nginx 先关闭服务器./nginx -s stop,再开启服务器./nginx。
输入http://192.168.182.132/edu/a.html进行测试,效果是8081和8080交替出现,请求会被平均分担到不同服务器。

五、实现动静分离
在根目录创建一个文件夹data,进入data文件夹,创建文件夹www和image,把a.html文件放入www文件夹,在image里放入一个图片01.jpg。
进入 usr— local — nginx — conf 然后vi nginx.conf

进入usr — local — nginx— sbin 先输入./nginx -s stop,然后 ./nginx重启服务器。
测试1:浏览器种输入地址http://192.168.182.132/image/会出现文件夹下的文件列表,autoindex.on是列出文件夹下的内容:

测试2:在浏览器地址栏输入地址http://192.168.182.132/www/a.html

测试3:http://192.168.182.132/image/01.jpg
六、nginx配置高可用集群
现在存在的问题是:当nginx宕机后外部浏览器无法访问客户端

高可用:当nginx宕机后系统仍旧可以正常访问。
可以配置多个nginx,一台主服务器MASTER,一台备份服务器BACKUP.。当主服务器宕机可以切换到备份服务器。需要设置一个虚拟ip进行访问。
准备:需要两台nginx服务器,需要keepalived,需要虚拟ip。
1. 需要2台服务器,比如:192.168.182.132, 192.168.182.133。然后在另外一台服务器上也安装nginx。
2. 在2台服务器安装keepalived。可以使用yum命令进行安装。在usr目录下输入:yum install keepalived -y。在usr目录下输入rpm -q -a keepalived可以看到软件是否被下载。
3. 在usr — etc — keepalived目录下有keepalived.conf文件,可以拖到本地进行编辑,要讲内容替换为下面新的内容:输入vi keepalived.conf即可进入文件。配置文件如下:


global_defs全局定义。router_id写我们的服务器的名字,通过router_id可以访问我们服务器,进入usr — local — nginx — sbin — etc输入vi hosts:

vrrp_script chk_http_port是检测脚本和权重参数,script后写脚本的路径,如果脚本成立执行下面的操作。weight -20表示减少20服务器权重。
vrrp_instance VI_1是虚拟Ip的配置,state是状态,主服务器MASTER,备份服务器是BACKUP,interface填写网卡,priority是优先级,advert_int表示间隔多久时间发送一个心跳,authentication写的是权限校验的方式,auth_type PASS是密码方式,auth_pass 1111是密码,virtual_address是虚拟地址,客户端请求访问的地址。
下面是脚本文件,第4行填写的是nginx启动的路径,将脚本文件放在usr — local — src下:

配置从服务器,要更改interface,state,priority等信息。脚本信息不变:

七、nginx原理
1. master worker,只有1个master可以有多个worker,

2. worker采用争抢的机制进行工作。

3. 一个master和多个woker的好处:1、可以使用nginx -s reload热部署,利用nginx进行热部署操作。2、每个worker是独立的进程,如果其中有一个woker出现问题,其它woker会继续进行争抢,实现请求过程,不会造成服务中断。
4. worker数和服务器的cpu数是相等的最为适宜。
5. 发送请求的时候,每个worker占用2个或4个请求。
八、学习复盘
5.1 学习心得
5.2 面试真题
5.3 常见错误
压缩文件上传失败:sudo rz 获取权限
进入文件权限不够:su root 先进入到最高权限所有者
相关文章:
nginx知识点详解:反向代理+负载均衡+动静分离+高可用集群
一、nginx基本概念 1. nginx是什么,做什么事情? Nginx是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强。Nginx转为性能优化而开发,能经受高负载考验。支持热部署,启动容易,运…...
powerDesigner 的基本使用
打开powerDesigner 新建 PDM(物理数据模型) 添加表字段 双击表,设置ID自增 选择导出数据库表SQL 导出成功 使用三方工具连接数据库,然后运行对应SQL文件即可 导入SQL文件数据到powerDesigner...
Java下打印一个等腰三角型
想达到这个结果,通常的做法是通过拼结两个三角型达到,但是实际上还有最右边的第三个三角型没有处理,这个拼结的方法总让人看起来有一点不完美的感觉,于是我自创了一个思路,一气合成,代码如下(本…...
HR的职业规划
CHRO可以说是HR职业发展的天花板了。CHRO对一个企业来说至关重要,是CEO的左膀右臂。那从CEO的角度来看CHRO,应该具备什么样的素质和能力,又能为公司带来什么样的价值呢? 在公司的不同发展阶段,HR部门有着不同的战略和…...
avi怎么转换成视频?
avi怎么转换成视频?在我们日常使用的视频格式中,AVI是一种常见且经常被使用的音频视频交叉格式之一。它的优点之一是占用的存储空间相对较小,但也明显存在着画质损失的缺点。虽然AVI格式的视频在某种程度上也很常见,但与最常见的M…...
爬虫数据存储:技术、策略与实践(一)
文章目录 🍋引言🍋xlrd库和xlwt库🍋创建Excel文件🍋通过Python代码向Excel写入数据🍋案例实战 🍋引言 本节主要介绍一下在使用网络爬虫技术的时候,如何将数据存储到Excel中去 🍋xl…...
【音视频】ffplay解析-音视频同步
音视频同步 主要解析:以音频为基准,让视频合成音频 思路 视频慢了则丢掉部分视频帧(视觉->画⾯跳帧) 视频快了则继续渲染上⼀帧 具体实现 一个国际标准:音频帧-视频帧时间戳的差值在-100ms~25ms内流畅 1.差值音频…...
虚拟列表 - Vue3实现一个可动态改变高度的虚拟滚动列表
虚拟列表 - Vue3实现一个可动态改变高度的虚拟滚动列表 前言 在开发中经常遇到大量的渲染列表数据问题,往往我们就只是简单地遍历渲染,没有过多地去关注是否会存在性能问题,这导致如果数据量较大的时候,比如上万条数据ÿ…...
PyTorch实战:实现Cifar10彩色图片分类
目录 前言 一、Cifar10数据集 class torch.utils.data.Dataset torch.utils.data.DataLoader 二、定义神经网络 普通神经网络: 定义损失函数和优化器 训练网络-Net CPU训练 模型准确率 编辑 GPU训练 训练网络-LeNet 模型准确率 点关注,防走丢&#x…...
Vue模板语法(下)
一.事件处理器 什么是事件处理器 建立一个HTML编写事件处理器 测试结果 二.表单的综合案例 什么是表单综合案例 建立一个HTML来编写表单案例 测试结果 三.局部组件 什么是组件通信 自定义组件 测试结果 组件通信-父传子 测试结果 组件通信-子传父 测试结果 一.事件…...
uniapp掉完接口后刷新当前页面方法
uniapp掉完接口后刷新当前页面方法 掉完接口,里面加下面这个方法uni.redirectTo({}) setTimeout(() > {uni.redirectTo({// 当前页面路由url: /pages/property/mutualrotation/mutualrotation);}, 500)实例 mutualRotationSubmit() {let self this;uni.showMod…...
linux安装redis超级详细教程
redis源码安装 安装gcc redis是C语言编写的,所以我们需要先在Linux上安装和升级,C语言的编译环境。 #安装gcc yum install -y gcc-c autoconf automake#centos7 默认的 gcc 默认是4.8.5,版本小于 5.3 无法编译,需要先安装gcc新版才能编译 gcc -v#升级…...
2023-09-20 事业-代号z-个人品牌-数据库内核专家-分析
摘要: 在个人品牌层面, 必然脱离不开技术本身, 而身为数据库内核专家, 让别人尽快感知到我的专家身份至关重要. 本文从过去的经历中分析和思考, 如何尽快以技术专家的身份被感知. 过去所见过的高管的技术特点: 不在一线处理具体的事情技术理论深厚, 广度非常厉害, 知道很多相…...
UVA-1343 旋转游戏 题解答案代码 算法竞赛入门经典第二版
GitHub - jzplp/aoapc-UVA-Answer: 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版 题目其实不难,但是耗费了我较多时间。 这种题关键就是在于找到约束条件,我在DFS的基础上,试了很多种策略: 1. 对3种数字,每种数字…...
【运维篇】二、配置文件与多环境控制
文章目录 1、临时属性2、IDEA中的临时属性3、配置文件4级分类4、关于四级分类的思考5、自定义配置文件6、多环境开发(yaml版)7、配置文件按环境分类8、include与group再细粒度9、一点思考10、多环境开发兼容问题 1、临时属性 jar包或者镜像已经打完了&a…...
【WFA】 VHT-5.2.27 Pre-requisite throughput lower than expected
先看仪表log,可以看到log中只有0.00346666666667Mbps,说明了速率很低 ~~~~~ Storing throughput ~~~~~ Mon, 11 Sep 2023 13:13:06 INFO strmTimeStampList2 count 1 Mon, 11 Sep 2023 13:13:06 INFO Storing $X1 = 0.00346666666667 [Mbps] Mon, 11 Sep 2023 13:13:…...
Pytorch史上最全torch全版本离线文件下载地址大全(9月最新)
以下为pytorch官网的全版本torch文件离线下载地址 torch全版本whl文件离线下载大全https://download.pytorch.org/whl/torch/其中的文件版本信息如下所示(部分版本信息,根据需要仔细寻找进行下载):...
CentOS服务器利用docker搭建中间件命令集合
一、挂载服务器磁盘 #挂盘语句 fdisk /dev/vdb 在分别输入n、p、1、2048、1048575999、w mkfs.ext4 /dev/vdb mkdir /data echo /dev/vdb /data ext4 defaults 0 0 >> /etc/fstab mount -a df -hfirewall-cmd --zonepublic --add-port8002/tcp --permanent firewall-c…...
Flask狼书笔记 | 09_图片社交网站 - 长文
文章目录 9 图片社交网站9.1 项目组织架构9.2 编写程序骨架9.3 高级用户认证9.4 基于用户角色的权限管理9.5 使用Flask-Dropzone优化文件上传9.6 使用Flask-Avatars处理用户头像9.7 图片展示与管理9.8 收藏图片9.9 用户关注9.10 消息提醒9.11用户资料与账户设置9.12 首页与探索…...
【链表】K 个一组翻转链表-力扣 25 题
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
