当前位置: 首页 > news >正文

nginx配置详解(容器、负载)—官方原版

一、概述

本指南对nginx进行了基本介绍,并描述了一些 可以用它完成的简单任务。 据推测,nginx已经安装在阅读器的机器上。 本指南描述了如何启动和停止nginx,并重新加载其 配置,解释结构 的配置文件,并描述了如何设置 nginx 要提供静态内容,如何将nginx配置为代理 服务器,以及如何将其与 FastCGI 应用程序连接。

nginx有一个主进程和几个工作进程。 主进程的主要目的是读取和评估配置, 并维护工作进程。 工作进程对请求进行实际处理。 nginx采用基于事件的模型和依赖于操作系统的机制来有效地 在工作进程之间分发请求

nginx及其模块的工作方式在配置文件中确定。默认情况下,配置文件名为nginx.conf,位于/usr/local/nginx/conf、/etc/nginx或/usr/local/etc/nginx。

二、启动、停止和重新加载配置

要启动nginx,请运行可执行文件。一旦nginx启动,就可以通过使用-s参数调用可执行文件来控制它。使用以下语法:

nginx -s signal

其中信号可能是以下之一:

  • stop— 快速关机

  • quit— 优雅关机

  • reload— 重新加载配置文件

  • reopen— 重新打开日志文件

例如,通过等待工作进程来停止nginx进程 要完成当前请求的服务,可以执行以下命令:

nginx -s quit

在配置文件中所做的更改 在重新加载配置的命令之前不会应用。 发送到nginx或重新启动。 要重新加载配置,请执行:

nginx -s reload

一旦主进程收到重新加载配置的信号,它将检查新配置文件的语法有效性,并尝试应用其中提供的配置。如果成功,主进程将启动新的工作进程,并向旧的工作进程发送消息,请求它们关闭。否则,主进程回滚更改并继续使用旧配置。旧工作进程收到关闭命令,停止接受新连接,并继续服务当前请求,直到所有此类请求都得到服务。之后,旧工作进程退出。

在Unix工具(如kill实用程序)的帮助下,也可以向nginx进程发送信号。在这种情况下,信号将直接发送给具有给定进程ID的进程。默认情况下,nginx主进程的进程ID将写入目录/usr/local/nginx/logs或/var/run中的nginx.pid。例如,如果主进程ID为1628,要发送导致nginx正常关闭的QUIT信号,请执行:

kill -s QUIT 1628

为了获取所有正在运行的nginx进程的列表,可以使用ps实用程序,例如,如下所示:

ps -ax | grep nginx

三、配置文件的结构

nginx由由配置文件中指定的指令控制的模块组成。指令分为简单指令和块指令。简单指令由名称和参数组成,用空格分隔,并以分号(;)结尾。块指令具有与简单指令相同的结构,但它以一组由大括号({和})包围的附加指令结尾,而不是分号。如果块指令可以在大括号内包含其他指令,则称为上下文(例如:事件、http、服务器和位置)。

配置文件中放置在任何上下文之外的指令都被认为是在主上下文中。events 和http指令位于main context中、server 在 http中, location在 server中。

#符号后的其余行被视为注释。

1、提供静态内容

一个重要的web服务器任务是提供文件(如图像或静态HTML页面)。您将实现一个示例,根据请求,文件将从不同的本地目录提供:/data/www(可能包含HTML文件)和/data/images(包含图像)。这将需要编辑配置文件,并在具有两个位置块的http块内设置服务器块。

首先,创建/data/www目录,并将包含任何文本内容的index.html文件放入其中,然后创建/data/images目录,并在其中放置一些图像。

接下来,打开配置文件。默认配置文件已经包含了服务器块的几个示例,其中大部分已注释掉。现在,注释掉所有这些块并开始新的服务器块:

http {server {}
}

通常,配置文件可以包括多个服务器块,这些服务器块通过它们侦听的端口和服务器名称进行区分。一旦nginx决定了哪个服务器处理请求,它就会根据服务器块中定义的位置指令的参数测试请求头中指定的URI。

将location模块添加到server模块:

location / {root /data/www;
}

此位置块指定与请求的URI相比的“/”前缀。对于匹配的请求,URI将添加到根指令中指定的路径,即/data/www,以形成本地文件系统上所请求文件的路径。如果有几个匹配的位置块,nginx选择前缀最长的位置块。上面的位置块提供长度为1的最短前缀,因此只有当所有其他位置块都无法提供匹配时,才会使用此块。

接下来,添加第二个location块:

location /images/ {root /data;
}

它将匹配以/images/开头的请求(location/也匹配此类请求,但前缀更短)。

服务器块的最终配置应如下所示:

server {location / {root /data/www;}location /images/ {root /data;}
}

这已经是一个服务器的工作配置,该服务器在标准端口80上侦听http://localhost/.响应URI以/images/开头的请求,服务器将从/data/images目录发送文件。例如,响应http://localhost/images/example.png请求nginx将发送/data/images/example.png文件。如果这样的文件不存在,nginx将发送一个响应,指示404错误。URI不以/images/开头的请求将映射到/data/www目录。例如,响应http://localhost/some/example.html请求nginx将发送/data/www/some/example.html文件。

要应用新配置,如果nginx尚未启动,请启动它,或者通过执行以下操作向nginx的主进程发送reload信号:

nginx -s reload

如果某些东西不能按预期工作,您可以尝试在/usr/local/nginx/log或/var/log/nginx目录下的access.log和error.log文件中查找原因。

2、设置简单的代理服务器

nginx的常见用途之一是将其设置为代理服务器,这 表示接收请求并将其传递给代理服务器的服务器, 从它们检索响应,并将其发送到客户端。

我们将配置一个基本的代理服务器,它服务于 包含本地目录中文件的图像,并将所有其他请求发送到 代理服务器。 在此示例中,两个服务器都将在单个 nginx 实例上定义。

首先,通过向nginx的配置文件中添加一个服务器块来定义代理服务器,其中包含以下内容:

server {listen 8080;root /data/up1;location / {}
}

这将是一个简单的服务器,它在端口8080上侦听(以前,由于使用了标准端口80,所以未指定侦听指令),并将所有请求映射到本地文件系统上的/data/up1目录。创建此目录并将index.html文件放入其中。请注意,root指令位于服务器上下文中。当选择用于服务请求的位置块不包括其自己的根指令时,使用这样的根指令。

接下来,使用上一节中的服务器配置,并将其修改为代理服务器配置。在第一个位置块中,将proxy_pass指令与参数中指定的代理服务器的协议、名称和端口放在一起(在我们的例子中,它是http://localhost:8080):

server {location / {proxy_pass http://localhost:8080;}location /images/ {root /data;}
}

我们将修改第二个位置块,该块当前将带有/images/前缀的请求映射到/data/images目录下的文件,以使其与具有典型文件扩展名的图像请求相匹配。修改后的位置块如下所示:

location ~ \.(gif|jpg|png)$ {root /data/images;
}

该参数是一个正则表达式,匹配所有以.gif、.jpg或.png结尾的URI。正则表达式应以~开头。相应的请求将映射到/data/images目录。

当nginx选择一个位置块来服务请求时,它首先检查指定前缀的位置指令,记住前缀最长的位置,然后检查正则表达式。如果与正则表达式匹配,nginx会选择这个位置,否则,它会选择前面记住的位置。

代理服务器的最终配置如下所示:

server {location / {proxy_pass http://localhost:8080/;}location ~ \.(gif|jpg|png)$ {root /data/images;}
}

此服务器将过滤以.gif、.jpg或.png结尾的请求,并将它们映射到/data/images目录(通过向根指令的参数添加URI),并将所有其他请求传递到上面配置的代理服务器。

要应用新的配置,请发送重载信号到nginx,如前几节所述。

还有许多指令可用于进一步配置代理连接。

3、设置快速CGI代理

nginx可用于将请求路由到FastCGI服务器,FastCGI服务器运行使用各种框架和编程语言(如PHP)构建的应用程序。

与FastCGI服务器一起使用的最基本的nginx配置包括使用FastCGI_pass指令而不是proxy_pass指令,以及FastCGI_param指令来设置传递给FastCGI服务器的参数。假设FastCGI服务器可以在localhost:9000上访问。以上一节中的代理配置为基础,将proxy_pass指令替换为fastcgi_pass指令,并将参数更改为localhost:9000。在PHP中,SCRIPT_FILENAME参数用于确定脚本名称,QUERY_STRING参数用于传递请求参数。结果配置为:

server {location / {fastcgi_pass  localhost:9000;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi_param QUERY_STRING    $query_string;}location ~ \.(gif|jpg|png)$ {root /data/images;}
}

这将设置一个服务器,该服务器将通过FastCGI协议将所有请求(静态图像请求除外)路由到在localhost:9000上运行的代理服务器。

四、负载平衡配置

1、负载平衡方法

中支持以下负载平衡机制(或方法) nginx:

  • 轮询 — 分发对应用程序服务器的请求 以循环赛的方式,

  • 最少连接 — 下一个请求分配给服务器,其中 最少的活动连接数,

  • ip-hash — 哈希函数用于确定哪个服务器应该 为下一个请求选择(基于客户端的 IP 地址)。

2、默认负载平衡配置

使用 nginx 进行负载平衡的最简单配置可能看起来 如下所示:

http {upstream myapp1 {server srv1.example.com;server srv2.example.com;server srv3.example.com;}server {listen 80;location / {proxy_pass http://myapp1;}}
}

在上面的示例中,同一应用程序有 3 个实例 在 SRV1-SRV3 上运行。 如果未专门配置负载平衡方法, 它默认为轮循机制。 所有请求都代理到服务器组 myapp1,nginx 应用 HTTP 负载 平衡以分发请求。

nginx中的反向代理实现包括HTTP的负载平衡, HTTPS,FastCGI,uwsgi,SCGI,memcached和gRPC。

要为 HTTPS 而不是 HTTP 配置负载平衡,只需使用“https” 作为协议。

为 FastCGI、uwsgi、SCGI、memcached 或 gRPC 设置负载平衡时,请分别使用 fastcgi_pass、uwsgi_pass、scgi_pass、memcached_pass 和 grpc_pass 指令。

3、最少连接的负载平衡

另一个负载均衡规则是连接最少的。 最少连接允许控制应用程序的负载 在某些请求的情况下更公平地实例 需要更长的时间才能完成。

使用最少连接的负载平衡,nginx将尝试不使 繁忙的应用程序服务器具有过多的请求,分发新的 请求改为对不太繁忙的服务器的请求。

nginx 中的最少连接负载平衡在将 least_conn 指令用作服务器组配置的一部分时被激活:

upstream myapp1 {least_conn;server srv1.example.com;server srv2.example.com;server srv3.example.com;}

4、会话持久性

请注意,使用循环或最少连接的负载 平衡,每个后续客户端的请求可能是潜在的 分发到其他服务器。 不能保证同一客户端将始终是 定向到同一服务器。

如果需要将客户端绑定到特定的应用程序服务器 — 换句话说,使客户端的会话“粘性”或“持久化” 始终尝试选择特定服务器的术语 — IP 哈希负载 可以使用平衡机制。

使用 ip 哈希,客户端的 IP 地址用作哈希密钥 确定应为服务器组中的哪个服务器选择 客户的要求。 此方法可确保来自同一客户端的请求 将始终定向到同一服务器 除非此服务器不可用。

要配置 IP 哈希负载平衡,只需将 ip_hash 指令添加到服务器(上游)组配置:

upstream myapp1 {ip_hash;server srv1.example.com;server srv2.example.com;server srv3.example.com;
}

5、加权负载平衡

甚至可能影响nginx负载均衡算法 此外,通过使用服务器权重。

在上面的示例中,未配置服务器权重,这意味着 所有指定的服务器都被视为同样有资格用于 特定的负载平衡方法。

特别是循环赛,这也意味着或多或少相等 跨服务器分发请求 — 前提是有足够的请求 请求,以及何时以统一的方式处理请求,并且 完成得足够快。

为服务器指定权重参数时,权重将作为一部分 的负载平衡决策。

upstream myapp1 {server srv1.example.com weight=3;server srv2.example.com;server srv3.example.com;}

用此配置,每 5 个新请求将分布在 应用程序实例如下:将定向 3 个请求 对于 SRV1,一个请求将转到 SRV2,另一个请求将转到 SRV3。

同样可以使用连接最少和 最新版本的 nginx 中的 IP 哈希负载平衡。

6、健康检查

nginx中的反向代理实现包括带内(或无源) 服务器运行状况检查。 如果来自特定服务器的响应失败并显示错误, nginx会将此服务器标记为失败,并尝试 暂时避免为后续入站请求选择此服务器。

max_fails 指令将连续失败的尝试次数设置为 与fail_timeout期间应发生的服务器通信。 默认情况下,max_fails设置为 1。 设置为 0 时,将禁用此服务器的运行状况检查。 fail_timeout 参数还定义服务器标记为失败的时间长度。 服务器故障后的fail_timeout间隔后,nginx将开始正常 使用实时客户端的请求探测服务器。 如果探测成功,服务器将标记为活动服务器。

相关文章:

nginx配置详解(容器、负载)—官方原版

一、概述本指南对nginx进行了基本介绍,并描述了一些 可以用它完成的简单任务。 据推测,nginx已经安装在阅读器的机器上。 本指南描述了如何启动和停止nginx,并重新加载其 配置,解释结构 的配置文件,并描述了如何设置 n…...

2023年中职网络安全竞赛——CMS网站渗透解析

需求环境可私信博主 解析如下: CMS网站渗透 任务环境说明: 服务器场景:Server2206(关闭链接) 服务器场景操作系统:未知 1.使用渗透机对服务器信息收集,并将服务器中网站服务端口号作为flag提交; Flag:8089...

SQL 窗口函数详解

SQL窗口函数详解 窗口函数的主要作用是对数据进行分组排序、求和、求平均值、计数等。 一、窗口函数的基本语法 <分析函数> OVER ([PARTITION BY <列清单>] ORDER BY <排序用列清单> [ROWS BETWEEN 开始位置 AND 结束位置])理解窗口函数的基本语法&#xff…...

Android 12系统源码_SystemUI(六)显示和隐藏最近任务

前言 Android12对最近任务做了调整&#xff0c;将原本处于SystemUI模块的最近任务转移到了Launcher3QuickStep应用中。 本篇文章我们会结合源码一起来梳理一下最近任务的显示流程。 一、SystemUI模块显示最近任务的相关代码 1、在SystemUI模块调用CommandQueue的showRecentA…...

Docekr三剑客之 Docekr compose

写在前面 Docker三剑客Docker Compose、Docker Machine、Docker Swarm分别是Docker官方开源的三个项目。有着不同的功能&#xff1a; Docker Compose负责实现对 Docker 容器集群的快速编排Docker Machine负责在多种平台上快速安装 Docker 环境Docker Swarm提供 Docker 容器集…...

企业是否具备等保测评资质在哪里查?怎么查?

为了规范等保相关业务办理流程&#xff0c;确保等保业务顺利办理&#xff0c;保障企业合法权益&#xff0c;政策规定&#xff0c;只有取得等保测评资质机构方可办理等保测评业务。因此很多人在问&#xff0c;企业是否具备等保测评资质在哪里查&#xff1f;怎么查&#xff1f; …...

Spacedesk软件推荐,让你的平板也变成电脑的副屏

我的设备&#xff1a; 电脑:戴尔G15 5511、i7-11800H、Windows 11、RTX3060 平板&#xff1a;荣耀V6、麒麟985、安卓10、分辨率2000*1200&#xff08;手机也行&#xff0c;我用的平板&#xff09; 实际使用&#xff1a; 先给放一张实际使用的照片 可以让平板变成电脑的副屏…...

Vue 3.0 组合式API 介绍 【Vue3 从零开始】

提示 在阅读文档之前&#xff0c;你应该已经熟悉了这两个 Vue 基础和创建组件。 在 Vue Mastery 上观看关于组合式 API 的免费视频。 通过创建 Vue 组件&#xff0c;我们可以将接口的可重复部分及其功能提取到可重用的代码段中。仅此一项就可以使我们的应用程序在可维护性和…...

【算法数据结构体系篇class13、14】:贪心算法思想

一、贪心算法概念贪心算法概念&#xff1a;1&#xff09;最自然智慧的算法2&#xff09;用一种局部最功利的标准&#xff0c;总是做出在当前看来是最好的选择3&#xff09;难点在于证明局部最功利的标准可以得到全局最优解4&#xff09;对于贪心算法的学习主要以增加阅历和经验…...

C++知识点,关键字inline ,String,强制类型转化

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练 &#x1f525;座右铭&#xff1a;“不要等到什么都没有了&#xff0c;才下定决心去做” &#x1f680;&#x1f680;&#x1f680;大家觉不错…...

MyBatis源码分析(六)MetaObject工具类的使用与源码分析

文章目录一、MetaObject基本使用二、关键类源码分析1、MetaObject的构造方法2、PropertyTokenizer分词器3、BeanWrapper4、MetaClass5、DefaultReflectorFactory6、Reflector7、总结三、MetaObject的getValue源码分析写在后面一、MetaObject基本使用 public class User {priva…...

文献资源最多的文献下载神器,99.99%的文献都可下载

用对工具事半功倍&#xff0c;查找下载文献用对工具能节约大量的时间和精力去做更多的事情。 文献党下载器&#xff08;wxdown.org&#xff09;&#xff0c;几乎整合了所有文献数据库资源&#xff0c;涵盖各种文献类型&#xff0c;包含全部学科。文献党下载器整合的资源如&…...

工控机ARM工业边缘计算机搭建Node-Red环境

搭建Node-Red环境Node-RED是一个基于Node.js的开源可视化流程编程环境&#xff0c;可以轻松构建自定义应用程序&#xff0c;通过连接简单的节点来完成复杂的任务。Node-RED提供了一种简单的方法&#xff0c;可以快速连接到外部服务&#xff0c;从而实现物联网应用的开发。Node-…...

位图/布隆过滤器/海量数据处理方式

位图 位图的概念 所谓位图&#xff0c;就是用每一位来存放某种状态&#xff0c;适用于海量数据&#xff0c;数据无重复的场景。通常是用来判断某个数据存不存在的。 直接来看问题&#xff1a; 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0…...

Tomcat 配置文件数据库密码加密

几年前研究过Tomcat context.xml 中数据库密码改为密文的内容&#xff0c;因为当时在客户云桌面代码没有留备份也没有文章记录&#xff0c;最近项目又提出了这个需求就又重新拾起来学习一下。在网上找了一些资料&#xff0c;自己也大概试了一下&#xff0c;目前功能是实现了。参…...

k8s-Kubernetes集群部署

文章目录前言一、Kubernetes简介与架构1.Kubernetes简介2.kubernetes设计架构二、Kubernetes集群部署1.集群环境初始化2.所有节点安装kubeadm3.拉取集群所需镜像3.集群初始化4.安装flannel网络插件5.扩容节点6.设置kubectl命令补齐前言 一、Kubernetes简介与架构 1.Kubernetes…...

Python数据分析案例19——上市银行财务指标对比

我代码栏目都是针对基础的python数据分析人群&#xff0c;比如想写个本科毕业论文&#xff0c;课程论文&#xff0c;做个简单的案例分析等。过去写的案例可能使用了过多的机器学习和深度学习方法&#xff0c;文科的同学看不懂&#xff0c;可能他们仅仅只想用python做个回归或者…...

Python 中错误 ConnectionError: Max retries exceeded with url

出现错误“ConnectionError: Max retries exceeded with url”有多种原因&#xff1a; 向 request.get() 方法传递了不正确或不完整的 URL。我们正受到 API 的速率限制。requests 无法验证您向其发出请求的网站的 SSL 证书。 确保我们指定了正确且完整的 URL 和路径。 # ⛔️…...

SpringBoot下的Spring框架学习(Tedu)——DAY02

SpringBoot下的Spring框架学习&#xff08;Tedu&#xff09;——DAY02 目录SpringBoot下的Spring框架学习&#xff08;Tedu&#xff09;——DAY02Spring框架学习1.1 Spring介绍1.2 知识铺垫1.2.1 编辑Dog类1.2.2 编辑Cat类1.2.3 编辑测试类User.java1.2.4 上述代码的总结1.3 面…...

容易混淆的点:C语言中char* a[] 与 char a[] 的区别以及各自的用法

char* a[] 和 char a[] 的区别 char* a[] 和 char a[] 是 C 语言中数组的不同声明方式&#xff0c;二者具有以下区别&#xff1a; char a[] 声明的是一个字符数组&#xff0c;其中存储的是一串字符。此时&#xff0c;a 可以被视为一个指向字符的指针。 char* a[]则声明了一个…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...

上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式

简介 在我的 QT/C 开发工作中&#xff0c;合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式&#xff1a;工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...

ubuntu22.04有线网络无法连接,图标也没了

今天突然无法有线网络无法连接任何设备&#xff0c;并且图标都没了 错误案例 往上一顿搜索&#xff0c;试了很多博客都不行&#xff0c;比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动&#xff0c;重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...