文章目录
-
- [1 OSS](#1 OSS)
-
- [1.1 什么是 OSS 存储?](#1.1 什么是 OSS 存储?)
- [1.2 OSS 核心功能](#1.2 OSS 核心功能)
- [1.3 OSS 的优势](#1.3 OSS 的优势)
- [1.4 典型使用场景](#1.4 典型使用场景)
- [1.5 如何接入 OSS?](#1.5 如何接入 OSS?)
- [1.6 注意事项](#1.6 注意事项)
- [1.7 cloudreve实战演示](#1.7 cloudreve实战演示)
-
- [1.7.1 配置cloudreve连接阿里云oss](#1.7.1 配置cloudreve连接阿里云oss)
- [1.7.2 常见错误](#1.7.2 常见错误)
- [1.7.3 安全测试影响](#1.7.3 安全测试影响)
- [2 反向代理](#2 反向代理)
-
- [2.1 正向代理和反向代理](#2.1 正向代理和反向代理)
- [2.2 演示](#2.2 演示)
- [2.3 安全测试影响](#2.3 安全测试影响)
- [3 负载均衡](#3 负载均衡)
-
- [3.1 负载均衡的核心作用](#3.1 负载均衡的核心作用)
- [3.2 常见负载均衡算法](#3.2 常见负载均衡算法)
- [3.3 负载均衡的实现层级](#3.3 负载均衡的实现层级)
- [3.4 典型负载均衡方案](#3.4 典型负载均衡方案)
- [3.5 关键实践要点](#3.5 关键实践要点)
- [3.6 应用场景示例](#3.6 应用场景示例)
- [3.7 常见挑战与解决](#3.7 常见挑战与解决)
- [3.8 演示](#3.8 演示)
- 结语
1 OSS
OSS(对象存储服务)介绍
以阿里云 OSS(Object Storage Service)为例
1.1 什么是 OSS 存储?
OSS(Object Storage Service)是对象存储服务,由云服务商(如阿里云、AWS S3、腾讯云 COS 等)提供的一种海量、安全、低成本的云存储服务。
- 核心特点 :
- 对象存储:数据以对象(Object)形式存储,每个对象包含数据本身、元数据和唯一标识符(Key)。
- 无限扩展:支持海量数据存储,理论上容量无上限。
- 高可用性:数据跨多设备、多机房冗余存储,保障 99.9999999999%(12 个 9)的持久性。
- 低成本:按实际使用量付费(存储量、流量、请求次数等),无前期硬件投入。
1.2 OSS 核心功能
- 数据存储与管理
- 支持文本、图片、音视频、日志等任意类型文件存储。
- 提供文件夹(目录)模拟功能,可通过
Key
(如images/2023/photo.jpg
)管理文件层级。
- 访问与控制
- 权限管理:支持私有读写、公共读、自定义权限(如通过 STS 临时令牌授权)。
- 访问方式 :
- API/SDK:通过 RESTful API 或各类语言(Python/Java/Go 等)的 SDK 接入。
- 控制台:通过网页管理文件。
- 工具:OSS Browser、ossutil 等客户端工具。
- 数据处理
- 图片处理:缩放、裁剪、水印、格式转换等。
- 视频处理:转码、截图、水印等。
- 数据加速:结合 CDN 实现全球加速访问。
- 数据安全
- 加密存储:支持服务器端加密(SSE)、客户端加密。
- 日志与监控:记录访问日志,监控存储桶(Bucket)流量、请求次数等。
- 版本控制:防止文件误删或覆盖,支持历史版本恢复。
1.3 OSS 的优势
场景 | 传统存储(如硬盘/NAS) | OSS 存储 |
---|---|---|
扩展性 | 受硬件限制,扩容复杂 | 按需自动扩展,无需手动管理 |
可靠性 | 依赖单设备,易丢失数据 | 多副本冗余,跨机房容灾 |
成本 | 前期硬件投入高 | 按使用量付费,无前期成本 |
访问速度 | 本地网络延迟低 | 结合 CDN 可全球加速 |
适用场景 | 小规模、高频读写场景 | 海量数据、低频率访问场景 |
1.4 典型使用场景
- 静态资源托管
- 网站图片、CSS/JS 文件、视频等静态资源存储,结合 CDN 加速访问。
- 大数据分析
- 存储海量日志、传感器数据,供 Hadoop/Spark 等大数据框架直接分析。
- 备份与归档
- 冷数据(如数据库备份、监控录像)存储,支持低频访问存储(IA)和归档存储类型以降低成本。
- 云原生应用
- 容器化应用、Serverless 函数(如 AWS Lambda)的持久化存储方案。
1.5 如何接入 OSS?
以阿里云 OSS 为例:
-
创建存储桶(Bucket)
- 登录阿里云控制台,选择地域(Region)和存储桶名称(全局唯一)。
- 设置存储类型(标准/低频/归档)、权限(如私有读写)。
-
上传/下载文件
- 通过 API/SDK 或控制台上传文件,生成访问链接(需配置权限)。
python# Python SDK 示例(上传文件) from oss2 import Auth, Bucket auth = Auth('<AccessKey>', '<SecretKey>') bucket = Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'my-bucket') bucket.put_object('example.txt', 'Hello OSS!')
-
管理文件生命周期
- 配置自动删除过期文件、转换存储类型等规则。
1.6 注意事项
- 费用优化:根据访问频率选择合适的存储类型(标准/低频/归档)。
- 流量控制:外网下载可能产生流量费用,建议结合 CDN 或内网传输。
- 版本控制:开启版本控制避免误删文件。
- 安全性:避免使用公开读写权限,推荐通过临时令牌(STS)授权访问。
1.7 cloudreve实战演示
- 原理:内容分发
- 影响:
- 演示:软件地址见下面链接1
- 环境:window server + cloudreve + 阿里云oss
1.7.1 配置cloudreve连接阿里云oss
第一步 :启动应用,如下图所示,
第三步:阿里云oss新建bucket,配置AccessKey、SecretKey,如果已配置过,跳过该步骤继续第三步
第二步 :管理面板配置OSS存储策略,如下图所示,
第四步 :上传文件测试,成功长传如图所示,
1.7.2 常见错误
阿里云OSS回调错误(203: error status:301.)
- 临时解决方案:阿里云ecs服务器安全组临时添加允许所有来源所有类型的请求
1.7.3 安全测试影响
上传的文件或解析的文件均来自于oss资源,无法解析
- 修复上传安全
- 文件解析不一样
- 存在AccessKey隐患
2 反向代理
2.1 正向代理和反向代理
对比维度 | 正向代理 (Forward Proxy) | 反向代理 (Reverse Proxy) |
---|---|---|
定义 | 代理客户端向外部服务器发送请求,隐藏客户端身份。 | 代理服务器接收客户端请求,隐藏后端服务器身份。 |
位置 | 部署在客户端侧(如企业内网、用户设备)。 | 部署在服务端侧(如数据中心、云服务器)。 |
作用方向 | 客户端主动配置代理,代理代表客户端访问目标服务。 | 客户端无感知,代理直接接收请求并转发给后端服务。 |
隐藏对象 | 隐藏客户端的真实 IP 或身份。 | 隐藏后端服务器的真实 IP 或架构细节。 |
主要用途 | - 突破网络限制(如访问被屏蔽的网站) - 匿名访问 - 客户端缓存加速 | - 负载均衡 - 安全防护(如防 DDoS) - 服务端缓存加速 - SSL 终端卸载 |
典型场景 | - 企业内网用户通过代理访问外网 - VPN 或科学上网工具 | - 网站使用 Nginx 反向代理分发请求 - CDN 节点代理源站 |
配置方 | 由客户端主动配置(浏览器或系统设置)。 | 由服务器管理员配置,客户端无感知。 |
加密与安全 | 可能用于加密客户端到代理的通信(如 HTTPS)。 | 通常用于加密客户端到代理的通信,并保护后端服务器。 |
常见工具 | Squid、Shadowsocks、VPN | Nginx、HAProxy、Cloudflare、Traefik |
核心区别总结
- 作用方向
- 正向代理:客户端主动通过代理访问外部资源(代理代表客户端)。
- 反向代理:服务端通过代理接收请求并分发(代理代表服务端)。
- 隐藏对象
- 正向代理:隐藏客户端身份。
- 反向代理:隐藏服务端身份。
- 典型应用
- 正向代理:科学上网、内网访问外网。
- 反向代理:负载均衡、CDN、API 网关。
2.2 演示
演示环境:windows server + BT宝塔面板+nginx
配置反向代理地址如下图所示:
配置文件如下所示:
conf
location /
{
expires 12h;
if ($request_uri ~* "(php|jsp|cgi|asp|aspx)")
{
expires 0;
}
proxy_pass https://www.baidu.com;
proxy_set_header Host www.baidu.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
proxy_set_header Accept-Encoding "";
sub_filter_once off;
proxy_cache cache_one;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_valid 200 304 301 302 12h;
}
效果如下图所示:

2.3 安全测试影响
影响:访问目标只是一个代理,非真实应用服务器
tips:正向代理和反向代理都是解决访问不可达的问题,但由于反向代理中多出一个可以重定向解析的功能操作,导致反向代理站点指向和真实应用没有关系。
3 负载均衡
负载均衡(Load Balancing)是一种将网络流量、计算任务或数据请求合理分配到多个服务器或资源的技术,旨在提高系统性能、可靠性和资源利用率。以下是负载均衡的核心概念和应用解析:
3.1 负载均衡的核心作用
- 流量分发
将用户请求均匀分配到多台服务器,避免单点过载。 - 高可用性
自动检测故障节点,将流量切换到健康服务器,保障服务连续性。 - 横向扩展
通过增加服务器实例应对高并发,提升系统吞吐量。 - 优化资源利用
根据服务器性能动态分配任务,避免资源浪费。
3.2 常见负载均衡算法
算法类型 | 原理 | 适用场景 |
---|---|---|
轮询(Round Robin) | 按顺序依次分配请求 | 服务器性能相近的无状态服务 |
加权轮询 | 根据服务器权重分配流量(权重=性能) | 服务器性能差异较大的场景 |
最少连接(Least Connections) | 优先分配给当前连接数最少的服务器 | 长连接场景(如数据库、WebSocket) |
IP哈希 | 根据客户端IP哈希值固定分配到某服务器 | 需要会话保持(Session粘滞) |
响应时间优先 | 选择响应最快的服务器 | 对延迟敏感的应用 |
3.3 负载均衡的实现层级
- 四层负载均衡(传输层,TCP/UDP)
- 基于IP和端口进行流量转发(如LVS、F5)。
- 高性能,适用于低延迟场景(如游戏、视频流)。
- 七层负载均衡(应用层,HTTP/HTTPS)
- 解析应用层协议,支持基于URL、Cookie的路由(如Nginx、HAProxy)。
- 功能强大,支持SSL终止、内容压缩、缓存等。
3.4 典型负载均衡方案
- 硬件负载均衡器
- 专用设备(如F5 BIG-IP、Citrix ADC),性能高但成本昂贵。
- 软件负载均衡器
- 开源工具(如Nginx、HAProxy、Envoy),灵活且易于扩展。
- 云服务负载均衡器
- AWS ALB/NLB、阿里云SLB、腾讯云CLB,集成自动扩缩容和健康检查。
- DNS负载均衡
- 通过DNS解析将域名映射到多个IP,简单但缺乏实时健康检测。
3.5 关键实践要点
- 健康检查(Health Check)
- 定期检测后端服务器状态(如HTTP状态码、端口连通性)。
- 会话保持(Session Persistence)
- 使用Cookie或IP哈希确保用户请求分配到同一服务器。
- 弹性伸缩(Auto Scaling)
- 结合云平台动态增减服务器实例(如AWS Auto Scaling + ALB)。
- 安全防护
- 在负载均衡层集成WAF、DDoS防护(如Cloudflare、阿里云盾)。
3.6 应用场景示例
- Web服务:通过Nginx将HTTP请求分发到多台Tomcat服务器。
- 微服务架构:Kubernetes使用Ingress Controller实现服务间流量调度。
- 数据库读写分离:将读请求分配到多个从库,写请求指向主库。
- 全球加速:使用CDN和地理负载均衡将用户导向最近的节点。
3.7 常见挑战与解决
- 单点故障:部署负载均衡器集群(如Keepalived实现主备切换)。
- 性能瓶颈:使用DPDK(数据平面开发套件)优化网络包处理。
- 复杂路由逻辑:七层负载均衡结合API网关(如Kong、Traefik)。
3.8 演示
基于web服务,这里通过nginx将http请求分发到多台服务器
环境:windows server + BT宝塔面板 + Nginx
影响:有多个服务器加载服务,测试过程中存在多个目标情况
nginx基础负载均衡
nginx
http {
upstream backend_servers {
# 定义后端服务器列表
server 192.168.1.101:80;
server 192.168.1.102:80;
server 192.168.1.103:80;
}
server {
listen 80;
server_name example.com;
location / {
# 将请求代理到后端服务器组
proxy_pass http://backend_servers;
# 可选:设置代理头信息
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
结语
❓QQ:806797785
⭐️仓库地址:https://gitee.com/gaogzhen
⭐️仓库地址:https://github.com/gaogzhen
1\][cloudreve github地址](https://github.com/cloudreve/Cloudreve)\[CP/OL\]. \[2\][站长工具-ping检测](https://ping.chinaz.com/)\[CP/OL\].