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

010302-oss_反向代理_负载均衡-web扩展2-基础入门-网络安全

文章目录

    • 1 OSS
      • 1.1 什么是 OSS 存储?
      • 1.2 OSS 核心功能
      • 1.3 OSS 的优势
      • 1.4 典型使用场景
      • 1.5 如何接入 OSS?
      • 1.6 注意事项
      • 1.7 cloudreve实战演示
        • 1.7.1 配置cloudreve连接阿里云oss
        • 1.7.2 常见错误
        • 1.7.3 安全测试影响
    • 2 反向代理
      • 2.1 正向代理和反向代理
      • 2.2 演示
      • 2.3 安全测试影响
    • 3 负载均衡
      • 3.1 负载均衡的核心作用
      • 3.2 常见负载均衡算法
      • 3.3 负载均衡的实现层级
      • 3.4 典型负载均衡方案
      • 3.5 关键实践要点
      • 3.6 应用场景示例
      • 3.7 常见挑战与解决
      • 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 核心功能

  1. 数据存储与管理
    • 支持文本、图片、音视频、日志等任意类型文件存储。
    • 提供文件夹(目录)模拟功能,可通过 Key(如 images/2023/photo.jpg)管理文件层级。
  2. 访问与控制
    • 权限管理:支持私有读写、公共读、自定义权限(如通过 STS 临时令牌授权)。
    • 访问方式
      • API/SDK:通过 RESTful API 或各类语言(Python/Java/Go 等)的 SDK 接入。
      • 控制台:通过网页管理文件。
      • 工具:OSS Browser、ossutil 等客户端工具。
  3. 数据处理
    • 图片处理:缩放、裁剪、水印、格式转换等。
    • 视频处理:转码、截图、水印等。
    • 数据加速:结合 CDN 实现全球加速访问。
  4. 数据安全
    • 加密存储:支持服务器端加密(SSE)、客户端加密。
    • 日志与监控:记录访问日志,监控存储桶(Bucket)流量、请求次数等。
    • 版本控制:防止文件误删或覆盖,支持历史版本恢复。

1.3 OSS 的优势

场景传统存储(如硬盘/NAS)OSS 存储
扩展性受硬件限制,扩容复杂按需自动扩展,无需手动管理
可靠性依赖单设备,易丢失数据多副本冗余,跨机房容灾
成本前期硬件投入高按使用量付费,无前期成本
访问速度本地网络延迟低结合 CDN 可全球加速
适用场景小规模、高频读写场景海量数据、低频率访问场景

1.4 典型使用场景

  1. 静态资源托管
    • 网站图片、CSS/JS 文件、视频等静态资源存储,结合 CDN 加速访问。
  2. 大数据分析
    • 存储海量日志、传感器数据,供 Hadoop/Spark 等大数据框架直接分析。
  3. 备份与归档
    • 冷数据(如数据库备份、监控录像)存储,支持低频访问存储(IA)和归档存储类型以降低成本。
  4. 云原生应用
    • 容器化应用、Serverless 函数(如 AWS Lambda)的持久化存储方案。

1.5 如何接入 OSS?

以阿里云 OSS 为例:

  1. 创建存储桶(Bucket)

    • 登录阿里云控制台,选择地域(Region)和存储桶名称(全局唯一)。
    • 设置存储类型(标准/低频/归档)、权限(如私有读写)。
  2. 上传/下载文件

    • 通过 API/SDK 或控制台上传文件,生成访问链接(需配置权限)。
    # 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!')
    
  3. 管理文件生命周期

    • 配置自动删除过期文件、转换存储类型等规则。

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、VPNNginx、HAProxy、Cloudflare、Traefik

核心区别总结

  1. 作用方向
    • 正向代理:客户端主动通过代理访问外部资源(代理代表客户端)。
    • 反向代理:服务端通过代理接收请求并分发(代理代表服务端)。
  2. 隐藏对象
    • 正向代理:隐藏客户端身份。
    • 反向代理:隐藏服务端身份。
  3. 典型应用
    • 正向代理:科学上网、内网访问外网。
    • 反向代理:负载均衡、CDN、API 网关。

2.2 演示

演示环境:windows server + BT宝塔面板+nginx

配置反向代理地址如下图所示:在这里插入图片描述

配置文件如下所示:

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 负载均衡的核心作用

  1. 流量分发
    将用户请求均匀分配到多台服务器,避免单点过载。
  2. 高可用性
    自动检测故障节点,将流量切换到健康服务器,保障服务连续性。
  3. 横向扩展
    通过增加服务器实例应对高并发,提升系统吞吐量。
  4. 优化资源利用
    根据服务器性能动态分配任务,避免资源浪费。

3.2 常见负载均衡算法

算法类型原理适用场景
轮询(Round Robin)按顺序依次分配请求服务器性能相近的无状态服务
加权轮询根据服务器权重分配流量(权重=性能)服务器性能差异较大的场景
最少连接(Least Connections)优先分配给当前连接数最少的服务器长连接场景(如数据库、WebSocket)
IP哈希根据客户端IP哈希值固定分配到某服务器需要会话保持(Session粘滞)
响应时间优先选择响应最快的服务器对延迟敏感的应用

3.3 负载均衡的实现层级

  1. 四层负载均衡(传输层,TCP/UDP)
    • 基于IP和端口进行流量转发(如LVS、F5)。
    • 高性能,适用于低延迟场景(如游戏、视频流)。
  2. 七层负载均衡(应用层,HTTP/HTTPS)
    • 解析应用层协议,支持基于URL、Cookie的路由(如Nginx、HAProxy)。
    • 功能强大,支持SSL终止、内容压缩、缓存等。

3.4 典型负载均衡方案

  1. 硬件负载均衡器
    • 专用设备(如F5 BIG-IP、Citrix ADC),性能高但成本昂贵。
  2. 软件负载均衡器
    • 开源工具(如Nginx、HAProxy、Envoy),灵活且易于扩展。
  3. 云服务负载均衡器
    • AWS ALB/NLB、阿里云SLB、腾讯云CLB,集成自动扩缩容和健康检查。
  4. DNS负载均衡
    • 通过DNS解析将域名映射到多个IP,简单但缺乏实时健康检测。

3.5 关键实践要点

  1. 健康检查(Health Check)
    • 定期检测后端服务器状态(如HTTP状态码、端口连通性)。
  2. 会话保持(Session Persistence)
    • 使用Cookie或IP哈希确保用户请求分配到同一服务器。
  3. 弹性伸缩(Auto Scaling)
    • 结合云平台动态增减服务器实例(如AWS Auto Scaling + ALB)。
  4. 安全防护
    • 在负载均衡层集成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基础负载均衡

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地址[CP/OL].

[2]站长工具-ping检测[CP/OL].

相关文章:

  • AI日报 · 2025年05月02日 | 再见GPT-4!OpenAI CEO 确认 GPT-4 已从 ChatGPT 界面正式移除
  • Linux——进程终止/等待/替换
  • # 前后端分离象棋对战项目开发记录
  • AE/PR插件 转场创建大师专业版 Transition Master Pro v2.0.2 Win+使用教程
  • 2025年- H21-Lc129-160. 相交链表(链表)---java版
  • Spring Boot 集成 Elasticsearch 的详细步骤
  • new的几种形式
  • Python 数据智能实战 (7):智能流失预警 - 融合文本反馈
  • 创意效率双提升,AIGC让增长更轻盈
  • Spring Boot中集成Guava Cache或者Caffeine
  • 第 1 篇:起点的选择:为何需要超越数组与链表?
  • 菲索旋转齿轮法:首次地面光速测量的科学魔术
  • 信息收集新利器:SSearch Chrome 插件来了
  • ROPE(旋转位置编码)简述
  • 当神经网络突破摩尔定律:探索大模型时代的算力新纪元
  • AimRT从入门到精通 - 03Channel发布者和订阅者
  • PDF智能解析与知识挖掘:基于pdfminer.six的全栈实现
  • 【论文阅读一】掌握高效阅读法,开启学术研究新旅程:S. Keshav教授论文阅读的三遍法
  • 华为OD机试真题 Java 实现【水库蓄水问题】
  • 杭电oj(1180、1181)题解
  • 爱彼迎:一季度总收入约23亿美元,将拓展住宿以外的新领域
  • 全国铁路旅客发送量连续3天同比增幅超10%,今日预计发送1800万人次
  • 国际观察|韩国在政局多重不确定性中迎接总统选举
  • 过去24小时中美是否就关税问题进行过接触?外交部:没有
  • 上海科创再出发:“造星”的城和“摘星”的人
  • 山西太原小区爆炸事故已造成17人受伤