雲計算

基於CentOS的ECS實例實現OSS反向代理

104.jpg
鏡像下載、域名解析、時間同步請點擊 阿里巴巴開源鏡像站

一、背景信息

阿里雲OSS通過Restful API方式對外提供服務。最終用戶通過OSS默認域名或者綁定的自定義域名方式訪問,但是在某些場景下,用戶需要通過固定的IP地址訪問OSS:

  • 某些企業由於安全機制,需要在出口防火牆配置策略,以限制內部員工和業務系統只能訪問指定的公網IP,但是OSS的Bucket訪問IP會隨機變換,導致需要經常修改防火牆策略。
  • 金融雲環境下,因金融雲網絡架構限制,金融雲內網類型的Bucket只能在金融雲內部訪問,不支持在互聯網上直接訪問金融雲內網類型Bucket。

以上問題可以通過在ECS實例上搭建反向代理的方式訪問OSS。image.png

二、配置步驟

1、創建一個和對應Bucket相同地域的CentOS系統的ECS實例。本文演示系統為CentOS 7.6 64位系統。
創建過程請參見創建ECS實例

2、使用root用戶登錄ECS實例並安裝Nginx。

root@test:~# yum install -y nginx

說明 Nginx默認安裝位置:

/usr/sbin/nginx       主程序 
 /etc/nginx            存放配置文件 
 /usr/share/nginx      存放靜態文件 
 /var/log/nginx        存放日誌

3、打開Nginx配置文件。

root@test:~# vi /etc/nginx/nginx.conf

4、在config文件中的http模塊中,修改配置如下。

server {
listen 80 default_server;
listen [::]:80 default_server;
server_name 47.**.**.43; 
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass https://bucketname.oss-cn-beijing-internal.aliyuncs.com; 
proxy_set_header Host $host; 
}
  • server_name:對外提供反向代理服務的IP,即ECS實例的外網地址。
  • proxy_pass:填寫跳轉的域名。

    • 當ECS實例與Bucket在同一地域時,填寫目標Bucket的內網訪問域名。訪問域名介紹請參見OSS訪問域名使用規則
    • 當ECS實例與Bucket不在同一地域時,填寫目標Bucket的外網訪問域名。
    • 因OSS的安全設置,當使用默認域名通過瀏覽器訪問OSS中的圖片或網頁文件時,會直接下載。所以,若您的用戶需通過瀏覽器預覽Bucket中的圖片或網頁文件,需為Bucket綁定自定義域名,並在此項中添加已綁定的域名。綁定自定義域名操作請參見綁定自定義域名
  • proxy_set_header Host $host:添加此項時,Nginx會在向OSS請求的時候,將host替換為ECS的訪問地址。遇到以下情況時,您需要添加此項。

    • 遇到簽名錯誤問題。
    • 如果您的域名已解析到ECS實例的外網上,且您的用戶需要通過瀏覽器預覽Bucket中的圖片或網頁文件。您可以將您的域名綁定到ECS實例代理的Bucket上,不配置CNAME。這種情況下,proxy_pass項可直接配置Bucket的內網或外網訪問地址。綁定自定義域名操作請參見綁定自定義域名

說明 本文為演示環境,實際環境中,為了您的數據安全,建議配置https模塊,配置方法請參見反向代理配置

5、進入Nginx主程序文件夾,啟動Nginx。

root@test:~# cd /usr/sbin/
root@test:~# ./nginx

6、測試使用ECS外網地址加文件訪問路徑訪問OSS資源。image.png

阿里巴巴開源鏡像站 提供全面,高效和穩定的鏡像下載服務。釘釘搜索 ' 21746399 ‘ 加入鏡像站官方用戶交流群。”

Leave a Reply

Your email address will not be published. Required fields are marked *