天天看點

【OSS】基于Windows的ECS執行個體實作OSS反向代理

背景資訊

阿裡雲OSS為使用者提供OSS預設域名或者綁定的自定義域名方式通路,但是在某些場景下,使用者需要通過固定的IP位址通路OSS:

  • 某些企業由于安全機制,需要在出口防火牆配置政策,以限制内部員工和業務系統隻能通路指定的公網IP,但是OSS的Bucket通路IP會随機變換,導緻需要經常修改防火牆政策。
  • 金融雲環境下,因金融雲網絡架構限制,金融雲的Bucket隻能在金融雲内部通路。

以上問題可以通過在ECS執行個體上搭建反向代理的方式通路OSS。

【OSS】基于Windows的ECS執行個體實作OSS反向代理

配置步驟

  1. 建立一個和指定Bucket相同地域的Windows Server系統的ECS執行個體并登入。本文示範系統為Windows Server 2019資料中心版64位中文版系統,建立和登入過程請參見 Windows系統執行個體快速入門
  2. 下載下傳Nginx并解壓。本文以Nginx-1.19.2版本為例,下載下傳位址請參見 Nginx
  3. 修改配置檔案。
    1. 進入conf檔案夾,使用記事本打開nginx.conf檔案。
    2. 修改配置檔案内容。
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  47.**.**.43;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
       location / {
            proxy_pass  http://bucketname.oss-cn-hangzhou-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子產品。
      • 上述配置方式隻能代理通路一個Bucket。
  1. 傳回Nginx主程式檔案夾,輕按兩下nginx.exe啟動Nginx。
  2. 開放ECS執行個體的TCP 80端口。Nginx預設使用TCP 80端口,是以需在ECS的安全組配置中,允許使用者通路TCP 80端口。配置方式請參見 添加安全組規則
  3. 使用ECS外網位址加檔案通路路徑通路OSS資源。
    【OSS】基于Windows的ECS執行個體實作OSS反向代理

繼續閱讀