背景
一般情況下,用戶會通過OBS提供的桶訪問域名(例如//bucketname.obs.cn-jssz1.daliqc.cn)的方式訪問OBS。
但在某些場景下,用戶需要通過固定的IP地址訪問OBS,例如:某些企業出于安全考慮,對于可訪問的外部地址需要設置黑白名單,而這個時候對于OBS的訪問則需要一個固定的IP地址。同樣出于安全考慮,天翼云OBS桶訪問域名通過DNS解析的IP地址是會發生變化的,所以用戶無法獲取某個桶長期有效的固定IP地址。
此時,可以通過在ECS上搭建Nginx反向代理服務器,來實現通過固定IP地址訪問OBS。
原理介紹
本實踐將Nginx部署在ECS上,搭建Nginx反向代理服務器。用戶對代理無感知,只需要將請求發送到反向代理服務器,然后由反向代理服務器向OBS獲取數據,再返回給用戶。反向代理服務器和OBS對外看做一個整體,僅暴露代理服務器的IP地址,隱藏了OBS真實的域名或IP地址。
圖-通過Nginx反向代理訪問OBS原理

前置條件
- 已明確OBS桶所在區域和桶的訪問域名,如蘇州區域的桶:nginx-obs.obs.cn-jssz1.daliqc.cn。查看桶的信息
- 已在同區域購買Linux操作系統的ECS,本文以CentOS系統為例。
- ECS已綁定EIP,EIP用于從公網下載必要的Nginx安裝包。
操作步驟
在ECS上安裝Nginx
a.登錄用于搭建Nginx反向代理服務器的ECS。
b.使用wget命令,下載對應當前操作系統版本的Nginx安裝包。此處以CentOS 7.6版本的操作系統為例。
wget //nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
c.執行以下命令,建立Nginx的yum倉庫。此處以CentOS 7.6版本的操作系統為例。
rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm
d.執行以下命令,安裝Nginx。
yum -y install nginx
e.執行以下命令,啟動Nginx并設置開機啟動。
systemctl start nginx
systemctl enable nginx
f.在任意終端使用瀏覽器訪問“//ECS彈性IP地址”,顯示如下圖所示,說明Nginx安裝成功。
圖-Nginx安裝成功

修改Nginx配置文件,反向代理OBS桶
a.執行以下命令,打開“default.conf”配置文件。
vim /etc/nginx/conf.d/default.conf
b.按“i”鍵進入編輯模式,修改“default.conf”配置文件。
server {
listen 8089; #天翼云針對公網IP默認封閉80端口,需要備案后才能使用,建議使用其他端口如:8089,或者使用內網80端口訪問。
server_name **.**.**.**; #此處填寫ECS彈性IP地址
location / {
proxy_pass //nginx-obs.obs.cn-jssz1.daliqc.cn; #此處填寫OBS桶訪問域名,以//或//開頭
index index.html index.htm ;
}
}
表-配置文件參數說明
| 參數 | 說明 |
|---|---|
| server_name | 提供反向代理服務的IP地址,即需要暴露給終端用戶訪問的固定IP地址。 此處填寫搭建Nginx反向代理服務的ECS彈性IP地址,即當前登錄的ECS彈性IP地址。 |
| proxy_pass | 被代理服務器的地址。此處填寫前提條件獲取的OBS桶的訪問域名, 注意需要以//或//開頭,例如://nginx-obs.obs.cn-jssz1.daliqc.cn |
c.按“Esc”,輸入“:wq”保存并退出。
d.執行以下命令,測試Nginx配置文件狀態。
nginx -t
e.執行以下命令,重啟Nginx服務使配置生效。
systemctl stop nginx
systemctl start nginx
配置OBS桶策略,允許Nginx代理服務器的IP地址訪問OBS(可選)
如果您的OBS桶為公共讀,或者訪問私有桶內對象時在URL中攜帶簽名,則可跳過此步驟。
如果您的OBS桶為私有桶,且不希望使用攜帶簽名的URL訪問桶內資源,則建議配置以下桶策略或者桶ACLs策略:僅允許Nginx代理服務器的IP地址訪問OBS桶。
桶對象ACLs策略如下:
賦予匿名用戶讀取權限

桶策略如下:
a.在OBS管理控制臺左側導航欄選擇“對象存儲”。
b.在桶列表單擊待操作的桶,進入“概覽”頁面。
c.在左側導航欄,單擊“訪問權限控制 > 桶策略”。
d.單擊“創建桶策略”。
e.在桶策略模式,選擇“自定義模式”。
f.配置如下參數。
表-桶策略參數配置
參數 說明 策略配置方式 可視化視圖 策略名稱 自定義 策略內容 效果 允許 被授權用戶
授權用戶:匿名用戶
用戶策略:包含以上用戶
資源
資源范圍:同時選擇當前桶和桶內對象
資源策略:包含以上資源
動作
選擇動作:Get和List
操作策略:包含以上動作
條件
條件運算符:IpAddress
鍵:SourceIp
值:
如果ECS使用公網DNS,取值為:ECS的彈性IP地址如果ECS使用天翼云內網DNS,取值為:100.64.0.0/10,214.0.0.0/7,ECS的私有IP地址
說明取值需要同時配置三個IP地址(IP地址段),之間用英文逗號(,)隔開。
其中,100網段和214網段為ECS內網訪問OBS的網
g.單擊右下角的“配置確認”。
h.單擊右下角的“創建”,完成桶策略創建。
驗證反向代理配置
在任意終端使用ECS彈性IP地址+對象名訪問OBS資源,如果能正常訪問,則說明配置成功。
例如訪問//ECS彈性IP地址:端口/image.jpeg,能夠正常下載即可。
圖-使用固定IP地址訪問OBS資源
