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”。
上图是基于“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的访问方式。