【最佳實踐】如何通過反向代理方式訪問OSS?
1.當前存在的問題
- 無法通過固定的IP方式訪問OSS :阿里雲OSS通過Restful API方式對外提供服務。終端使用者通過OSS預設域名或者繫結的自定義域名方式訪問(例如: ofollow,noindex" target="_blank">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# curlhttp://101.132.39.231/011.txt 002 003 004 005 006 007 008 009
如上所示,基於ECS搭建反向代理服務的方式,能夠對外提供固定IP的訪問方式。