【最佳实践】如何搭建反向代理服务访问OSS资源?

1.当前存在的问题

  • 无法通过固定的IP方式访问OSS:阿里云OSS通过Restful API方式对外提供服务。最终用户通过OSS默认域名或者绑定的自定义域名方式访问(例如:https://your_bucketname.oss-cn-hangzhou.aliyuncs.com/your_object ) 。您可以通过域名解析的方式获取某个Bucket域名对应的临时IP,但是由于阿里云OSS自身安全机制,Bucket域名对应的IP是会随机发生变化的。因此,您无法获取某个Bucket对应的长期有效IP地址。而某些企业由于安全机制,需要在出口防火墙配置策略,以限制内部员工和业务系统只能访问指定的公网IP。
  • 互联网用户无法直接访问金融云OSS:由于金融云网络架构限制,金融云内网类型的Bucket只能在金融云内部访问。不支持在互联网上直接访问金融云内网类型Bucket;

2.基于ECS搭建反向代理方式访问OSS

针对如上问题,我们采用了“基于ECS搭建反向代理方式访问OSS”。
【最佳实践】如何搭建反向代理服务访问OSS资源?

上图是基于“ECS搭建反向代理”的逻辑示意图,其主要实现机制如下:

  • 在Bucket所在的Region创建ECS;
  • 在同Region创建SLB(可选)。为了提高ECS的可用性,可以搭建多台ECS作为集群对外提供服务(可选);
  • 在ECS上部署Nginx或者Apache作为反向代理服务;

3.配置操作步骤

3.1演示前提

1.    ECS *1;
  a)    所在Reigon: cn-shanghai
  b)    操作系统版本: Ubuntu 16.04(64位);
2.    Bucket *1;
  a)    所在Reigon: cn-hongkong
  b)    Bucket名称: test-hongkong-2025
3.    此次配置仅做演示说明。因此,没有配置SLB;
4.    反向代理服务:
  a)    Nginx

3.2在ECS上安装Nginx

3.2.1安装Nginx

 sudo apt-get install nginx

默认安装位置:

 /usr/sbin/nginx       主程序 
 /etc/nginx            存放配置文件 
 /usr/share/nginx      存放静态文件 
 /var/log/nginx        存放日志

3.2.2配置Nginx

1.配置Nginx:

sudo vi /etc/nginx/nginx.conf 

2.请在config文件中的HTTP模块添加如下内容:

upstream mysvr {
        server 127.0.0.1;       #default_server1;
        server 101.132.39.231;  #default_server2;
        server 172.19.158.170;  #default_server3;

    }

server {
        listen 80;
        server_name 101.132.39.231; #对外提供反向代理服务的IP;

        location / {
            index http://test-beijing-2019.oss-cn-beijing.aliyuncs.com/index.html; #可选;
            proxy_pass http://test-hongkong-2025.oss-cn-hongkong.aliyuncs.com; #如果主机与Bucket不在同一个区域,需使用外网;
        }
}

3.2.3重启Nginx服务

1.启动Nginx服务:

sudo nginx –t

2.重启nginx服务:

nginx -s reload

3.4测试

如下,我们测试访问test-hongkong-2025这个Bucket下某个文件:

root@iZuf698rtvi9j9uskgv84tZ:/etc/nginx# curl  http://101.132.39.231/011.txt


002

003

004

005

006


007

008

009

如上所示,基于ECS搭建反向代理服务的方式,能够对外提供固定IP的访问方式。

上一篇:CloudCC CRM观点:企业文化是CRM成功实施的前提条件


下一篇:人人都是Serverless架构师之现代化Web应用开发实战