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

Nginx安全防护与HTTPS部署实战

目录

  • 前言
    • 一. 核心安全配置
      • 1. 隐藏版本号
      • 2. 限制危险请求方法
      • 3. 请求限制(CC攻击防御)
        • (1)使用nginx的limit_req模块限制请求速率
        • (2)压力测试验证
      • 4. 防盗链
    • 二. 高级防护
      • 1. 动态黑名单
        • (1)编辑黑名单配置文件
        • (2)编辑主配置文件
        • (3)使用封禁ip测试访问
      • 2. nginx https配置
        • (1)https概念
        • (2)HTTP为什么不安全
        • (3)安全通信的四大原则
        • (4)HTTPS通信原理简述
      • 3. nginx配置https证书
        • (1)使用openssl生成证书和私钥生成证书和私钥
        • (2)nginx启用https
        • (3)通过浏览器验证

前言

在当今互联网技术高速发展的背景下,Web服务的安全性与可靠性已成为企业及开发者不可忽视的核心课题。作为全球最受欢迎的高性能Web服务器和反向代理工具,Nginx凭借其轻量级、高并发处理能力和灵活的模块化设计,占据了全球近三分之一的Web服务器市场份额。然而,随着网络攻击手段的不断升级(如DDoS、SQL注入、恶意爬虫等),以及全球范围内对数据隐私保护的法规要求(如GDPR、等保2.0),掌握Nginx的安全防护策略与HTTPS部署能力,已成为运维工程师和开发者的必备技能

一. 核心安全配置

1. 隐藏版本号

在生产环境中,需要隐藏 Nginx 的版本号,以避免泄漏 Nginx 的版本,使攻击者不能针对特定版本进行攻击。在隐藏版本号之前,可以使用 Fiddler 工具抓取数据包,查看Nginx 版本,也可以在 OpenEuler 中使用命令 curl -I http://192.168.10.101/查看

[root@localhost ~]# curl -I 192.168.10.101
HTTP/1.1 200 OK
Server: nginx/1.26.3	//版本号
Date: Mon, 07 Apr 2025 08:32:36 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Mon, 07 Apr 2025 08:17:10 GMT
Connection: keep-alive
ETag: "67f38a06-267"
Accept-Ranges: bytes

修改配置文件

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf

在这里插入图片描述

[root@localhost ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost ~]# systemctl restart nginx
[root@localhost ~]# curl -I 192.168.10.101
HTTP/1.1 200 OK
Server: nginx	#版本号被隐藏
Date: Mon, 07 Apr 2025 08:39:31 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Mon, 07 Apr 2025 08:17:10 GMT
Connection: keep-alive
ETag: "67f38a06-267"
Accept-Ranges: bytes

2. 限制危险请求方法

不安全的请求方式,是潜在的安全风险,TRACE(易引发XST攻击)、PUT/DELETE(文件修改风险)、CONNECT(代理滥用),通过正则表达式匹配请求方法,非白名单方法返回444(无响应关闭连接)

修改配置文件

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
server {listen       80;server_name  localhost;if ($request_method !~ ^(GET|HEAD|POST)$) {return 444;}
[root@localhost ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost ~]# systemctl restart nginx

验证测试请求;测试PUT/DELETE请求

[root@localhost ~]# curl -XPUT -I 192.168.10.101
curl: (52) Empty reply from server
[root@localhost ~]# curl -XDELETE -I 192.168.10.101
curl: (52) Empty reply from server

查看access.log日志

[root@localhost ~]# cat /usr/local/nginx/logs/access.log 
127.0.0.1 - - [07/Apr/2025:16:32:24 +0800] "HEAD / HTTP/1.1" 200 0 "-" "curl/8.4.0"
192.168.10.101 - - [07/Apr/2025:16:32:36 +0800] "HEAD / HTTP/1.1" 200 0 "-" "curl/8.4.0"
192.168.10.101 - - [07/Apr/2025:16:37:43 +0800] "HEAD / HTTP/1.1" 200 0 "-" "curl/8.4.0"
192.168.10.101 - - [07/Apr/2025:16:38:46 +0800] "HEAD / HTTP/1.1" 200 0 "-" "curl/8.4.0"
192.168.10.101 - - [07/Apr/2025:16:39:31 +0800] "HEAD / HTTP/1.1" 200 0 "-" "curl/8.4.0"
192.168.10.101 - - [07/Apr/2025:19:04:44 +0800] "PUT / HTTP/1.1" 444 0 "-" "curl/8.4.0"
192.168.10.101 - - [07/Apr/2025:19:12:30 +0800] "DELETE / HTTP/1.1" 444 0 "-" "curl/8.4.0"

注意测试TRACE和CONNECT方法时,状态码不是444(原因:1.CONNECT请求的目标不是代理服务器时,服务器必须返回400 Bad Request,Nginx核心层在请求解析阶段直接拦截,根本不进入后续的location处理流程 2.现代Nginx默认禁用TRACE方法,在ngx_http_core_module阶段直接返回405 Not Allowed)

3. 请求限制(CC攻击防御)

CC攻击(Challenge Collapsar攻击)是一种常见的网络攻击方式,通过大量合法或伪造的小流量请求来耗尽服务器资源,导致正常用户无法访问网站。要在Nginx中有效防止CC攻击,可以采用多种策略和方法。

CC攻击,也称为连接数攻击或请求速率限制攻击,通过模拟大量用户访问来消耗服务器资源,从而使得正常用户无法正常访问网站。为了防止此类攻击,可以使用Nginx提供的模块来限制请求速率和并发连接数

(1)使用nginx的limit_req模块限制请求速率

编辑配置文件

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf

在这里插入图片描述
在这里插入图片描述

关键参数说明:

参数含义
limit_req_zone定义共享内存区
$binary_remote_addr是一个内置变量,用于表示客户端 IP 地址的二进制格式
zone=req_limit:10m创建名为req_limit的共享内存区,大小10M,用来存储客户端 IP
rate=10r/s限制并发数,每个IP每秒可以发起的请求次数
limit_req实施速率限制
zone=req_limit绑定到预定义的共享内存区
burst=20类似与等候区,超出并发数的请求会到等候区,等候区占满后,多余的请求会立刻返回503
nodelay立即处理突发请求而不延迟,相当于立即处理等候区的请求,多余的请求会立刻返回503
(2)压力测试验证

安装ab测试工具:

ApacheBench(简称ab)是Apache HTTP服务器自带的一个轻量级、易用的HTTP服务器性能测试工具。它主要用于评估服务器在并发访问下的性能表现,包括响应时间、吞吐量等关键指标。
在这里插入图片描述

发起测试请求:

共发起300个请求,每次发起30个请求

在这里插入图片描述

查看access.log发现大量请求日志状态码503

[root@localhost ~]# tail -300 /usr/local/nginx/logs/access.log

在这里插入图片描述

在这里插入图片描述

关键选项说明:

选项含义
-n 300表示总请求数为 300 次,即模拟客户端向服务器发送 300 次 HTTP 请求
-c 30表示并发用户数为 30,即同时有 30 个请求并行发送到服务器

4. 防盗链

防盗链是一种重要的安全设置,旨在防止未经授权的用户盗用网站(静态)资源。盗链行为不仅侵犯了内容创作者的版权,还可能导致原网站带宽和资源的过度消耗,影响正常用户的访问速度和体验。

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

资源清单

本实验需要两台主机;一台客户机测试
在这里插入图片描述
(1)修改 Windows10 的 C:\Windows\System32\drivers\etc\hosts 文件,设置域名和 IP 映射关系
在这里插入图片描述
(2)修改两台 OpenEuler 的 hosts 文件,设置域名和 IP 映射关系

在这里插入图片描述
在这里插入图片描述
(3)把图片 kgc.png 放到源主机(www.aaa.com)的工作目录下
在这里插入图片描述
(4)编辑原网站首页文件

在这里插入图片描述

(5)测试访问网站

在这里插入图片描述
(6)编辑盗链网站首页文件(102主机)
在这里插入图片描述
在这里插入图片描述
(7)测试访问盗链网站(盗链成功)
在这里插入图片描述
(8)配置Nginx防盗链

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf

在这里插入图片描述

在这里插入图片描述

  • ~* .(jpg|gif|swf)$:这段正则表达式表示匹配不区分大小写,以.jpg 或.gif 或.swf 结尾的文件
  • Valid_referers:设置信任的网站,可以正常使用图片
  • 后面的网址或者域名:referer 中包含相关字符串的网址
  • If 语句:如果链接的来源域名不在 valid_referers 所列出的列表中,$invalid_referer 为 1,则执行后面的操作,即进行重写或返回 403 页面

(8)测试访问盗链网站(盗链失败403)
在这里插入图片描述

二. 高级防护

1. 动态黑名单

动态黑名单是Nginx中一种实时拦截恶意请求的安全机制,它允许在不重启服务的情况下,动态更新需要封禁的IP地址或网段。相比静态配置的allow/deny指令,动态黑名单更灵活高效,适用于高并发、多变的攻击防护场景

(1)编辑黑名单配置文件

[root@localhost ~]# vim /usr/local/nginx/conf/blockips.conf
在这里插入图片描述

在这里插入图片描述

(2)编辑主配置文件

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
在这里插入图片描述
在这里插入图片描述

参数含义
geoNginx 内置模块指令,专门用于处理 IP 地址相关的逻辑。基于客户端 IP 地址生成一个变量值,用于后续的访问控制判断
$block_ip自定义的变量名,存储计算结果(通常为 0 或 1)
default 0默认值,表示不在黑名单中的IP允许访问
(3)使用封禁ip测试访问

禁止102主机访问
在这里插入图片描述

2. nginx https配置

(1)https概念

TTPS,全称HyperText Transfer Protocol over Secure Socket Layer,设计初衷是为了保证数据传输安全。国内大型互联网巨头在2016开始大力推行https,期间关于https的重大事件有:

  • Google搜索引擎让https的网站在搜索排名中更靠前

  • 从2017年开始,chrome浏览器把只采用http的网站标记为不安全网站

  • 苹果要求App Store中的所有应用都必须使用https加密链接

  • 微信小程序也要求必须使用https

  • 新一代的http/2协议的支持需要以https为基础

众所周知,http(超文本传输协议)是客户端浏览器与web服务器之间的通信协议,而https协议可以认为是HTTP + SSL/TLS,在http之下tcp之上加了ssl一层,用于对应用层数据的加解密。如下图所示

在这里插入图片描述
SSL:由Netscape公司开发,专门用于保护Web通讯。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为SSL记录协议(SSL Record Protocol)和SSL握手协议(SSL Handshake Protocol)两层。SSL经历了多个版本的迭代,包括从未公开发布的SSL 1.0、存在严重安全漏洞且现已废弃的SSL 2.0、在2014年因POODLE攻击漏洞而被逐步淘汰的SSL 3.0

TLS:是IETF(Internet Engineering Task Force,互联网工程任务组)制定的一种新的协议,它建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本。从历史上看,TLS对SSL首先是继承关系,后来逐步发展并取代了SSL,成为当前主流的网络安全协议。TLS经历了多个版本的演进,包括TLS 1.0(1999年发布,基于SSL 3.0但进行了改进)、TLS 1.1(2006年发布,增加了对CBC攻击的保护)、TLS 1.2(2008年发布,引入了更强大的加密算法,如AES)和TLS 1.3(2018年发布,进一步简化了握手过程,提高了性能和安全性)。值得注意的是,TLS 1.0和TLS 1.1也在2021年被正式弃用

(2)HTTP为什么不安全

HTTP 由于是明文传输,主要存在三大风险:窃听风险、篡改风险、冒充风险。

  • 窃听风险
    中间人可以获取到通信内容,由于内容是明文,所以获取明文后有安全风险

在这里插入图片描述

  • 篡改风险
    比如你以为是在和某宝通信,但实际上是在和一个钓鱼网站通信
    在这里插入图片描述
  • 冒充风险
    比如你以为是在和某宝通信,但实际上是在和一个钓鱼网站通信

在这里插入图片描述
HTTPS 显然是为了解决这三大风险而存在的

(3)安全通信的四大原则

不难猜到 HTTPS 就是为了解决上述三个风险而生的,一般我们认为安全的通信需要包括以下四个原则: 机密性、完整性,身份认证和不可否认

  • 机密性:即对数据加密,解决了窃听风险,因为即使被中间人窃听,由于数据是加密的,他也拿不到明文

  • 完整性:指数据在传输过程中没有被篡改,不多不少,保持原样,中途如果哪怕改了一个标点符号,接收方也能识别出来,从来判定接收报文不合法

  • 身份认证:确认对方的真实身份,即证明“你妈是你妈”的问题,这样就解决了冒充风险,用户不用担心访问的是某宝结果却在和钓鱼网站通信的问题

  • 不可否认: 即不可否认已发生的行为,比如小明向小红借了 1000 元,但没打借条,或者打了借条但没有签名,就会造成小红的资金损失

(4)HTTPS通信原理简述

HTTPS(超文本传输协议安全)是HTTP的安全版本,它通过在传输层实现安全套接字层(SSL)或传输层安全性(TLS)来加密通信协议确保网络上的数据传输安全。HTTPS不仅保护数据免受窃听,还确保数据在传输过程中未被篡改,保持了完整性。

HTTPS的安全性基于三种主要的加密技术:证书、对称加密和非对称加密

  • 证书:服务器在使用HTTPS之前需要向证书颁发机构(CA)申请证书。这个证书包含了服务器的公钥和其他身份信息。当服务器向客户端发送证书时,客户端会验证证书的有效性,以确保正在通信的服务器是合法的

  • 对称加密:在客户端和服务器之间建立安全通信后,双方会使用对称加密算法来加密传输的数据。对称加密使用相同的密钥进行加密和解密,因此密钥的安全传输至关重要

  • 非对称加密:在初始的握手阶段,非对称加密扮演着关键角色。客户端和服务器使用两个不同的密铜–一个公钥和一个私钥。公钥可以公开,而私钥必须保密。非对称加密用于安全地交换对称加密的密钥

3. nginx配置https证书

由于ssl证书需要向CA组织申购,实验采用自签名证书(也就是自己给自己签名并颁发证书,当然这种证书是不被信任的)

(1)使用openssl生成证书和私钥生成证书和私钥

创建证书存储目录

在这里插入图片描述
生成自签名证书

在这里插入图片描述
参数解释:

参数含义
-x509生成自签名证书(而非CSR)
-nodes不加密私钥(无密码保护)
-days 365证书有效期1年
-keyout私钥文件
-out自签名文件
-newkey rsa:2048生成2048位的RSA私钥
-subj证书主题信息(按需修改字段)

CA签名证书:
需要由受信任的第三方证书颁发机构(CA)签发。流程如下:

  • 用户生成私钥和CSR(证书签名请求)
  • 将CSR提交给CA(如Let’s Encrypt、DigiCert等)
  • CA机构验证身份后,用CA的私钥对证书签名,生成最终证书

自签名证书:

  • 证书的颁发者(Issuer)和主体(Subject)是同一个实体(即自己)
  • 无需第三方CA参与,直接用工具(如OpenSSL)生成私钥和证书
  • 签名时使用自己的私钥,而不是CA的私钥
  • 适用于测试、内部环境或无需公开信任的场景
(2)nginx启用https

编辑nginx配置文件

[root@localhost ~]#vim /usr/local/nginx/conf/nginx.conf

在这里插入图片描述

(3)通过浏览器验证

访问https://你的服务器ip

浏览器会提示证书不安全(因自签名),选择“高级”–继续前往或信任此证书(测试环境可忽略警告)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

相关文章:

Nginx安全防护与HTTPS部署实战

目录 前言一. 核心安全配置1. 隐藏版本号2. 限制危险请求方法3. 请求限制(CC攻击防御)(1)使用nginx的limit_req模块限制请求速率(2)压力测试验证 4. 防盗链 二. 高级防护1. 动态黑名单(1&#x…...

JAVA重症监护系统源码 ICU重症监护系统源码 智慧医院重症监护系统源码

智慧医院重症监护系统源码 ICU重症监护系统源码 开发语言:JavaVUE ICU护理记录:实现病人数据的自动采集,实时记录监护过程数据。支持主流厂家的监护仪、呼吸机等床旁数字化设备的数据采集。对接检验检查系统,实现自动化录入。喜…...

静态资源js,css免费CDN服务比较

静态资源js,css免费CDN服务比较 分析的 CDN 服务列表: BootCDN (https://cdn.bootcdn.net/ajax/libs)jsDelivr (主域名) (https://cdn.jsdelivr.net/npm)jsDelivr (Gcore 镜像) (https://gcore.jsdelivr.net/npm)UNPKG (https://unpkg.com)ESM (https://esm.sh)By…...

组合型回溯+剪枝

本篇基于b站灵茶山艾府。 77. 组合 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输入:n 4, k 2 输出: [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4], ]示例 2&#…...

python:机器学习(KNN算法)

本文目录: 一、K-近邻算法思想二、KNN的应用方式( 一)分类流程(二)回归流程 三、API介绍(一)分类预测操作(二)回归预测操作 四、距离度量方法(一)…...

【笔记】2025 年 Windows 系统下 abu 量化交易库部署与适配指南

#工作记录 前言 在量化交易的学习探索中,偶然接触到 2017 年开源的 abu 量化交易库,其代码结构和思路对新手理解量化回测、指标分析等基础逻辑有一定参考价值。然而,当尝试在 2025 年的开发环境中部署这个久未更新的项目时,遇到…...

小程序 - 视图与逻辑

个人简介 👨‍💻‍个人主页: 魔术师 📖学习方向: 主攻前端方向,正逐渐往全栈发展 🚴个人状态: 研发工程师,现效力于政务服务网事业 🇨🇳人生格言: “心有多大,舞台就有多大。” 📚推荐学习: 🍉Vue2 🍋Vue3 🍓Vue2/3项目实战 🥝Node.js实战 🍒T…...

ChatGPT Plus/Pro 订阅教程(支持支付宝)

订阅 ChatGPT Plus GPT-4 最简单,成功率最高的方案 1. 登录 chat.openai.com 依次点击 Login ,输入邮箱和密码 2. 点击升级 Upgrade 登录自己的 OpenAI 帐户后,点击左下角的 Upgrade to Plus,在弹窗中选择 Upgrade plan。 如果…...

[蓝帽杯 2022 初赛]网站取证_2

一、找到与数据库有关系的PHP文件 打开内容如下,发现数据库密码是函数my_encrypt()返回的结果。 二、在文件夹encrypt中找到encrypt.php,内容如下,其中mcrypt已不再使用,所以使用php>7版本可能没有执行结果,需要换成较低版本…...

vue3+Pinia+element-plus 后台管理系统项目实战记录

vue3Piniaelement-plus 后台管理系统项目实战记录 参考项目:https://www.bilibili.com/video/BV1L24y1n7tB 全局api provide、inject vue2 import api from/api vue.propotype.$api apithis.$api.xxxvue3 import api from/api app.provide($api, api)import {…...

安装 Node.js 和配置 cnpm 镜像源

一、安装 Node.js 方式一:官网下载(适合所有系统) 访问 Node.js 官网 推荐选择 LTS(长期支持)版本,点击下载安装包。 根据系统提示一步步完成安装。 方式二:通过包管理器安装(建…...

MacOS内存管理-删除冗余系统数据System Data

文章目录 一、问题复现二、解决思路三、解决流程四、附录 一、问题复现 以题主的的 Mac 为例,我们可以看到System Data所占数据高达77.08GB,远远超出系统所占内存 二、解决思路 占据大量空间的是分散在系统中各个位置Cache数据; 其中容量最…...

电脑开机后长时间黑屏,桌面图标和任务栏很久才会出现,但是可通过任务管理器打开应用程序,如何解决

目录 一、造成这种情况的主要原因(详细分析): (1)启动项过多,导致系统资源占用过高(最常见) 检测方法: (2)系统服务启动异常(常见&a…...

行为型:中介者模式

目录 1、核心思想 2、实现方式 2.1 模式结构 2.2 实现案例 3、优缺点分析 4、适用场景 5、注意事项 1、核心思想 目的:通过引入一个中介对象来封装一组对象之间的交互,解决对象间过度耦合、频繁交互的问题。不管是对象引用维护还是消息的转发&am…...

光谱相机在生态修复监测中的应用

光谱相机通过多维光谱数据采集与智能分析技术,在生态修复监测中构建起‌“感知-评估-验证”‌的全周期管理体系,其核心应用方向如下: 一、土壤修复效能量化评估 ‌重金属污染动态监测‌ 通过短波红外(1000-2500nm)波…...

吉林大学操作系统上机实验五(磁盘引臂调度算法(scan算法)实现)

本次实验无参考,从头开始实现。 一.实验内容 模拟实现任意一个磁盘引臂调度算法,对磁盘进行移臂操作列出基于该种算法的磁道访问序列,计算平均寻道长度。 二.实验设计 假设磁盘只有一个盘面,并且磁盘是可移动头磁盘。磁盘是可…...

【深度学习-pytorch篇】4. 正则化方法(Regularization Techniques)

正则化方法(Regularization Techniques) 1. 目标 理解什么是过拟合及其影响掌握常见正则化技术:L2 正则化、Dropout、Batch Normalization、Early Stopping能够使用 PyTorch 编程实现这些正则化方法并进行比较分析 2. 数据构造与任务设定 …...

ESP8266+STM32 AT驱动程序,心知天气API 记录时间: 2025年5月26日13:24:11

接线为 串口2 接入ESP8266 esp8266.c #include "stm32f10x.h"//8266预处理文件 #include "esp8266.h"//硬件驱动 #include "delay.h" #include "usart.h"//用得到的库 #include <string.h> #include <stdio.h> #include …...

WPF【11_5】WPF实战-重构与美化(MVVM 实战)

11-10 【重构】创建视图模型&#xff0c;显示客户列表 正式进入 MVVM 架构的代码实战。在之前的课程中&#xff0c; Model 和 View 这部分的代码重构实际上已经完成了。 Model 就是在 Models 文件夹中看到的两个文件&#xff0c; Customer 和 Appointment。 而 View 则是所有与…...

⭐️⭐️⭐️ 模拟题及答案 ⭐️⭐️⭐️ 大模型Clouder认证:RAG应用构建及优化

考试注意事项: 一、单选题(21题) 检索增强生成(RAG)的核心技术结合了什么? A. 图像识别与自然语言处理 B. 信息检索与文本生成 C. 语音识别与知识图谱 D. 数据挖掘与机器学习 RAG技术中,“建立索引”步骤不包括以下哪项操作? A. 将文档解析为纯文本 B. 文本片段分割(…...

kali系统的安装及配置

1 kali下载 Kali 下载地址&#xff1a;Get Kali | Kali Linux &#xff08;https://www.kali.org/get-kali&#xff09; 下载 kali-linux-2024.4-installer-amd64.iso (http://cdimage.kali.org/kali-2024.4/) 2. 具体安装步骤&#xff1a; 2.1 进入官方地址&#xff0c;点击…...

CSS--background-repeat详解

属性介绍 background-repeat ‌属性在CSS中用于控制背景图像是否以及如何重复。当背景图像的尺寸小于其容器的尺寸时&#xff0c;该属性决定了图像如何填充额外的空间。默认情况下&#xff0c;背景图像会在横向和纵向上重复&#xff0c;直到覆盖整个元素。 常见取值 repeat …...

Redis的大Key问题如何解决?

大家好&#xff0c;我是锋哥。今天分享关于【Redis的大Key问题如何解决&#xff1f;】面试题。希望对大家有帮助&#xff1b; Redis的大Key问题如何解决&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Redis中的“大Key”问题是指某个键的值占用了过多…...

影楼精修-AI追色算法解析

注意&#xff1a;本文样例图片为了避免侵权&#xff0c;均使用AIGC生成&#xff1b; AI追色是像素蛋糕软件中比较受欢迎的一个功能点&#xff0c;本文将针对AI追色来解析一下大概的技术原理。 功能分析 AI追色实际上可以理解为颜色迁移的一种变体或者叫做升级版&#xff0c;…...

node入门:安装和npm使用

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、安装npm命令nvm 前言 因为学习vue接触的&#xff0c;一直以为node是和vue绑定的&#xff0c;还以为vue跑起来必须要node&#xff0c;后续发现并不是。 看…...

‘js@https://registry.npmmirror.com/JS/-/JS-0.1.0.tgz‘ is not in this registry

解决方法&#xff1a; 1. npm cache clean --force 2.临时切换到官方源 npm config set registry https://registry.npmjs.org/ npm install js0.1.0 npm config set registry https://registry.npmmirror.com/ # 切换回镜像源...

el-table-column如何获取行数据的值

在Element UI的el-table组件中&#xff0c;你可以通过el-table-column的slot-scope属性&#xff08;在Vue 2.x中&#xff09;或者#default插槽的scope属性&#xff08;在Vue 3.x中&#xff09;来获取当前行的数据。以下是如何实现这一功能的详细步骤&#xff1a; ‌在el-table-…...

leetcode450.删除二叉搜索树中的节点:迭代法巧用中间节点应对多场景删除

一、题目深度解析与BST特性剖析 在二叉搜索树&#xff08;BST&#xff09;中删除节点&#xff0c;需确保删除操作后树依然保持BST特性。题目要求我们根据给定的节点值key&#xff0c;在BST中删除对应节点。BST的核心特性是左子树所有节点值小于根节点值&#xff0c;右子树所有…...

java虚拟机2

一、垃圾回收机制&#xff08;GC&#xff09; 1. 回收区域&#xff1a;GC主要回收堆内存区域。堆用于存放new出来的对象 。程序计数器、元数据区和栈一般不是GC回收的重点区域。 2. 回收单位&#xff1a;GC以对象为单位回收内存&#xff0c;而非字节。按对象维度回收更简便&am…...

自监督软提示调优:跨域NLP新突破

自监督的软提示调优方法(SPSS) 这篇论文提出了一种基于自监督的软提示调优方法(SPSS),用于无监督领域自适应。其核心目标是通过挖掘源域和目标域的内部知识,解决传统提示调优在跨域场景中依赖通用知识、模板生成低效的问题。 一、核心实现原理 1. 自监督分层聚类优化(…...