通过Docker模拟搭建OSS反向代理场景

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
对象存储 OSS,恶意文件检测 1000次 1年
简介: 通过Docker模拟搭建OSS反向代理场景


需求场景


客户在公司内网想要访问OSS,可通过搭建以下网络架构进行代理访问



Docker模拟实验环境

预备实验材料:

1)构建容器内网  internal-net

2)指定内网创建容器:internal-serverA, internal-serverB  进行模拟上述架构图的服务器A和B(proxy)

3)预备公共读OSS bucket URL资源

http://<your-bucket-name>.oss-cn-hangzhou.aliyuncs.com/1.pdf


1.创建私有网络 internal-net

# docker network create --subnet=172.18.0.0/16 internal-net

2.docker 启动2个centos容器 搭建实验环境:

# docker run -id  --network internal-net --ip 172.18.0.101 --name internal-serverA  centos:centos7 /bin/bash 
# docker run -id -p 20021:20021 --network internal-net --ip 172.18.0.102 --name internal-serverB  centos:centos7 /bin/bash

注意:只能对自创建的网络,指定IP 运行


3.罗列创建的容器

$ docker ps
CONTAINER ID   IMAGE            COMMAND       CREATED         STATUS         PORTS                                  NAMES
b619ba980be3   centos:centos7   "/bin/bash"   3 minutes ago   Up 3 minutes   0.0.0.0:20021->20021/tcp               internal-serverB
0f649236191e   centos:centos7   "/bin/bash"   3 minutes ago   Up 3 minutes                                          internal-serverA


4.进入容器编辑反向代理

进入容器 internal-serverB:

$ docker exec -it b619ba980be3 /bin/bash


# yum -y install wget pcre-devel zlib-devel gcc gcc-c++ make openssl openssl-devel
# cd /opt
# wget http://nginx.org/download/nginx-1.22.0.tar.gz
# tar -zxvf nginx-1.22.0.tar.gz
# useradd -M -s /sbin/nologin nginx
# cd nginx-1.22.0/
# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module
# make && make install
# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
# vi /usr/local/nginx/conf/nginx.conf



配置一下反向代理server块:

server {
    listen 20021;
    server_name 172.18.0.102;
    location / {
        proxy_pass http://<your-bucket-name>.oss-cn-hangzhou.aliyuncs.com;
    }
}


启动nginx:

# nginx


5.进入容器 internal-serverA 验证代理

# docker exec -it b619ba980be3 /bin/bash

验证:

# curl -vo 1 'http://172.18.0.102:20021/1.pdf'

执行结果:

* About to connect() to 172.18.0.102 port 20021 (#0)
*   Trying 172.18.0.102...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Connected to 172.18.0.102 (172.18.0.102) port 20021 (#0)
> GET /1.pdf HTTP/1.1
> User-Agent: curl/7.29.0
> Host: 172.18.0.102:20021
> Accept: */*
> 
< HTTP/1.1 200 OK
< Server: nginx/1.22.0
< Date: Sun, 23 Oct 2022 02:43:02 GMT
< Content-Type: application/pdf
< Content-Length: 414779
< Connection: keep-alive
< x-oss-request-id: 6354AA367CF8423935D54257
< Accept-Ranges: bytes
< ETag: "462728323210DF31D6301F53395324AA-5"
< Last-Modified: Wed, 19 Oct 2022 01:37:22 GMT
< x-oss-object-type: Multipart
< x-oss-hash-crc64ecma: 1266571743596954436
< x-oss-storage-class: Standard
< x-oss-expiration: expiry-date="Thu, 20 Oct 2022 00:00:00 GMT", rule-id="9ba4a019-c7d1-4b07-b417-483a55f41a7f"
< x-oss-version-id: CAEQbhiBgMDk1Ma3nxgiIGVkMDUxNzE2YWI2YjRjYzViYjliOTA2ODFhZjdkZWJl
< x-oss-server-time: 96
< 
{ [data not shown]
100  405k  100  405k    0     0   949k      0 --:--:-- --:--:-- --:--:--  950k
* Connection #0 to host 172.18.0.102 left intact


实验代理成功。

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
2月前
|
物联网 数据处理 持续交付
Docker适合哪些场景
【10月更文挑战第18天】Docker适合哪些场景
|
2天前
|
存储 人工智能 开发工具
AI场景下的对象存储OSS数据管理实践
本文介绍了对象存储(OSS)在AI业务中的应用与实践。内容涵盖四个方面:1) 对象存储作为AI数据基石,因其低成本和高弹性成为云上数据存储首选;2) AI场景下的对象存储实践方案,包括数据获取、预处理、训练及推理阶段的具体使用方法;3) 国内主要区域的默认吞吐量提升至100Gbps,优化了大数据量下的带宽需求;4) 常用工具介绍,如OSSutil、ossfs、Python SDK等,帮助用户高效管理数据。重点讲解了OSS在AI训练和推理中的性能优化措施,以及不同工具的特点和应用场景。
28 10
|
2天前
|
弹性计算 人工智能 数据管理
AI场景下的对象存储OSS数据管理实践
本文介绍了ECS和OSS的操作流程,分为两大部分。第一部分详细讲解了ECS的登录、密码重置、安全组设置及OSSUTIL工具的安装与配置,通过实验创建并管理存储桶,上传下载文件,确保资源及时释放。第二部分则聚焦于OSSFS工具的应用,演示如何将对象存储挂载为磁盘,进行大文件加载与模型训练,强调环境搭建(如Conda环境)及依赖安装步骤,确保实验结束后正确清理AccessKey和相关资源。整个过程注重操作细节与安全性,帮助用户高效利用云资源完成实验任务。
38 10
|
2月前
|
JavaScript Docker Python
下个时代的开发工具-Nix:声明式的运行环境构建器、简单场景下的docker替身
Nix 是一个独特的包管理工具和构建系统,采用声明式方法管理软件包和运行环境。它通过精确控制依赖关系和环境配置,确保软件的可重复性、隔离性和可追溯性。Nix 支持多语言开发环境,提供声明式配置、环境隔离、回滚与版本控制等核心功能,适用于复杂开发场景,有效解决依赖冲突和环境不一致问题。
144 2
|
3月前
|
负载均衡 持续交付 Docker
Docker的应用场景有哪些?
Docker的应用场景有哪些?
149 6
|
3月前
|
负载均衡 大数据 测试技术
docker容器技术有哪些应用场景?
docker容器技术有哪些应用场景?
145 5
|
3月前
|
机器学习/深度学习 边缘计算 Docker
Docker有哪些应用场景
Docker有哪些应用场景
320 0
|
4月前
|
NoSQL Serverless API
Serverless 架构实现弹幕场景问题之API Gateway和OSS域名未绑定成功的问题如何解决
Serverless 架构实现弹幕场景问题之API Gateway和OSS域名未绑定成功的问题如何解决
42 0
|
6月前
|
存储 负载均衡 应用服务中间件
Web架构&OSS存储&负载均衡&CDN加速&反向代理&WAF防护
Web架构&OSS存储&负载均衡&CDN加速&反向代理&WAF防护
113 1
|
7月前
|
域名解析 弹性计算 应用服务中间件
基于nginx反向代理实现OSS固定域名IP访问
本文基于阿里云OSS手册:https://help.aliyun.com/zh/oss/use-cases/use-an-ecs-instance-that-runs-centos-to-configure-a-reverse-proxy-for-access-to-oss,继续深入讨论如何利用nginx反向代理,实现固定的IP/域名访问OSS bucket。官方文档能够解决大部分的反向代理固定IP访问oss bucket的场景,但是对于必须使用域名作为endpoint的系统,会出现signatrue鉴权问题。本文继续在官方文档的基础上,将反向代理需要域名作为endpoint的场景补齐方案。
下一篇
DataWorks