Nginx进阶篇(Rewrite功能配置、地址重写和地址重定向的区别、Rewrite案例实战、域名跳转、域名镜像、独立域名、合并目录、防盗链)

article/2025/6/26 18:01:58

文章目录

  • 1. Rewrite功能配置
    • 1.1 地址重写和地址重定向的区别
      • 1.1.1 地址重写(Rewrite)
      • 1.1.2 地址重定向(Redirection)
    • 1.2 set指令
    • 1.3 Rewrite功能常用的全局变量
    • 1.4 if指令
      • 1.4.1 变量名
      • 1.4.2 比较变量和字符串是否相等
      • 1.4.3 取反
      • 1.4.4 使用正则表达式对变量进行匹配
      • 1.4.5 判断请求的文件是否存在
      • 1.4.6 判断请求的目录是否存在
      • 1.4.7 判断请求的目录或者文件是否存在
      • 1.4.8 判断请求的文件是否可执行
    • 1.5 break指令
    • 1.6 return指令
    • 1.7 rewrite指令
    • 1.8 rewrite_log指令
  • 2. Rewrite案例实战
    • 2.1 域名跳转
      • 2.1.1 问题分析
      • 2.1.2 准备工作
      • 2.1.3 具体实现
      • 2.1.4 如何在域名跳转的过程中保留请求原始的URL路径
    • 2.2 域名镜像
      • 2.2.1 概念解释
      • 2.2.2 具体实现
    • 2.3 独立域名
      • 2.3.1 问题分析
      • 2.3.2 准备工作
      • 2.3.3 具体实现
    • 2.4 目录自动添加"/"
    • 2.5 合并目录
      • 2.5.1 问题分析
      • 2.5.2 具体实现
    • 2.6 防盗链

如果想了解更多与Nginx相关的内容,可以查看Nginx专栏: Nginx

视频教程:01-Nginx的rewrite内容介绍

1. Rewrite功能配置

Nginx使用ngx_http_rewrite_module模块来解析和处理Rewrite功能的相关配置

Rewrite是Nginx服务器提供的一个重要基本功能,是Web服务器产品中几乎必备的功能,主要的作用是用来实现URL的重写

1.1 地址重写和地址重定向的区别

地址重写(Rewrite)和地址重定向(Redirection)是Web服务器中常用的两种技术,它们在处理HTTP请求时具有不同的功能和用途,两者在实现方式和用途上有所不同,但都可以用于管理Web应用的URL结构

  • 地址重写:在服务器内部修改URL,不通知客户端,用于美化URL、映射等
  • 地址重定向:通知客户端URL已更改,并要求客户端重新发送请求,用于网站迁移、URL更改等

1.1.1 地址重写(Rewrite)

地址重写(URL Rewriting)是指在服务器内部修改请求的URL,而不通知客户端。当请求到达服务器时,服务器根据预先定义的规则将原始URL修改为目标URL,然后使用修改后的URL来处理请求。客户端并不知道URL已经被修改,因为客户端只接收到最终处理结果

特性描述
浏览器地址变化不会涉及客户端的重定向,因此浏览器的地址栏不会显示新的URL
请求次数通常只产生一次请求:原始请求被服务器内部重写,不会产生额外的客户端请求
路径要求重写到的页面不一定需要是一个完整的路径,可以在服务器内部进行路径的修改
属性传递由于地址重写是服务器内部的行为,request 范围内的属性可以直接传递给新页面
速度由于不涉及客户端的重定向,速度通常较快

1.1.2 地址重定向(Redirection)

地址重定向(Redirection)是指服务器接收到请求后,返回一个状态码(通常是 3xx 系列状态码),指示客户端使用新的 URL 重新发送请求。客户端接收到重定向响应后,会使用新的 URL 发送新的请求。这个过程对客户端是可见的,因为客户端的浏览器地址栏会显示新的 URL

特性描述
浏览器地址变化通常涉及客户端的重定向,因此浏览器的地址栏会显示新的URL
请求次数通常会产生两次请求:第一次是原始请求,第二次是重定向后的请求
路径要求重定向到的页面通常需要是一个完整的路径,因为客户端需要使用新的URL重新发送请求
属性传递由于重定向涉及两次请求,request 范围内的属性不能直接传递给新页面
速度由于涉及客户端的重定向,速度通常较慢

1.2 set指令

set指令用于设置一个新的变量

语法默认值位置
set $variable value;server、location、if
参数描述
variable变量的名称,该变量名称要用"$"作为变量的第一个字符,且不能与Nginx服务器预设的全局变量同名
value变量的值,可以是字符串、其他变量或者变量的组合等

1.3 Rewrite功能常用的全局变量

全局变量说明
$args存储了请求URL中的查询字符串。例如,在http://192.168.200.133:8080?arg1=value1&arg2=value2中,$args的值为"arg1=value1&arg2=value2"。与$query_string功能相同
$http_user_agent存储了用户访问服务时的用户代理信息。如果是通过浏览器访问,通常会记录浏览器的类型和版本信息
$host存储了访问服务器的server_name值,即主机名
$document_uri存储了当前访问地址的URL部分。例如,在http://192.168.200.133/server?id=10&name=zhangsan中,$document_uri的值为"/server"。它与$uri功能相同
$document_root存储了当前请求对应location的root值,即文档根目录。如果未设置,默认指向Nginx自带的html目录所在位置
$content_length存储了请求头中的Content-Length的值,表示请求体的长度
$content_type存储了请求头中的Content-Type的值,表示请求体的媒体类型
$http_cookie存储了客户端发送的cookie信息。可以通过add_header Set-Cookie 'cookieName=cookieValue'来添加或修改cookie数据
$limit_rate存储了Nginx服务器对网络连接速率的限制值,即limit_rate指令设置的值。默认为0,表示不限制
$remote_addr存储了客户端的IP地址
$remote_port存储了客户端与服务端建立连接时使用的端口号
$remote_user存储了客户端的用户名,通常在启用认证模块时获取
$scheme存储了访问协议,如"http"或"https"
$server_addr存储了服务端的IP地址
$server_name存储了客户端请求到达的服务器的名称
$server_port存储了客户端请求到达的服务器的端口号
$server_protocol存储了客户端请求使用的协议版本,例如"HTTP/1.1"
$request_body_file存储了发给后端服务器的本地文件资源的名称。如果请求体被保存到文件中,这个变量将包含该文件的路径
$request_method存储了客户端的请求方法,如"GET"、"POST"等
$request_filename存储了当前请求的资源文件在服务器上的路径名
$request_uri存储了当前请求的完整URL,包括查询字符串。例如,在http://192.168.200.133/server?id=10&name=zhangsan中,$request_uri的值为"/server?id=10&name=zhangsan"

1.4 if指令

if指令用来支持条件判断,并根据条件判断结果选择不同的Nginx配置

语法默认值位置
if (condition) {…}server、location

condition为判定条件,可以支持以下写法

1.4.1 变量名

如果变量名对应的值为空或者是0,if指令都判断为false,其他条件为true

if ($param){}

1.4.2 比较变量和字符串是否相等

注意:字符串不需要添加引号

使用=!=比较变量和字符串是否相等,满足条件为true,不满足为false

if ($request_method = POST){return 405;
}

1.4.3 取反

!表示对if指令中的表达式的结果取相反值

1.4.4 使用正则表达式对变量进行匹配

注意:正则表达式字符串一般不需要加引号,但是如果字符串中包含}或者;等字符时,就需要把引号加上

使用正则表达式对变量进行匹配,匹配成功返回true,否则返回false

  • ~代表匹配正则表达式过程中区分大小写
  • ~*代表匹配正则表达式过程中不区分大小写
if ($http_user_agent ~ MSIE) {# $http_user_agent的值中是否包含MSIE字符串,如果包含则返回true
}

1.4.5 判断请求的文件是否存在

判断请求的文件是否存在使用-f!-f

当使用-f时,如果请求的文件存在返回true,不存在返回false

if (-f $request_filename) {# 判断请求的文件是否存在
}if (!-f $request_filename) {# 判断请求的文件是否不存在
}

1.4.6 判断请求的目录是否存在

判断请求的目录是否存在使用-d!-d

当使用-d时,如果请求的目录存在,返回true,如果目录不存在,返回false

1.4.7 判断请求的目录或者文件是否存在

判断请求的目录或者文件是否存在使用-e!-e

当使用-e时,如果请求的目录或者文件存在时,返回true,否则返回false

1.4.8 判断请求的文件是否可执行

判断请求的文件是否可执行使用-x!-x

当使用-x,如果请求的文件可执行,返回true,否则返回false

1.5 break指令

break指令指令用于中断当前相同作用域中的其他Nginx配置

语法默认值位置
break;server、location、if

在 Nginx 配置文件中,break 指令用于终止当前上下文中的处理,并直接跳出该上下文

  • if 块中,break 指令可以用来在条件满足时立即终止 if 块的执行,并跳到 if 块之后的代码继续执行
  • location 块中,break 指令可以用来终止当前 location 块的执行,并跳出该 location 块。控制权将返回到外层的 server 块,并继续匹配其他 location
  • server 块中,break 指令可以用来终止当前 server 块的执行,并跳出该 server 块。控制权将返回到外层的 httpstream 块,并继续匹配其他 server
server {listen 80;server_name 127.0.0.1;location /admin {# 只有管理员才能访问 /admin 路径auth_basic "Admin Area";auth_basic_user_file /etc/nginx/htpasswd;# 如果认证失败,则终止处理并返回 401 错误if ($auth_status = 401) {break;}# 其他处理指令}location / {# 其他路径的处理指令}}

1.6 return指令

在return指令之后的所有Nginx配置都是无效的

return指令指令用于完成对请求的处理,直接向客户端返回响应状态代码

语法默认值位置
return code [text];
return code URL;
return URL;
server、location、if
参数说明
code返回给客户端的 HTTP 状态代码
text返回给客户端的响应体内容,支持变量的使用
URL返回给客户端的 URL 地址

1.7 rewrite指令

rewrite指令可以通过使用正则表达式来改变URL

语法默认值位置
rewrite regex replacement [flag];server、location、if
  1. regex:用来匹配URL的正则表达式

  2. replacement:匹配成功后,用于替换URL中被截取内容的字符串。如果该字符串是以"http://"或者"https://"开头的,则不会继续向下对URL进行其他处理,而是直接返回重写后的URL给客户端

  3. flag:用来设置rewrite指令对URL的处理行为,可选值如下

    • last:将控制权转移给下一个 location 块,通常用于将请求转发到不同的 location 处理
    • break:终止当前 location 块中的处理,并返回重写后的 URL。如果没有任何 location 块匹配,则返回 404 错误
    • redirect:将重写后的 URL 返回给客户端,并使用 302 临时重定向状态码
    • permanent:将重写后的 URL 返回给客户端,并使用 301 永久重定向状态码

使用Nginx的rewrite指令时,如果重写的replacement(替换后的URL)以http://https://开头,意味着你希望客户端重定向到一个新的完整URL,而不是在服务器内部处理这个请求。在这种情况下,Nginx会直接返回一个HTTP重定向响应给客户端

1.8 rewrite_log指令

rewrite_log指令用于开启URL重写日志的输出功能

语法默认值位置
rewrite_log on|off;rewrite_log off;http、server、location、if

开启rewrite_log指令后,与URL重写相关的日志将以notice级别输出到error_log指令配置的日志文件中

2. Rewrite案例实战

视频教程:09-Nginx的rewrite案例之域名跳转


视频教程中用的是Linux操作系统,本文演示的是Windows操作系统,整体步骤相差不多

2.1 域名跳转

2.1.1 问题分析

大家都知道,如果我们想访问京东网站,可以输入www.jd.com,其实我们输入www.360buy.com其实也都能访问到京东网站,这个其实是因为京东刚开始的时候域名就是www.360buy.com,后面由于各种原因把自己的域名换成了www.jd.com

虽然说域名变了,但是对于以前只记住了www.360buy.com的用户来说,我们如何把这部分用户也迁移到我们的新域名上呢?针对这个问题,我们就可以使用Nginx中Rewrite的域名跳转功能来解决

2.1.2 准备工作

准备三个域名


Linux操作环境

vim /etc/hosts

Windows操作系统(修改hosts文件需要管理员权限)

C:\Windows\System32\drivers\etc\hosts

将以下内容粘贴到hosts文件后保存hosts文件(因为域名要收取一定的费用,我们通过修改hosts文件来制作一些虚拟域名)

127.0.0.1   www.itcast.cn
127.0.0.1   www.itheima.cn
127.0.0.1   www.itheima.com

2.1.3 具体实现

在nginx.conf文件中添加以下内容

server {listen 80;server_name www.itcast.cn;location / {default_type text/html;return 200 '<h1>Welcome to itcast!</h1>';}
}server {listen 80;# 通过Rewrite将www.ithema.com和www.itheima.cn的请求跳转到www.itcast.cnserver_name www.itheima.com www.itheima.cn;rewrite ^/ http://www.itcast.cn;
}

保存nginx.conf文件后运行以下指令重载配置文件

nginx -s reload

接着在浏览器访问www.itcast.cn网址,修改了哪台机器的hosts的文件,就用哪台电脑的浏览器访问

www.itcast.cn

如果在浏览器看到以下内容,就说明hosts文件修改成功了,Nginx的配置文件也成功重载了

如果在浏览器访问www.itcast.cn网址后跳转到了传智播客的官网,可能是浏览器最近访问过www.itcast.cn网址,浏览器有对应的DNS缓存,按下CTRL + SHIFT + DELETE快捷键清除浏览器缓存后再次访问就可以了

在这里插入图片描述

接着分别访问www.itheima.cn网址和www.itheima.com网址,如果浏览器的地址栏都能够成功跳转到www.itcast.cn,而且都能够看到以上的Welcome to itcast!界面,就说明域名跳转功能成功实现了

如果在浏览器访问www.itheima.com网址后跳转到了传智播客的官网,可能是浏览器最近访问过www.itheima.com网址,浏览器有对应的DNS缓存,按下CTRL + SHIFT + DELETE快捷键清除浏览器缓存后再次访问就可以了

www.itheima.cn
www.itheima.com

2.1.4 如何在域名跳转的过程中保留请求原始的URL路径

在这里插入图片描述

如果直接通过rewrite ^/ http://www.itcast.cn;指令实现域名跳转,原始的URL路径是不会保留的(请求携带的参数会保留)

例如,如果访问www.itheima.cn/user/findById?id=1网址,域名跳转后浏览器的地址栏会变成www.itcast.cn?id=1,我们需要借助正则表达式来解决这个问题


修改nginx.conf文件中与域名跳转相关的配置

server {listen 80;# 通过Rewrite将www.ithema.com和www.itheima.cn的请求跳转到www.itcast.cnserver_name www.itheima.com www.itheima.cn;# 将请求重定向到www.itcast.cn的同时保留原始的URL路径rewrite ^(.*) http://www.itcast.cn$1;
}

保存nginx.conf文件后运行以下指令重载配置文件

nginx -s reload

再次访问www.itheima.cn网址,并且在路径后添加URL

www.itheima.cn/user/findById?id=1

在这里插入图片描述

可以看到,浏览器的地址栏能够成功跳转到www.itcast.cn,而且请求原始的URL路径也保留下来了

2.2 域名镜像

2.2.1 概念解释

域名镜像,也称为网站镜像,是一种将相同内容的网站部署到多个服务器上的技术。这些服务器通常位于不同的地理位置,并使用不同的URL进行访问。其中,一个服务器上的网站被称为主站,而其他服务器上的网站则被称为镜像网站

镜像网站可以看作是主站的一个备份节点,它们在内容上与主站完全相同,但可能具有不同的访问速度和性能


域名镜像的主要优点包括:

  • 加快响应速度:通过将网站内容分发到多个地理位置,用户可以从最近的服务器加载页面,从而减少加载时间,提高访问速度
  • 平衡流量负载:当主站面临高流量负载时,镜像网站可以分担部分流量,防止服务器过载,提高网站的可用性和稳定性
  • 解决网络限制:在某些地区或网络环境下,可能存在对特定域名的封锁或限制。通过使用镜像网站,用户可以从未被封锁的URL访问相同的内容
  • 容错和备份:镜像网站可以作为主站的备份,当主站出现故障或维护时,用户仍然可以通过镜像网站访问内容,确保服务的连续性

2.2.2 具体实现

在域名跳转案例中,访问www.itheima.com和 www.itheima.cn都能跳转到www.itcast.cn,那么我们可以认为www.itcast.cn主域名,而www.itheima.com和 www.itheima.cn就是我们所说的镜像域名

如果我们不想把整个网站做镜像,只想为其中某一个子目录下的资源做镜像,我们可以在location块中配置rewrite功能

server {listen          80;server_name     www.itheima.cn www.itheima.com;location /user {rewrite ^/user(.*)$ http://www.itcast.cn$1;}location /emp {default_type text/html;return 200 '<h1>Emp</h1>';}
}

重载nginx.conf配置文件后使用浏览器测试是否生效

www.itheima.cn/user/findById?id=1
www.itheima.cn/emp/findById?id=1

在这里插入图片描述

2.3 独立域名

2.3.1 问题分析

一个完整的项目包含多个模块,比如购物网站有商品搜索模块、商品详情模块和购物车模块等,我们如何为每一个模块设置独立的域名呢


需求如下

模块访问地址
商品搜索模块search.itcast.com:81
商品详情模块item.itcast.com:82
商品购物车模块cart.itcast.com:83

2.3.2 准备工作

准备三个域名


Linux操作环境

vim /etc/hosts

Windows操作系统(修改hosts文件需要管理员权限)

C:\Windows\System32\drivers\etc\hosts

将以下内容粘贴到hosts文件后保存hosts文件(因为域名要收取一定的费用,我们通过修改hosts文件来制作一些虚拟域名)

127.0.0.1   www.search.itcast.com
127.0.0.1   www.item.itcast.com
127.0.0.1   www.cart.itcast.com

2.3.3 具体实现

在nginx.conf文件中添加以下内容

server {listen 81;server_name search.itcast.com;rewrite ^(.*) http://www.itcast.cn/search$1;
}server {listen 82;server_name item.itcast.com;rewrite ^(.*) http://www.itcast.cn/item$1;
}server {listen 83;server_name cart.itcast.com;rewrite ^(.*) http://www.itcast.cn/cart$1;
}

接着在浏览器中分别访问以下三个域名

www.search.itcast.com:81
www.item.itcast.com:82
www.cart.itcast.com:83

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


2.4 目录自动添加"/"

我们通过以下例子来演示问题

server {listen       8082;server_name  localhost;location /heima {root   html;index  index.html;}
}

通过http://192.168.200.133:8082/heima访问和通过http://192.168.200.133:8082/heima/访问有什么区别呢


如果不加斜杠,Nginx服务器内部会自动做一个301的重定向,根据有一个名叫server_name_in_redirect on|off;的指令来决定重定向的地址


如果server_name_in_redirect指令设置为on

  • 重定向的地址为: http://server_name:8082/目录名/;
  • http://localhost:8082/heima/

如果server_name_in_redirect指令设置为off

  • 重定向的地址为: http://原URL中的域名:8082/目录名/;
  • http://192.168.200.133:8082/heima/

如果访问http://192.168.200.133:8082/heima时不加斜杠,那么按照上述规则,如果指令server_name_in_redirect设置为on,则301重定向后地址变为http://localhost:8082/heima/

如果指令server_name_in_redirect设置为off,则301重定向后地址变为http://192.168.200.133:8082/heima/

指令server_name_in_redirect设置为off时是正常的,设置为on时有问题


注意server_name_in_redirect指令在Nginx的0.8.48版本之前默认都是on,后来改成了off,所以使用较新版本的Nginx时不需要考虑这个问题,但是如果是0.8.48以前的版本并且server_name_in_redirect指令设置为on,我们需要通过rewrite来解决这个问题

我们可以使用rewrite功能为末尾没有斜杠的URL自动添加一个斜杠

server {# 监听80端口listen 80;# 设置服务器名称为localhostserver_name localhost;# 启用服务器名称用于重定向server_name_in_redirect on;# 匹配以/heima开头的请求location /heima {# 检查请求的文件名是否存在if (-d $request_filename){# 如果存在,重写URL,确保路径以斜杠结尾rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;}}
}

2.5 合并目录

2.5.1 问题分析

搜索引擎优化(SEO,Search Engine Optimization)是一种利用搜索引擎的搜索规则来提高网站在有关搜索引擎内排名的方式

我们在创建自己的站点时,可以通过很多种方式来提高网站在有关搜索引擎内的排名,其中有一项就是URL的目录层级一般不要超过三层


如果URL的目录层级超过三层,不仅利于搜索引擎的搜索,也给客户端的输入带来了负担,但是如果将所有的文件放在一个目录下又会导致文件资源管理混乱,并且访问文件的速度也会随着文件增多而慢下来,这两个问题是相互矛盾的,那么使用rewrite如何解决上述问题

举例,网站中有一个资源文件的访问路径是 /server/11/22/33/20.html,也就是说20.html存在于第4级目录下,如果想要访问该资源文件,客户端的URL地址就要写成 http://192.168.200.133/server/11/22/33/20.html,但是这个URL是非常不利于SEO搜索引擎优化的,同时客户端也不好记

2.5.2 具体实现

我们可以进行如下配置

server {# 监听8083端口listen 8083;# 设置服务器名称为localhostserver_name localhost;# 定义一个location块,用于处理以/server开头的请求location /server {# 重写规则,将/server-XXXX-XXXX-XXXX-XXXX.html格式的URL重写为/server/1/2/3/4.html# 其中,([0-9]+)表示匹配一个或多个数字,后面的([0-9]+)同理# 重写后的URL中的1/2/3/4分别对应原始URL中的四个数字组rewrite ^/server-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /server/$1/$2/$3/$4.html last;root /path/to/your/document/root;index index.html index.htm;}
}

这样一来,客户只需要访问http://www.web.name/server-11-22-33-20.html就可以访问到20.html页面了,这也充分利用了rewrite指令支持正则表达式的特性

2.6 防盗链

之前我们已经介绍过防盗链相关的知识(参考我的另一篇博文:),在rewrite中的防盗链和之前讲的原理其实都是一样的,只不过通过rewrite可以将防盗链的功能进行完善下

当出现防盗链的情况时,我们可以使用rewrite将请求转发到自定义的一张图片和页面,给用户比较好的提示信息

# 定义一个location块,用于处理以/images开头的请求
location /images {# 验证请求的来源referrer,允许none、blocked以及来自www.baidu.com的请求valid_referers none blocked www.baidu.com;# 如果referrer验证失败if ($invalid_referer) {# 返回403禁止访问状态码# return 403;# 将请求重定向到/images/forbidden.png,并停止处理后续的请求rewrite ^/ /images/forbidden.png break;}# 设置根目录为html目录root html;
}

http://www.hkcw.cn/article/pONBauOkVm.shtml

相关文章

王文杰改写中国男子10000米纪录 刷新历史突破28分钟大关

2025年5月31日,在日本体育大学长距离竞技会兼第15回NGC田径赛中,中国男子选手王文杰以27分48秒68的成绩冲过万米终点线,将原全国纪录大幅提升20秒。作为李宁签约选手,王文杰强势改写了中国男子10000米历史。这次突破意义重大,标志着中国男子万米成绩首次突破28分钟大关,跻…

演出服遭退单 商家最大笔亏近8000元 商家贴标签防退货

去年“六一”儿童节,商家投诉表演服被大量退货的事件频登热搜。今年临近“六一”,不少商家在社交平台上分享防范技巧。山东菏泽的周女士从事童装生意已有10年,她也是其中之一。5月29日,周女士表示,去年六一儿童节,某学校购买了300多套演出服,但节后全部退回。退回的衣物…

MySQL 数据库空间使用大小查询

以下是 MySQL 数据库空间大小查询与管理的常用方法&#xff0c;基于最新实践整理&#xff1a; 一、查询数据库空间大小 1. 查看所有数据库空间 SELECT table_schema AS 数据库, SUM(table_rows) AS 记录数, SUM(TRUNCATE(data_length/1024/1024,2)) AS 数据容量(MB), …

用calibredrv提取版图中指定类型cell

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 现在有一个gds,其中的bump位置信息是我们需要的,如何从现有的gds中提取我们需要的部分呢? 需要用到工具calibredrv,如果数量少,可以用图形界面操作,方法如下: 01 打开gds calibredrv -m inp…

龙舟赛现卡点翻船 刚过线就侧翻 救援迅速无人受伤

端午佳节,山东济南大明湖景区举行了一场盛大的龙舟赛,吸引了众多游客前来观赛。上午9时39分许,两只龙舟敲鼓出发进行比拼。然而比赛刚开始不久,围观人群中就传来呼声,一艘龙舟翻船了,有人感叹“刚开始,就结束了”。记者在现场看到,翻船的是落后的那只龙舟,但船员们都穿…

兵马俑3号坑已可正常参观 游客破坏文物事件后依旧开放

西安市公安局临潼分局官方微博于5月31日通报,2025年5月30日下午5时30分左右,一名30岁的男子孙某在参观兵马俑景区时,翻越遗址坑护栏及防护网跳入三号坑内推拉陶俑,导致两尊铠甲武士俑(二级文物)受到不同程度的损坏。目前,孙某已被公安机关控制,调查发现他患有精神疾病,…

[yolov11改进系列]使用ConvNeXtV2替换backbone用于增强特征学习和多样性的python源码+训练源码

【ConvNeXtV2介绍】 在介绍 ConvNeXt V2 之前&#xff0c;让我们对 ConvNeXt 做一下简单的回顾&#xff1a;ConvNeXt 同样是 Meta AI 的工作&#xff0c;它的 motivation 是重新审视设计空间&#xff0c;测试纯卷积神经网络&#xff08;ConvNet&#xff09;的极限&#xff0c;…

持续学习新突破!登上nature!

强化学习之父在Nature发表持续学习新成果!《Nature》杂志最新刊登了一篇名为《Loss of plasticity in deep continual learning》的研究论文&#xff0c;标志着持续学习领域的一个新里程碑。这项研究提出了一种创新算法一一持续反向传播(Continual Backpropagation)&#xff0c…

兵马俑修复曾被指需要半年时间 实际难度远超预期

5月30日,陕西西安秦始皇兵马俑博物馆内发生了一起意外事件。一名男子进入三号坑中,躺在地面上,旁边有倒下的陶俑以及陶俑残片。专家表示,损坏的兵马俑修复起来非常困难,甚至比刚出土时的修复和拼接还要难。苏州考古博物馆馆长、苏州考古所所长程义解释说,兵马俑刚被发掘出…

“内鬼”李卓勋任上被查 涉嫌严重违纪违法

黑龙江省哈尔滨市纪委监委第九审查调查室主任李卓勋因涉嫌严重违纪违法,正在接受纪律审查和监察调查。这一消息由“清廉龙江”于5月30日发布。李卓勋出生于1973年11月,是黑龙江双城人。他于1994年6月参加工作,并在1997年6月加入中国共产党。李卓勋毕业于省委党校法律专业,在…

在哈佛演讲的25岁中国女生发声 签证不确定性影响未来规划

5月30日,在哈佛大学毕业典礼上,中国学生蒋雨融穿着中国传统服饰发表了动情演讲。25岁的蒋雨融来自青岛,获得了哈佛大学国际发展方向的公共行政硕士学位。她提到,特朗普政府威胁遣返学生签证持有者,给她的未来带来了极大不确定性。蒋雨融开始考虑在海外从事国际发展工作。她…

vm文件传输

1、安装VMware Tool工具&#xff0c;然后直接拖拉文件进虚拟机里(menu->vn->)。 2、安装VMware Tool工具后设置共享目录。 3、Serv-Uflashfxp 架设FTP服务器&#xff0c;作为虚拟机与主机之间传输文件。

媒体:欧冠决赛边路是争夺焦点 双雄边路对决引发关注

北京时间6月1日凌晨,本赛季欧洲足坛的压轴大戏如期上演,国际米兰和巴黎圣日耳曼争夺欧冠冠军。两队赛季初都不被看好,但最终在慕尼黑安联球场相遇,双方都志在必得。登贝莱让所有欧冠对手头疼。边路成为比赛的关键点。尽管两队此前未曾交手,但这个赛季的欧冠征程已让彼此印…

XCTF-web-Cat

尝试输入127.0.0.1 尝试127.0.0.1;ls 试了很多&#xff0c;都错误&#xff0c;尝试在url里直接输入&#xff0c;最后发现输入%8f报错 发现了Django和DEBUG 根据Django的目录&#xff0c;我们使用进行文件传递 尝试?url/opt/api/database.sqlite3&#xff0c;找到了flag

YOLO12 改进|融入 Mamba 架构:高效视觉状态空间模块 EVSS 模块,模糊图像清晰化与特征增强, 提升小目标 多尺度

在图像去模糊领域&#xff0c;卷积神经网络&#xff08;CNNs&#xff09;因卷积操作的局部性和空间不变性&#xff0c;难以捕捉全局信息和空间变化特性&#xff1b;Transformer 虽能通过自注意力机制建模长距离依赖&#xff0c;但计算复杂度随分辨率呈二次增长&#xff0c;不适…

国足将全员奔赴印尼客场 备战关键之战

中国男足计划于6月2日下午从上海出发,前往印尼雅加达,准备参加6月5日18强赛第9轮对阵印尼队的关键比赛。随着出征时间临近,国足的训练量有所减少,重点转向针对对手的防守策略。教练组提醒队员们在客场比赛中要尽可能控球,同时减少犯规,以免被裁判抓住机会。此前受伤的汪士…

安装CUDA:AI大模型软件实现GPU加速(2025最新版)

本文主要介绍在Windows系统中&#xff0c;针对NVIDIA GeForce RTX 50 系列显卡&#xff0c;安装CUDA 12.9版本&#xff0c;实现大模型软件加速的方法。 NVIDIA GeForce RTX 旧版的显卡也都支持CUDA&#xff0c;只是版本有所不同。由于AMD的ROCm在Windows中运行需要WSL&#xff…

女子与被执行人姓名同音 屡被法院找 身份误认影响生活

近日,河北省廊坊市的颜女士反映,因身份信息被错列为一起经济纠纷案件被执行人,两年内多次被廊坊市广阳区人民法院核查、传唤。即使她多次澄清,执行局工作人员仍携民事判决书到其工作单位调查。颜女士认为法院工作人员执行程序违法,并对其身心、名誉造成损害。她通过多种方…

田径亚锦赛女子400米栏莫家蝶夺冠 完美逆袭亚洲纪录保持者

5月31日,2025年亚洲田径锦标赛迎来最后一个比赛日的争夺。广东跨栏名将莫家蝶在女子400米栏决赛中以55秒31的成绩夺得冠军,并创造了今年亚洲最佳成绩。这是中国田径继2005年黄潇潇之后时隔20年再度收获该项目的亚洲冠军。16岁的陈妤颉在女子200米决赛中以22秒97的成绩摘得金牌…

河北“狗王”海外爆火 土狗成全球网红

近日,河北承德一只名叫“长毛”的土狗因轻松拿捏犬群而全球爆红,被外国网友狂赞为“中国狗王”。其视频在YouTube、TikTok等平台累计播放量突破3亿次,全球社交平台上掀起了现象级传播浪潮,衍生出超过20种语言的二次创作内容。国外粉丝甚至将“长毛”的形象印在T恤上,并为它…