使用Terraform可以快速為網站配置URL重寫規則,將訪問路徑與查詢字串按運算式轉換。
安裝Terraform並配置許可權
在本地安裝和配置Terraform
您可以參考安裝和配置Terraform,在本地使用Terraform。
由於阿里雲帳號(主帳號)擁有資源的所有許可權,其AccessKey一旦泄露風險巨大,所以建議您使用滿足最小化許可權需求的RAM使用者的AccessKey。具體操作方式請參見建立AccessKey。
建立環境變數,用於存放身份認證資訊。
在AccessKey管理頁面上建立和查看您的AccessKey。
若無對應環境變數,在執行terraform模板時無法確認身份資訊,將會導致調用失敗。
使用線上服務(免安裝和許可權配置)
如果您不想安裝Terraform,可以直接使用線上服務Cloud Shell。
阿里雲Cloud Shell是一款協助您營運的免費產品,預裝了Terraform的組件,並配置好身份憑證(Credentials)。因此您可直接在Cloud Shell中運行Terraform的命令。更多資訊,請參見使用Terraform快速建立資源。
通過Cloud Shell使用Terraform時,由於其銷毀特性會導致資料丟失,因此建議您使用Cloud Shell做簡單、快速的操作,例如調試。更多使用限制,請參見使用限制。
涉及的資源
查詢網站資訊:alicloud_esa_sites(資料來源,用於引用已有網站)
配置重寫 URL 規則:alicloud_esa_rewrite_url_rule
配置重寫URL規則
建立一個名為
main.tf的設定檔,然後將以下代碼複製到設定檔中,用於為網站建立一條重寫URL規則。# 1. 查詢已有網站資訊 data "alicloud_esa_sites" "default" { site_name = "{{DOMAIN}}" # 替換為您已接入邊緣安全加速的網站網域名稱,如 example.com } # 2. 配置重寫URL:將以 /images/ 開頭的路徑改為 /static/img/,並移除全部查詢參數 resource "alicloud_esa_rewrite_url_rule" "example" { site_id = data.alicloud_esa_sites.default.sites[0].site_id rule_name = "rewrite-images-prefix" rule_enable = "on" rule = "starts_with(http.request.uri.path, \"/images/\")" rewrite_uri_type = "dynamic" uri = "regex_replace(http.request.uri.path, \"^/images/\", \"/static/img/\")" rewrite_query_string_type = "static" query_string = "" # Null 字元串表示刪除全部查詢參數 }進入設定檔所在目錄,執行如下命令,初始化Terraform環境。
terraform init執行如下命令,驗證Terraform文法與配置。
terraform validate執行如下命令,預覽執行結果。
terraform plan執行如下命令,執行Terraform指令碼。
terraform apply依據提示輸入
yes確認執行即可。
驗證結果
執行 terraform show 命令
您可以在工作目錄中,使用以下命令查詢 Terraform 已建立資源的詳細資料:
terraform show登入控制台查看
在ESA控制台選擇網站管理,在網站列單擊目標網站。
在左側導覽列,選擇。在對應子功能頁查看已建立的規則及配置。
(可選)清理資源
當您不再需要上述通過Terraform建立或管理的資源時,請運行terraform destroy命令以釋放資源。
terraform destroy相關參考
rewrite_uri_type 說明
Terraform 的 alicloud_esa_rewrite_url_rule資源中,rewrite_uri_type 取值說明如下表所示。
取值 | 含義 | 說明 |
| 靜態 | 將請求路徑重寫為固定的目標路徑。 |
| 動態 | 使用運算式根據請求動態計算目標路徑。 |
rewrite_query_string_type 說明
同上資源中,rewrite_query_string_type 取值說明如下表所示。
取值 | 含義 | 說明 |
| 靜態 | 將查詢字串替換為 |
| 動態 | 使用運算式動態產生查詢字串。 |