Apache 网页优化

news2025/6/9 21:54:01

技能目标:

  • 掌握 Apache 网页压缩
  • 掌握 Apache 网页缓存
  • 掌握Apache 隐藏版本信息
  • 掌握 Apache 网页防盗链

1.1网页压缩与缓存

         在使用 Apache 作为 Web 服务器的过程中,只有对 Apache 服务器进行适当的优化配 置才能让 Apache 发挥出更好的性能。反过来说,如果 Apache 的配置非常糟糕, Apache 可能无法常为我们服务。因此,针对各种企业应用需求对 Apache 服务器的配置进行一定 的优化是必不可少的。

1.1.1 网页压缩

        网站的访问速度是由多个因素所共同决定的,这些因素包括应用程序的响应速度、网络带宽、服务器性能、与客户端之间的网络传输速度等等。其中最重要的一个因素是 Apache本身的响应速度。因此当为网站性能所苦恼时,第一个需要着手进行处理的便是尽可能的提升 Apache 的执行速度,可以使用网页压缩提升应用程序的速度。更重要的是,它完全不需要任何的成本,只不过是会让服务器 CPU 占用率稍微提升一两个百分点或者更少。

1.gzip介绍

 gzip 是一种流行的文件压缩算法,目前应用非常广泛,尤其是在 Linux 平台。当使用gzip 压缩一个纯文本文件时,效果是非常明显的,大约可以减少 70 %以上的文件大小。利用 Apache 中的 gzip 模块,可以使用 gzip 压缩算法来对 Apache 服务器发布的网页内容进行压缩后再传输到客户端浏览器。经过压缩后,实际上降低了网络传输的字节数,最明显的好处就是可以加快网页加载的速度。
        网页加载速度加快的好处不言而喻。除了节省流量,改善用户的浏览体验外,另一个潜 在的好处是 gzip 与搜索引擎的抓取工具有着更好的关系。
 

2.HTTP压缩的过程

        Web 服务器接收到浏览器的 HTTP 请求后,检查浏览器是否支持 HTTP 压缩(Accept-Encoding 信息)。如果浏览器支持 HTTP 压缩, Web 服务器检查请求文件的后缀名。如果请求文件是 HTML 、 CSS 等静态文件, Web 服务器到压缩缓冲目录中检查是否已经存在请求文件的最新压缩文件。如果请求文件的压缩文件不存在,Web 服务器向浏览器返回未压缩的请求文件,并在压缩缓冲目录中存放请求文件的压缩文件。如果请求文件的最新压缩文件已经存在,则直接返回请求文件的压缩文件。如果请求文件是动态文件,Web服务器动态压缩内容并返回浏览器,压缩内容不存放到压缩缓存目录中
 

3.Apache的压缩模块

Apache 1.x 系列没有内建网页压缩技术,使用的是额外的第三方 mod_gzip 模块来执第 2 页 共 17 页 行压缩。而 Apache 2.x 官方在开发的时候,就把网页压缩考虑进去,内建了 mod_deflate 这个模块,用以取代 mod_gzip 。两者都是使用的 gzip 压缩算法,它们的运作原理是类似的。
        mod_deflate 压缩速度略快而 mod_gzip 的压缩比略高。一般默认情况下,mod_gzip 会比 mod_deflate 多出 4%~6%的压缩量。
        一般来说,mod_gzip 对服务器 CPU 的占用要高一些。 mod_deflate 是专门为确保服务器的性能而使用的一个压缩模块,mod_deflate 需要较少的资源来压缩文件。这意味着在高流量的服务器,使用 mod_deflate 可能会比 mod_gzip 加载速度更快。
        简而言之,如果网站访问量较小,想要加快网页的加载速度,就使用 mod_gzip 。虽然会额外耗费一些服务器资源,但也是值得的。如果网站访问量较大,并且使用的是共享的虚拟主机,所分配系统资源有限的话,使用 mod_deflate 将会是更好的选择。
        Apache 2.4.25 版本中 mod_deflate 模块,可使用 DeflateCompressionLevel 指令设置压缩级别。该指令的值可为 1 (压缩速度最快,最低的压缩质量)至 9 (最慢的压缩速度,压缩率最高)之间的整数,其默认值为 6 (压缩速度和压缩质量较为平衡的值)。这个简单的变化更是使得 mod_deflate 可以轻松媲美 mod_gzip 的压缩。
 

4.mod_deflate模块

检查是否安装mod_deflate模块

[root@node01 ~]# apachectl -t -D DUMP_MODULES
Loaded Modules:
 core_module (static)
 so_module (static)
 http_module (static)
 mpm_worker_module (static)
 authn_file_module (shared)
 authn_core_module (shared)
 authz_host_module (shared)
 authz_groupfile_module (shared)
 authz_user_module (shared)
 authz_core_module (shared)
 access_compat_module (shared)
 auth_basic_module (shared)
 reqtimeout_module (shared)
 filter_module (shared)
 mime_module (shared)
 log_config_module (shared)
 env_module (shared)
 headers_module (shared)
 setenvif_module (shared)
 version_module (shared)
 unixd_module (shared)
 status_module (shared)
 autoindex_module (shared)
 dir_module (shared)
 alias_module (shared)
[root@node01 ~]# 
1)重新编译 Apache 添加 mod_deflate模块
[root@node01 ~]# cd /usr/src/httpd-2.4.25/
[root@node01 httpd-2.4.25]# yum -y install zlib-devel
[root@node01 httpd-2.4.25]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewite --enable-charset-lite --enable-cgi --enable-deflate
[root@node01 httpd-2.4.25]# cd /usr/local/httpd/conf/
[root@node01 conf]# mv httpd.conf httpd.conf.bak
[root@node01 conf]# systemctl stop httpd.service 
[root@node01 conf]# cd /usr/src/httpd-2.4.25/
[root@node01 httpd-2.4.25]# make -j2 && make install
2)配置mod_deflate 模块的启用
[root@node01 httpd-2.4.25]# cd /usr/local/httpd/conf/
[root@node01 conf]# ls
extra  httpd.conf  httpd.conf.bak  magic  mime.types  original
[root@node01 conf]# vim httpd.conf
Listen  192.168.182.105:80    //52行修改端口号
LoadModule deflate_module modules/mod_deflate.so    //106行取消注释
ServerName www.luo.com:80    //201行修改域名信息

//最末尾添加内容
 <IfModule mod_deflate.c>
     AddOutputFilterByType DEFLATE text/hml text/plain text/css text/xml t    ext/javascrpit text/jpg text/png
     DeflateCompressionLevel 9
     SetOutputFilter DEFLATE
 </IfModule>
3)检查安装情况,启动服务
[root@node01 conf]# apachectl -t    //检查配置文件是否正确
Syntax OK
[root@node01 conf]# apachectl -t -D DUMP_MODULES | grep "deflate"    //检查模块是否已经安装
 deflate_module (shared)
[root@node01 conf]# systemctl start httpd.service     //启动服务

测试缓存是否生效

[root@node01 conf]# cd /usr/local/httpd/htdocs/
[root@node01 htdocs]# cat index.html 
<html> 
<body>
  <h1>hello luo</h1>
  <img src="aaa.jpg">
</body>
</html>
[root@node01 htdocs]# 
4)浏览器访问,使用F12消息查看

   在浏览器中选择“查看元素”可以看到有“AcceptEncoding:gzip”表示压缩已经生效

1.1.2 网页缓存
 

    网页缓存是将一部分经常不会改变和变动很少的页面缓存, 下次浏览器再次访问这些页 面时, 不需要再次去下载这些页面 , 从而提高了用户的访问速度。
        Apache 的 mod_expires 模 块 会 自 动 生 成 页 面 头 部 信 息 中 的 Expires 标签和Cache-Control 标签,客户端浏览器根据标签决定下次访问是在本地机器的缓存中获取页面,不需要向服务器再次发出请求,从而降低客户端的访问频率和次数,达到减少不必要的
流量和增加访问速度的目的。
        配置 mod_expires 模块的步骤与 mod_deflate 模块相似。
 

1.配置mod_expires 模块启用

        启用 mod_expires 模块之前,可以用浏览器先抓取数据包,然后修改 httpd.conf 文件再抓取 数据包进行对比 。在 httpd.conf 去掉 LoadModule expires_module modules/mod_expires.so 前面的 # 注释,末尾加入以下内容

1)检查是否安装mod_expires模块
[root@node01 htdocs]# apachectl -t -D DUMP_MODULES | grep "expires"
[root@node01 htdocs]# 

如果没有安装mod_expires模块,重新编译安装Apache添加mod_expires模块

[root@node01 ~]# systemctl stop httpd.service     //停止服务
[root@node01 ~]# cd /usr/local/httpd/conf/    //切换到工作目录
[root@node01 conf]# ls    //列出文件
extra  httpd.conf  httpd.conf.bak  magic  mime.types  original
[root@node01 conf]# mv httpd.conf httpd.conf.bak1    //改名配置文件
[root@node01 conf]# yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel    //下载所需的包
[root@node01 conf]# cd /usr/src/httpd-2.4.25/
[root@node01 httpd-2.4.25]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewite --enable-charset-lite --enable-cgi --enable-deflate --enable-expires
[root@node01 httpd-2.4.25]# make -j2 && make install
2)配置mod_expires模块启用
[root@node01 httpd-2.4.25]# cd /usr/local/httpd/conf/
[root@node01 conf]# ls
extra       httpd.conf.bak   magic       original
httpd.conf  httpd.conf.bak1  mime.types
[root@node01 conf]# vim httpd.conf
Listen 192.168.182.105:80    //52行
LoadModule expires_module modules/mod_expires.so    //113行
ServerName www.luo.com:80    //201行
//末尾添加内容
 <IfModule mod_expires.c>
  ###打开网页缓存功能
   ExpiresActive On
   ###设置缓存60秒
   ExpiresDefault "access plus 60 seconds"
 </IfModule>
3)检查安装情况,启动服务
[root@node01 conf]# apachectl -t    //检查配置文件是否正确
Syntax OK
[root@node01 conf]# apachectl -t -D DUMP_MODULES | grep "expires"    //查看模块是否已经安装
 expires_module (shared)    
[root@node01 conf]# systemctl restart httpd.service    //重启服务 
4)测试缓存是否生效

        在Windows系统中依次安装 Microsoft.NET4 和fiddler 软件,打开fiddler 软件 选择 inspectors --->选择 Headers 浏览器访问 http://192.168.8.10 ,双击200消息查看 Expires 项

1.2隐藏版本信息

        一般情况下,软件的漏洞信息和特定版本是相关的。因此,软件的版本号对攻击者来说是很有价值的,在浏览器中选择“查看元素 ” 可以看到 Apache 的版本 2.4.25 如图所示

1.2.1 配置Apache隐藏版本信息

[root@node01 conf]# cd /usr/local/httpd/conf/
[root@node01 conf]# vim httpd.conf
 Include conf/extra/httpd-default.conf    //493行取消注释

[root@node01 conf]# vim extra/httpd-default.conf     //修改另一个配置文件
ServerTokens Prod    //将55行原本的 Full 改为 Prod 只显示名称,没有版本
[root@node01 conf]# systemctl restart httpd.service     //重启服务

        ServerTokens表示 Server回送给客户端的响应头域是否包含关于服务器OS类型和编译过的模块描述信息

浏览器访问 http://192.168.182.105或者http://www.luo.com 查看 Server 项

1.2.2 Apache防盗链

        Apache 的默认配置除了性能可以优化外,还需要对安全性进行相应的配置。默认配置能保证服务器正常提供服务,但 Apache 作为一个软件,必然也会存在一些漏洞,尽可能的降低潜在的风险,是管理员必须掌握的内容。
        一般来说,用户浏览一个完整的页面并不是一次性全部传送到客户端的。如果所请求的页面带有图片或其他信息,那么第一个 HTTP 请求传送的是这个页面的文本,然后通过客户端的浏览器对这段文本进行解释执行。如果发现其中还有图片,那么客户端的浏览器会再第 10 页 共 17 页次发送一条 HTTP 请求,当这个请求被处理后这个图片文件才会被传送到客户端,最后浏览器会将图片安放到页面的正确位置,就这样一个完整的页面要经过多次发送 HTTP 请求才能够被完整的显示。
        基于这样的机制,就会产生盗链问题:如果一个网站中没有其页面中所说图片信息,那么它完全可以链接到其他网站的图片信息上。这样,没有任何资源的网站利用了其他网站的资源来展示给浏览者,提高了自己的访问量,而大部分浏览者又不会很容易地发现。一些不良网站为了不增加成本而扩充自己站点内容,经常盗用其他网站的链接。一方面损害了原网站的合法利益,另一方面又加重了服务器的负担
 

http 标准协议中有专门的 Referer 字段记录,它的作用如下:

  • 可以追溯上一个入站地址是什么
  • 对于源文件,可以跟踪到包含显示它的网页地址是什么,因此所有防盗链方法都是基于这个Referer字段
1.配置防盗链

        准备两台服务器、一台客户端,且两台服务器上已分别部署完 Apache 服务。具体实验 环境如表所示。

1)在Windows 系统中访问 http://192.168.182.105 和 http://192.168.182.104 确保Apache 工作正常

2.检查是否安装mod_rewrite模块

检查是否安装mod_rewrite模块

[root@node01 ~]# apachectl -t -D DUMP_MODULES | grep "rewrite"

如果没有安装mod_rewrite模块,重新编译安装 Apache 添加 mod_rewrite模块

[root@node01 ~]# systemctl stop httpd.service 
[root@node01 ~]# cd /usr/local/httpd/conf/
[root@node01 conf]# mv httpd.conf httpd.conf.bak2
[root@node01 conf]# yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel
[root@node01 httpd-2.4.25]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewite --enable-charset-lite --enable-cgi --enable-deflate --enable-expires --enable-rewrite
[root@node01 httpd-2.4.25]# make -j2 && make install
[root@node01 httpd-2.4.25]# systemctl restart httpd.service 

配置mod_rewrite模块启用

[root@node01 httpd-2.4.25]# cd /usr/local/httpd/conf/
[root@node01 conf]# vim httpd.conf

ServerName www.luo.com:80    //201行修改
LoadModule rewrite_module modules/mod_rewrite.so    //159行取消注释
//254行开始增加内容
RewriteEngine On
     RewriteCond %{HTTP_REFERER} !^http://bdqn.com/.*$ [NC]
     RewriteCond %{HTTP_REFERER} !^http://bdqn.com$ [NC]
     RewriteCond %{HTTP_REFERER} !^http://www.bdqn.com/.*$ [NC]
     RewriteCond %{HTTP_REFERER} !^http://www.bdqn.com/$ [NC]
     RewriteRule .*\.(gif|jpg|swf)$ http://www.bdqn.com/bbb.png

RewriteCond %{HTTP_REFERER} !^http://www.abc.com/.*$ [NC] 的字段含义:

  %{HTTP_REFERER} :存放一个链接的 URL,表示从哪个链接中转访问目录下的静态资源。

  !^”:表示不以后面的字符串开头。

  http://www.abc.com”:是本网站的路径,按整个字符串匹配。

  .*$”:表示以任意字符结尾。

  [NC] :表示不区分大小写字母。

RewriteRule .*\.(gif|jpg|swf)$ http://www.abc.com/error.png 的字段含义:

  . :表示匹配一个字符。

  *”:表示匹配 0 到多个字符,与.合起来的意思是匹配 0 到多次前面的任意字符,如果是 1 到多次匹配可以用+表示。

  “\.”:在这里的\是转义符,\.就代表符号.的意思。因为.在指令中是属于规则字符,有相应的含义, 如果需要匹配,需要在前面加个转义符\,其它规则字符如果需要匹配,也做同样处理。

  (gif|jpg|swf)$ :表示匹配gif、jpg、swf任意一个,$表示结束。最后的规则是以.gif、.jpg、.swf结尾, 前面是1到多个字符的字符串,也就是匹配图片类型的文件。

  http://www.abc.com/error.png :表示转发到这个路径 。

整个配置的含义是 使用本网站以外的网站域名 访问本站的图片文件时,显示bbb.png 这个图片

3)网页准备

web源主机配置

[root@node01 ~]# cd /usr/local/httpd/htdocs/
[root@node01 htdocs]# ls
aaa.jpg  bbb.jpg  index.html
[root@node01 htdocs]# cat index.html 
<html> 
<body>
  <h1>hello luo</h1>
  <img src="aaa.jpg"/>
</body>
</html>
[root@node01 htdocs]# 

盗链网主机配置

[root@node02 ~]# cd /usr/local/httpd/htdocs/
[root@node02 htdocs]# ls
 index.html
[root@node02 htdocs]# cat index.html 
<html>
<body>
  <h1>www.tong.com</h1>
  <img src="http://www.luo.com/aaa.jpg"/>
</body>
</html>

[root@node02 htdocs]# 

在盗图网站主机上进行浏览器验证 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1355053.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CompressAI:深度学习与传统图像压缩

1、图像压缩算法原理 传统的有损图像压缩方法&#xff0c;如JPEG &#xff0c; JPEG2000 &#xff0c; HEVC或AV1或VVC&#xff0c;在类似的编码方案上进行了迭代改进&#xff1a;将图像划分为像素块&#xff0c;使用变换域通过线性变换(例如:DCT或DWT)去相关空间频率&#xf…

Unity 打包AB 场景烘培信息丢失

场景打包成 AB 资源的时候&#xff0c;Unity 不会打包一些自带相关的资源 解决办法&#xff1a;在 Project settings > Graphics下设置&#xff08;Automatic 修改成 Custom&#xff09;

ELement UI时间控件el-date-picker误差8小时解决办法

一、问题描述&#xff1a; 在项目中引用了elementui中的date-picker组件&#xff0c;选中的时间跟实际相差八小时&#xff0c;且格式不是自己想要的格式 <el-date-pickertype"date"placeholder"选择日期"format"yyyy/M/d"v-model"form…

宏集PC Runtime软件助推食品行业生产线数字化革新

一、前言 近年来&#xff0c;中国食品行业发展迅速且灵活多变&#xff0c;在当前经济下行的情形下&#xff0c;食品行业正面临着日益激烈的竞争&#xff0c;导致企业利润下降。 为了保持企业市场竞争力&#xff0c;国内某top10食品企业采用宏集SCADA解决方案—PC Runtime软件…

2020年认证杯SPSSPRO杯数学建模B题(第二阶段)分布式无线广播全过程文档及程序

2020年认证杯SPSSPRO杯数学建模 B题 分布式无线广播 原题再现&#xff1a; 以广播的方式来进行无线网通信&#xff0c;必须解决发送互相冲突的问题。无线网的许多基础通信协议都使用了令牌的方法来解决这个问题&#xff0c;在同一个时间段内&#xff0c;只有唯一一个拿到令牌…

Flutter迁移到空安全步骤

Flutter迁移到空安全将你现有的代码带到空安全的世界https://dart.cn/null-safety/migration-guide1. 下载并使用Flutter 3.7.12 SDK&#xff0c; 2. 使用dart pub outdated 检查并更新你的依赖&#xff08;然后使用下面的命令升级依赖&#xff09; &#xff08;1&#xff09…

django websocket

目录 核心代码 consumers.py from channels.generic.websocket import WebsocketConsumer from channels.exceptions import StopConsumer import datetime import time from asgiref.sync import async_to_sync class ChatConsumer(WebsocketConsumer):def websocket_conne…

HT81698 内置升压双声道 相互p2p兼容 HT81696

HT81698内置升压的立体声D类音频功率放大器&#xff0c;其支持单节锂电、双节锂电串联、5V、12V等多种输入&#xff0c;升压后的电压提供给功放供电&#xff0c;功放支持双通道立体声BTL输出以及并联PBTL单声道输出; HT81698内置的升压电路&#xff0c;可通过FB脚设置升压值&a…

HT760 2x30W12S输入,无电感,立体声D类放大器

HT760 典型应用图&#xff1a; HT760 引脚图&#xff1a; HT760 引脚定义信息&#xff1a; #HT760

Netty实战(待完善)

Netty组件 1. Bootstrap, ServerBootstrap Netty 中 Bootstrap 类是客户端程序的启动引导类&#xff0c;ServerBootstrap 是服务端启动引导类。 2. NioEventLoop, NioEventLoopGroup NioEventLoop 中维护了一个线程和任务队列&#xff0c;支持异步提交执行任务&#xff0c;…

RK3568驱动指南|第九篇 设备模型-第103章 在总线下注册设备实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

LeetCode-Java(29)

29. 两数相除 结果肯定落在dividend上&#xff0c;于是对这个区间每一个数进行二分查找&#xff0c;判断方法就是 while (l < r) {long mid l r 1 >> 1;if (mul(mid, y) < x) {l mid;} else {r mid - 1;}} 其中mul是一个要定义的快速乘法。 完整代码如下 …

CH341StreamI2C参数解释

总体思路&#xff1a; 第一步&#xff1a;使用EEPROM写入相应的数据 第二步&#xff1a;使用EEPROM读取相应的数据 第三步&#xff1a;使用CH341StreamI2C函数还原读取过程 每一步需要逻辑分析仪进行对比。 第一步&#xff1a;数据写入CH341WriteEEPROM 使用CH341WriteE…

当AI遇见大脑:电脑与人脑协同“进化”

编者按&#xff1a;2023年是微软亚洲研究院建院25周年。借此机会&#xff0c;我们特别策划了“智启未来”系列文章&#xff0c;邀请到微软亚洲研究院不同研究领域的领军人物&#xff0c;以署名文章的形式分享他们对人工智能、计算机及其交叉学科领域的观点洞察及前沿展望。希望…

百度搜索金融:构建高时效、高可用的分布式数据传输系统

作者 | 搜索技术平台研发部 导读 分布式数据传输系统是一种用于在多个计算节点之间高效传输大量数据的系统&#xff0c;诣在高效的解决大规模数据迁移、备份、跨地域复制等问题&#xff0c;其广泛应用在实时数据流传输、跨数据中心数据迁移、多媒体传输等场景&#xff0c;在大多…

一文读懂$mash 通证的 “Fair Launch” 规则,将公平发挥极致

Solmash 是Solana生态中由社区主导的铭文资产LaunchPad平台&#xff0c;该平台旨在为Solana原生铭文项目&#xff0c;以及通过其合作伙伴SoBit跨链桥桥接到Solana的Bitcoin生态铭文项目提供更广泛的启动机会。有了Solmash&#xff0c;将会有更多的Solana生态的铭文项目、资产通…

【逗老师的无线电】ICOM IC-705终端模式Terminal Mode直连反射器配置-外置Pi-Star网关篇

各位友台大家好呀&#xff0c;逗老师最近整了一台IC-705&#xff0c;最吸引人的莫过于这玩意可以通过USB连接树莓派直接进行通联。下面简单介绍一下这个功能和其配置方法 一、功能 终端模式Terminal Mode允许IC-705电台作为终端直接连接反射器&#xff0c;基于不同的连接方式…

雍禾医疗以患者为中心 雍禾植发医生文志清专注做精每一台手术

随着生活方式的改变&#xff0c;晚睡、长期使用电子产品等原因让脱发成为消费者不可忽视的问题。有相关数据显示&#xff0c;76%消费者关注自己的头皮健康状况&#xff0c;53%的人群受到脱发困扰&#xff0c;已经有20%消费者认识到专业毛发医疗机构的重要性&#xff0c;选择到专…

MyBatis学习二:Mapper代理开发、配置文件完成增删改查、注解开发

前言 公司要求没办法&#xff0c;前端也要了解一下后端知识&#xff0c;这里记录一下自己的学习 学习教程&#xff1a;黑马mybatis教程全套视频教程&#xff0c;2天Mybatis框架从入门到精通 文档&#xff1a; https://mybatis.net.cn/index.html Mapper代理开发 目的 解决…

innovus:Patch Wire(补丁线)

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 在修补一些min area的drc时&#xff0c;会有一些danling wire的drc冒出来&#xff0c;为了避免这些假错&#xff0c;可以使用工具patch wire功能。 1&#xff09;选中wire &…