Nginx08-反向代理

news2024/11/24 0:38:30

零、文章目录

Nginx08-反向代理

1、概述

  • 关于正向代理和反向代理,我们在前面已经介绍过了,简而言之就是正向代理代理的对象是客户端,反向代理代理的是服务端,这是两者之间最大的区别。

  • Nginx即可以实现正向代理,也可以实现反向代理。

2、正向代理

(1)需求
  • 客户端服务器192.168.119.1使用服务器192.168.119.162做正向代理访问服务器192.168.119.161

image-20241004153920828

(2)服务器设置
  • 192.168.119.161:被访问服务器nginx设置如下
http {
    log_format main 'client send request=>clientIp=$remote_addr serverIp=$host';
	server{
		listen 80;
		server_name	localhost;
		access_log logs/access.log main;
		location / {
			root html;
			index index.html index.htm;
		}
	}
}
  • 192.168.119.162:作为正向代理服务器nginx配置如下
server {
    listen  82;
    resolver 8.8.8.8;   # 设置 DNS 的 IP,用来解析 proxy_pass 中的域名
    location / {
        proxy_pass http://$host$request_uri;   # proxy_pass 实现正向代理
    }
}
(3)客户端设置
  • 192.168.119.1:在客户端配置代理服务器,控制面板->Internet选项->连接->局域网设置->勾选为LAN使用代理服务器(这些设置不用于拨号或VPN连接)

image-20241004162043981

(4)客户端访问
  • 192.168.119.1:客户端访问代理服务器192.168.119.162,代理服务器会实现代理访问最终服务器192.168.119.161打印出日志如下
client send request=>clientIp=192.168.119.162 serverIp=192.168.119.161

3、反向代理

(1)概述
  • Nginx 反向代理模块的指令是由 ngx_http_proxy_module 模块进行解析,该模块在安装 Nginx 的时候已经自动加载到 Nginx 中了,接下来我们把反向代理中的常用指令如下:

    • proxy_pass:配置代理的服务器地址

    • proxy_set_header:转发给被代理服务器时,设置一些请求头信息

    • proxy_redirect:防止客户端可以看到被代理服务器的地址

  • 这里只介绍三个指令,关于反向代理的指令非常多,想要了解更多,请前往 Nginx 反向代理文档

image-20241004164014947

(2)proxy_pass
  • 该指令用来设置被代理服务器地址,可以是主机名称、IP 地址加端口号形式,没有默认值。
    • URL:为要设置的被代理服务器地址,包含传输协议(http,https://)、主机名称或IP地址加端口号、URI等要素。
语法proxy_pass URL;
默认值
位置location
  • 在服务器192.168.119.161配置nginx
http {
    # ......
    server {
        listen 8080;
        server_name localhost;
        location / {
            proxy_pass http://192.168.119.162;
        }
    }
    # ......
}
  • 客户端请求192.168.119.161的时候他会转发到192.168.119.162,服务器192.168.119.161就是代理服务器。
  • 问题:在编写 proxy_pass 的时候,后面的值要不要加 /?
server {
	listen 80;
	server_name localhost;
	location / {
        # 下面两个地址加不加斜杠,效果都一样,因为 location 后的 / 会添加在代理地址后面
		proxy_pass http://192.168.119.161;
		proxy_pass http://192.168.119.161/;
	}
}

server{
	listen 80;
	server_name localhost;
	location /server {
        # 下面两个地址必须加斜杠,因为 location 后的 /server 会添加在代理地址后面,第一个将没有 / 结尾
		#proxy_pass http://192.168.119.161;
		proxy_pass http://192.168.119.161/;
	}
}
# 上面的 location:当客户端访问 http://localhost/server/index.html
# 第一个 proxy_pass 就变成了 http://localhost/server/index.html
# 第二个 proxy_pass 就变成了 http://localhost/index.html 效果就不一样了。
(3)proxy_set_header
  • 该指令可以更改 Nginx 服务器接收到的客户端请求的请求头信息,然后将新的请求头发送给代理的服务器。默认值是发送代理服务器的地址和 close。
语法proxy_set_header field value;
默认值proxy_set_header Host $proxy_host;
proxy_set_header Connection close;
位置http、server、location
  • 访问过程:客户端访问代理服务器192.168.119.161,代理服务器对header进行处理转发给被代理服务器192.168.119.162
  • 代理服务器192.168.119.161的nginx配置如下
server {
    listen  8080;
    server_name localhost;
    location /server {           # 访问 /server 触发代理
        proxy_pass http://192.168.119.162:8080/;  # 配置被代理服务器的地址
        proxy_set_header username TOM;  # 发送 key 为 username,value 为 TOM 的请求头给服务器 B
    }
}
  • 被代理服务器192.168.119.162的nginx配置如下
server {
    listen  8080;
    server_name localhost;
    default_type text/plain;
    return 200 $http_username;    # 获取代理服务器发送过来的 http 请求头的 username 值
}
  • 客户端访问代理服务器,代理服务器在头信息加上了TOM,到服务器再返回给客户端。
(4)proxy_redirect
  • 该指令是用来重置头信息中的"Location"和"Refresh"的值。防止客户端可以看到被代理服务器的地址。
    • proxy_redirect redirect replacement:redirect(目标,被替换的地址)replacement(替换的地址)
    • proxy_redirect default:将location块的uri变量作为replacement,将proxy_pass变量作为redirect进行替换
    • proxy_redirect off:关闭proxy_redirect的功能
语法proxy_redirect redirect replacement;
proxy_redirect default;
proxy_redirect off;
默认值proxy_redirect default;
位置http、server、location
  • 为什么要用该指令?

    • 客户端通过 代理服务器A 找 服务器B 不存在的资源,B 不想返回报错页面,于是重定向到自己的欢迎页面地址并返回给 A,A 收到了页面和地址直接返回给客户端,浏览器返回的是服务器B的地址,这是重定向造成的。
    • 但是作为代理服务器A是用来封装隐藏服务器B的,不应该暴露服务器B 的地址,此时用到 proxy_redirect 指令,代理服务器A重置服务器 B 返回过来的『 Location 』和『 Refresh 』值,将两个值改为代理服务器 A 的某个地址,因为改为了代理服务器 A 的某个地址,所以代理服务器 A 根据这个地址又去获取理服务器 B 的欢迎页面地址,返回给客户端。
  • 代理服务器A 192.168.119.161的nginx配置如下

server {
	listen  8081;
	server_name localhost;
	location / {
		proxy_pass http://192.168.119.162:8081/;                       # 1.转发给服务器 B
		proxy_redirect http://192.168.119.162 http://192.168.119.161;  # 3.修改服务器 B 的地址为代理服务器A地址
	}
}

# 该 server 去请求服务器 B 的欢迎页面
server {
	listen  80;
	server_name 192.168.119.161;
	location / {
		proxy_pass http://192.168.119.162;  # 4.重新发送请求给服务器 B获取欢迎页面
	}
}
  • 被代理服务器B 192.168.119.162的nginx配置如下
server {
    listen  8081;
    server_name localhost;
    if (!-f $request_filename){
    	return 302 http://192.168.119.162;#  2.如果请求的资源不存在,则重定向到服务器 B 欢迎页
    }
}
(5)实战
  • 需求如下:服务器内容不一致

image-20241005110808496

  • 代理服务器192.168.119.161的nginx配置如下
# 代理服务器
server {
    listen  8082;
    server_name  localhost; 
    location /server1 {    
        proxy_pass http://192.168.119.162:9001/;   # 代理 server1
    }
    location /server2 {
        proxy_pass http://192.168.119.162:9002/;   # 代理 server2
    }
    location /server3 {
        proxy_pass http://192.168.119.162:9003/;   # 代理 server3
    }
}
  • 服务器配置:我们这里用端口号来区分,正常会使用不同IP不同服务器,如下nginx配置文件正常是三个
# 服务器
# server1
server {
    listen  9001;
    server_name  localhost;
    default_type text/html;
    return 200 '<h1>192.168.119.162:9001</h1>'
}
# server2
server {
    listen  9002;
    server_name  localhost;
    default_type text/html;
    return 200 '<h1>192.168.119.162:9002</h1>'
}
# server3
server {
    listen  9003;
    server_name  localhost;
    default_type text/html;
    return 200 '<h1>192.168.119.162:9003</h1>'
}
  • 访问验证
    • 客户端访问:http://192.168.119.161:8082/server1 最终返回:192.168.119.162:9001
    • 客户端访问:http://192.168.119.161:8082/server2 最终返回:192.168.119.162:9002
    • 客户端访问:http://192.168.119.161:8082/server3 最终返回:192.168.119.162:9003

4、反向代理安全控制

  • 问题:Nginx 反向代理是如何来提升 Web 服务器的安全呢?
  • 答案
    • 安全隔离
    • 使用SSL对流量进行加密
(1)安全隔离是什么
  • 通过代理分开了客户端到应用程序服务器端的连接,实现了安全措施。在反向代理之前设置防火墙,仅留一个入口供代理服务器访问。

image-20241005112728913

(2)使用SSL对流量进行加密
  • 相关SSL知识请参考http详解安全章节

  • SSL对流量进行加密:将我们常用的http请求转变成https请求,那么这两个之间的区别简单的来说就是https是身披SSL外壳的http。

  • HTTPS:是一种通过计算机网络进行安全通信的传输协议。它经由HTTP进行通信,利用SSL/TLS建立全通信,加密数据包,确保数据的安全性。

    • SSL(Secure Sockets Layer)安全套接层
    • TLS(Transport Layer Security)传输层安全
    • TLS和SSL在传输层和应用层对网络连接进行加密
    • http协议是明文传输数据,存在安全问题,而https是加密传输,相当于http+ssl,并且可以防止流量劫持。
  • Nginx使用SSL:需要添加一个模块--with-http_ssl_module,而该模块在编译的过程中又需要OpenSSL的支持,这个我们之前已经准备好了。

(3)Nginx添加SSL支持
  • 查看 configure arguments 的配置信息,拷贝出来
[root@localhost sbin]# nginx -V
nginx version: nginx/1.26.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
configure arguments: --prefix=/usr/local/nginx
  • 将原有 /usr/local/nginx/sbin/nginx 进行备份
cd /usr/local/nginx/sbin
mv nginx nginx.backup
  • 进入 Nginx 的安装目录,执行 make clean 清空之前编译的内容
cd /opt/nginx/core/nginx-1.26.2

make clean
  • 使用 configure 来配置参数,添加 ngx_http_ssl_module 模块,记得加上第(2)步拷贝的配置信息
./configure --with-http_ssl_module --prefix=/usr/local/nginx # 记得添加 configure arguments 后的数据
  • 通过 make 模板进行编译
make
  • 将 objs 下面的 nginx 可执行文件移动到 /usr/local/nginx/sbin
mv /opt/nginx/core/nginx-1.26.2/objs/nginx /usr/local/nginx/sbin
  • 在源码目录(安装包目录)下执行 make upgrade 进行升级,这个可以实现不停机添加新模块的功能
cd /opt/nginx/core/nginx-1.26.2
make upgrade
(4)Nginx中SSL相关指令
  • 该模块的指令都是通过 ngx_http_ssl_module 模块来解析的,我们上一步已经添加了。

  • 这里只介绍常用的几个指令,了解更多指令请前往 ngx_http_ssl_module 模块文档 。

  • **ssl:**用来在指定的服务器开启 HTTPS,默认关闭。可以使用 listen 443 ssl,这种方式更通用些。

语法ssl on | off;
默认值ssl off;
位置http、server
server{
	listen 443 ssl;
}

# ssl 默认监听的是 443 端口,所以和 ssl on 效果一致,因为能突出 sll 的监听端口,所以建议使用它。
  • ssl_certificate: 指令是为当前这个虚拟主机指定一个带有 PEM 格式证书的证书。
语法ssl_certificate file;
默认值
位置http、server
  • **ssl_certificate_key:**该指令用来指定PEM secret key文件的路径。
语法ssl_ceritificate_key file;
默认值
位置http、server
  • **ssl_session_cache:**该指令用来配置用于SSL会话的缓存。
    • off:禁用会话缓存,客户端不得重复使用会话。
    • none:禁止使用会话缓存,客户端可以重复使用,但是并没有在缓存中存储会话参数。
    • builtin:内置OpenSSL缓存,仅在一个工作进程中使用。
    • shared:所有工作进程之间共享缓存,缓存的相关信息用name和size来指定。同 name 的缓存可用于多个虚拟服务器,name 是允许缓存的数据名,size 是允许缓存的数据大小,以字节为单位。
语法ssl_sesion_cache off|none|[builtin[:size]] [shared:name:size]
默认值ssl_session_cache none;
位置http、server
ssl_session_cache builtin:1000 shared:SSL:10m;
# 10m 的 m 是兆。
  • **ssl_session_timeout:**开启SSL会话功能后,设置客户端能够反复使用储存在缓存中的会话参数时间。
语法ssl_session_timeout time;
默认值ssl_session_timeout 5m;
位置http、server
  • **ssl_ciphers:**指出允许的密码,密码指定为OpenSSL支持的格式。
    • 可以直接在 Linux 系统上使用 openssl ciphers 查看 OpenSSl 支持的格式。
语法ssl_ciphers ciphers;
默认值ssl_ciphers HIGH:!aNULL:!MD5;
位置http、server
  • **ssl_prefer_server_ciphers:**该指令指定是否服务器密码优先客户端密码,默认关闭,建议开启。
语法ssl_perfer_server_ciphers on|off;
默认值ssl_perfer_server_ciphers off;
位置http、server
(5)SSL证书生成方式1-使用阿里云购买
  • 登录阿里云,搜索SSL

image-20241005164950140

  • 进入SSL控制台,点击购买证书

image-20241005165051116

  • 选择免费证书购买

image-20241005165210914

  • 进入证书控制台,对购买的证书进行申请,申请证书需要购买域名进行证书的绑定,否则证书无法使用。

image-20241005165435848

  • 证书会变成待验证状态,然后变成待审批,审批完成就是已签发状态,就能下载证书了。

image-20241005165724709

  • 下载下来的证书就是一个压缩包,里面是两个文件,一个是key,一个是pem

image-20241005165840253

(6)SSL证书生成方式2-使用openssl生成证书
  • 先要确认当前系统是否有安装openssl
openssl version
  • 生成证书
# 创建 /root/cerr 目录并进入
mkdir /root/cert
cd /root/cert

# 指定加密算法和加密方式,生成 server.key
openssl genrsa -des3 -out server.key 1024

# 根据你注册的 server.key 密码,生成 server.csr 文件,生成后它会让你注册你的基本信息,因为是个人的,所以信息随便填写
openssl req -new -key server.key -out server.csr

# 备份 server.key
cp server.key server.key.org

# 重新生成 server.key 文件,并输入刚才注册的密码
openssl rsa -in server.key.org -out server.key

# 生成 server.crt 文件
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
  • 查看生成的证书
[root@localhost cert]# ll
总用量 16
-rw-r--r-- 1 root root 887 105 17:11 server.crt
-rw-r--r-- 1 root root 725 105 17:10 server.csr
-rw-r--r-- 1 root root 887 105 17:11 server.key
-rw-r--r-- 1 root root 963 105 17:11 server.key.org
(7)SSL配置案例
  • 在nginx配置文件中添加https的配置
server {
    listen       80;
    # ......
}
server {
    listen       443 ssl;		# 开启 SSL 功能
    server_name  localhost;     # 如果是购买的域名,这里加上该域名

    ssl_certificate      /root/cert/server.cert; # 生成的 cert 或者 pem 证书路径,根据需求修改
    ssl_certificate_key  /root/cert/server.key; # 生成的 key 证书路径,根据需求修改
    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m; 
    ssl_ciphers  HIGH:!aNULL:!MD5; # 表示使用的加密套件的类型
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;  # 表示使用的TLS协议的类型
    ssl_prefer_server_ciphers on;

    location / {
        root   html;
        index  index.html index.htm;
    }
}
  • 我们希望在直接访问域名的时候,自动加上前缀https而不是http,需要配置rewrite实现,在http的server进行如下配置
server {
    listen 443 ssl;
    server_name www.baidu.com;   # 如果是 www.baidu.com 发送请求
    
    location / {
        # ......
        rewrite ^(.*)$ https://www.baidu.com$1;  # 则改为 https 方式
        # ......
	}
    # ......
}

5、反向代理系统调优

(1)概述
  • 反向代理优化有两种方式

    • Buffer翻译过来是"缓冲"。
    • Cache翻译过来是"缓存"。
  • 缓存过程:客户端通过代理服务器向被代理服务器获取数据后,代理服务器在获取的数据存储在缓存「瓶子」里,客户端再次获取相同资源时,直接从缓存「瓶子」里获取数据,不需要向被代理服务器获取数据,减轻压力。

image-20241005210017486

  • 缓存和缓冲的异同
    • 相同点:
      • 两种方式都是用来提供IO吞吐效率,都是用来提升Nginx代理的性能。
    • 不同点:
      • 缓冲主要用来解决不同设备之间数据传递速度不一致导致的性能低的问题,缓冲中的数据一旦此次操作完成后,就可以删除
      • 缓存主要是备份,将被代理服务器的数据缓存一份到代理服务器,这样的话,客户端再次获取相同数据的时候,就只需要从代理服务器上获取,效率较高,缓存中的数据可以重复使用,只有满足特定条件才会删除
(2)Proxy Buffer 相关指令
  • **proxy_buffering:**该指令用来开启或者关闭代理服务器的缓冲区。
语法proxy_buffering on|off;
默认值proxy_buffering on;
位置http、server、location
  • **proxy_buffers:**该指令用来指定单个连接从代理服务器读取响应的缓存区的个数和大小。
    • number:缓冲区的个数
    • size:每个缓冲区的大小,缓冲区的总大小就是number*size
语法proxy_buffers number size;
默认值proxy_buffers 8 4k | 8K;(与系统平台有关)
位置http、server、location
  • **proxy_buffer_size:**该指令用来设置从被代理服务器获取的第一部分响应数据的大小。保持与proxy_buffers中的size一致即可,当然也可以更小。
语法proxy_buffer_size size;
默认值proxy_buffer_size 4k | 8k;(与系统平台有关)
位置http、server、location
  • **proxy_busy_buffers_size:**该指令用来限制同时处于BUSY状态的缓冲总大小。
语法proxy_busy_buffers_size size;
默认值proxy_busy_buffers_size 8k|16K;
位置http、server、location
  • **proxy_temp_path:**当缓冲区存满后,仍未被Nginx服务器完全接受,响应数据就会被临时存放在磁盘文件上,该指令设置文件路径。注意 path 最多设置三层。
语法proxy_temp_path path;
默认值proxy_temp_path proxy_temp;
位置http、server、location
  • **proxy_temp_file_write_size:**该指令用来设置磁盘上缓冲文件的大小。
语法proxy_temp_file_write_size size;
默认值proxy_temp_file_write_size 8K|16K;
位置http、server、location
(3)优化配置参考模板
proxy_buffering on;
proxy_buffers 4 64k;
proxy_buffer_size 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;

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

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

相关文章

【Unity】版本不一致且未升级资产,导致 Unity Sprite 2D 动画播放错误

自己的 Unity版本是 2022.3.45f1。目前折腾的这插件 2D Action RPG Engine: Mythril2D &#xff0c;推荐使用的 Unity 版本是 2021.3.18。 倒腾了这个 unity animation 动画半天&#xff0c;发现这个 animation sprite resolver 在导入动画帧的时候&#xff0c;一直都导入的是…

LeetCode 11 Container with Most Water 解题思路和python代码

题目&#xff1a; You are given an integer array height of length n. There are n vertical lines drawn such that the two endpoints of the ith line are (i, 0) and (i, height[i]). Find two lines that together with the x-axis form a container, such that the co…

【论文阅读】AUTOREGRESSIVE ACTION SEQUENCE LEARNING FOR ROBOTIC MANIPULATION

ABSTRACT 自回归模型在自然语言处理中取得了显著的成功。在这项工作中&#xff0c;我们为机器人操纵任务设计了一个简单而有效的自回归架构。我们提出了Chunking Causal Transformer&#xff08;cct&#xff09;&#xff0c;它扩展了因果关系transformers的下一个单标记预测 n…

Nginx07-静态资源访问

零、文章目录 Nginx07-静态资源访问 1、Nginx解决跨域问题 &#xff08;1&#xff09;同源策略 同源策略&#xff08;Same-Origin Policy&#xff09;是一个关键的网络安全概念&#xff0c;由Netscape公司在1995年引入&#xff0c;现在被所有现代浏览器所采用。它限制了从一…

基于JAVA的鲜花商城管理系统(源码+定制+讲解)鲜花商城管理系统、鲜花商城管理平台、鲜花商城信息管理、鲜花商城系统开发与应用、鲜花在线商城管理系统

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

毕业设计项目 深度学习安全帽佩戴检测(源码+论文)

文章目录 0 前言1 项目运行效果2 设计概要3 最后 0 前言 &#x1f525;这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师…

sqli-labs靶场第二关less-2

sqli-labs靶场第二关less-2 本次测试在虚拟机搭建靶场&#xff0c;从主机测试 1、输入?id1和?id2发现有不同的页面回显 2、判断注入类型 http://192.168.128.3/sq/Less-2/?id1’ 从回显判断多一个‘ &#xff0c;预测可能是数字型注入 输入 http://192.168.128.3/sq/Less…

Sharding 分页原理分析

优质博文&#xff1a;IT-BLOG-CN 如果业务上需要执行如下分页查询&#xff0c;Sharding-JDBC如何执行分页查询的&#xff1f; 官方文档 select * from student_time ORDER BY create_time ASC limit 1000, 5;Sharding-JDBC分页查询时在每个分表中都查询1005条数据&#xff0c…

【树结构与栈】中等力扣练习题

二叉树中和为目标值的路径 给你二叉树的根节点 root 和一个整数目标和 targetSum &#xff0c;找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。叶子节点 是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [5,4,8,11,null,13,4,7,2,null,null,5…

2024.10月7日- 非关系型数据库--- Redis

一、Redis介绍 Redis(Remote Dictionary Server)&#xff0c;即远程字典服务,也被人们称之为***结构化数据库*** 功能&#xff1a;把周期性数据持久化还能实现主从复制 是一个开源的用C语言编写的支持网络、基于内存、可持久化的日志型Key-Value数据库提供多种语言的API Re…

Facebook 正式推出了一项专为 Z 世代设计的全新改版

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

基于Springboot海宝海鲜餐厅系统JAVA|VUE|SSM计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解

源代码数据库LW文档&#xff08;1万字以上&#xff09;开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统&#xff1a;Window操作系统 2、开发工具&#xff1a;IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…

图文深入理解Oracle DB Scheduler(续)-调度的创建

List item 今天是国庆假期最后一天。窗外&#xff0c;秋雨淅淅沥沥淅淅下个不停。继续深宅家中&#xff0c;闲来无事&#xff0c;就多写几篇博文。 本篇承接前一篇&#xff0c;继续图文深入介绍Oracle DB Scheduler。本篇主要介绍调度的创建。 1. 创建基于时间的作业 • 可以…

详解三种常用标准化:Batch Norm Layer Norm RMSNorm

Normalization Normalization现在已经成了神经网络中不可缺少的一个重要模块了&#xff0c;并且存在多种不同版本的归一化方法&#xff0c;其本质都是减去均值除以方差&#xff0c;进行线性映射后&#xff0c;使得数据满足某个稳定分布&#xff0c;如下图所示&#xff1a;  …

开放式耳机是什么意思?分享几款适合各类运动佩戴的蓝牙耳机

其实目前有很多热爱运动的人士常常会陷入一个纠结之中&#xff0c;那就是在进行爬山、骑行、步行、跑步或者健身等各类运动的时候&#xff0c;到底佩戴什么样的蓝牙耳机才最为合适呢&#xff1f;那就我个人而言&#xff0c;我觉得开放式耳机无疑会是运动人士的救星。因为作为一…

OJ在线评测系统 微服务高级 网关跨域权限校验 集中解决跨域问题 拓展 JWT校验和实现接口限流降级

微服务网关跨域权限校验 集中的去解决一下跨域 这段代码是用来配置跨源资源共享&#xff08;CORS&#xff09;过滤器的。它创建了一个 CorsConfiguration 实例&#xff0c;允许所有方法和头部&#xff0c;并支持凭证&#xff08;如 Cookies&#xff09;。setAllowedOriginPat…

基于SSM+小程序的教育培训管理系统(教育3)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 基于SSM小程序的教育培训管理系统&#xff08;教育3&#xff09; 1、项目介绍 1、管理员权限操作的功能包括增删改查网课信息&#xff0c;教师信息&#xff0c;学生信息&#xff0c;试卷&#xff0c;…

多元化网络团队应对复杂威胁

GenAI、ML 和 IoT 等技术为威胁者提供了新的工具&#xff0c;使他们更容易针对消费者和组织发起攻击。 从诱骗受害者陷入投资骗局的Savvy Seahorse &#xff0c;到使用 ChatGPT 之类的程序感染计算机并阅读电子邮件的自我复制 AI 蠕虫&#xff0c;新的网络威胁几乎每天都在出现…

【机器学习】探索机器学习在医疗影像分析中的应用

1. &#x1f680; 引言1.1 &#x1f680; 医疗影像分析的现状与发展趋势1.2 &#x1f4dc; 机器学习在医疗影像分析中的核心概念1.3 &#x1f3c6; 医疗影像分析在临床应用中的作用 2. &#x1f50d; 医疗影像分析的演变与创新2.1 &#x1f31f; 医疗影像分析的发展历程2.2 &am…

SQl注入文件上传及sqli-labs第七关less-7

Sql注入文件上传 1、sql知识基础 secure_file_priv 参数 secure_file_priv 为 NULL 时&#xff0c;表示限制mysqld不允许导入或导出。 secure_file_priv 为 /tmp 时&#xff0c;表示限制mysqld只能在/tmp目录中执行导入导出&#xff0c;其他目录不能导出导入。 secure_fil…