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

文章目录

    • [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 核心功能

  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 复制代码
    # 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、VPN Nginx、HAProxy、Cloudflare、Traefik

核心区别总结

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

  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基础负载均衡

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\].

相关推荐
耀耀_很无聊18 分钟前
02_使用 AES 算法实现文件加密上传至阿里云、解密下载
java·spring boot·算法·阿里云·云计算·aes·oss
Johny_Zhao4 小时前
在Ubuntu Server上安装Checkmk监控系统
linux·人工智能·网络安全·信息安全·云计算·shell·yum源·系统运维·checkmk
一口一个橘子10 小时前
ctfshow web入门 web46
前端·web安全·网络安全
2501_9151063210 小时前
开发iOS App时,我常用的一款性能监控小工具分享
websocket·网络协议·tcp/ip·http·网络安全·https·udp
李匠202415 小时前
C++负载均衡远程调用学习之消息路分发机制
运维·c++·学习·负载均衡
观测云16 小时前
端到端观测分析:从前端负载均衡到后端服务
运维·前端·负载均衡
编程在手天下我有16 小时前
多维驱动:负载均衡何以成为现代系统架构的基石
系统架构·云计算·负载均衡·边缘计算·分布式系统·网络技术
爱思德学术19 小时前
IEEE会议:第十届网络安全与信息工程国际会议(ICCSIE 2025)
网络安全·密码学·信息与通信
Suckerbin1 天前
Pikachu靶场-目录遍历
学习·安全·网络安全