Function Compute會為建立的HTTP函數提供預設訪問地址,通過瀏覽器訪問該地址時會觸發強制下載行為。如果您希望通過瀏覽器正常訪問函數或者希望通過固定網域名稱訪問函數,您需要配置自訂網域名。
典型應用情境
HTTP函數可以被看作為一個Web應用,該應用能處理HTTP請求,並將處理結果返回給調用端。在以下樣本情境中,您需要為Web應用綁定自訂網域名。
您建立了一個Web應用,並將該應用遷移到Function Compute,希望可以通過固定的網域名稱訪問該應用。
您通過Function Compute控制台搭建了一個Web應用,希望可以通過Function Compute提供的預設地址
<account_id>.<region_id>.fc.aliyuncs.com/<version>/proxy/<serviceName>/<functionName>/[action?queries]訪問該應用。在實際通過該地址訪問應用時會觸發強制下載行為,您需要更改Web應用訪問地址,但不影響使用者的使用。
前提條件
已建立HTTP函數。自訂網域名發出的請求只能觸發HTTP函數執行。
使用限制
不支援配置中文網域名稱。
配置的自訂網域名區分大小寫,請按實際備案的網域名稱填寫。
支援配置泛網域名稱和標準網域名稱。
操作步驟
配置自訂網域名全流程
步驟一:備案網域名稱
根據網域名稱所屬的服務提供者和所屬帳號,參考對應的操作指導進行網域名稱備案。
中國香港和海外地區的函數綁定的自訂網域名不需要備案。
如果您不確定網域名稱所屬服務提供者,您可以在網域名稱資訊查詢(WHOIS)頁面進行查詢。
如果您不確定網域名稱是否屬於當前阿里雲帳號,您可以在Alibaba Cloud DNS控制台進行查詢。
當前阿里雲帳號註冊的網域名稱
登入阿里雲ICP代備案管理系統備案自訂網域名。具體操作,請參見ICP備案流程。
其他阿里雲帳號註冊的網域名稱
建議您使用註冊網域名稱的阿里雲帳號完成網域名稱備案。然後登入阿里雲ICP代備案管理系統備案自訂網域名。具體操作,請參見ICP備案流程。
非阿里雲帳號註冊的網域名稱
如果主體和網域名稱均已通過其他服務商成功備案,而您現需要將服務商變更為阿里雲或將阿里雲添加為該網站的新增服務商,需要在阿里雲接入備案。登入阿里雲ICP代備案管理系統備案自訂網域名。
步驟二:佈建網域名解析
佈建網域名解析具體操作,請參見佈建網域名解析。
您需要將已備案的網域名稱解析到Function Compute對應地區的Endpoint上,即配置自訂網域名的CNAME到Function ComputeEndpoint。在網域名稱解析頁面,添加記錄資訊,其中記錄類型為CNAME,記錄值為Function ComputeEndpoint。
Function ComputeEndpoint格式說明如下:
Endpoint類型 | 格式 | 樣本 | |
公網Endpoint |
| 如果您的自訂網域名為example.com,您的阿里雲帳號(主帳號)ID為164901546557****,地區為華東2(上海)。 | 公網Endpoint為 |
內網Endpoint |
| 內網Endpoint為 | |
如果您希望通過公網訪問該網域名稱,需要將記錄值配置為Function Compute公網Endpoint。
步驟三:添加自訂網域名
- 登入Function Compute控制台,在左側導覽列,選擇。
- 在頂部功能表列,選擇地區,然後在網域名稱管理頁面,單擊添加自訂網域名。
在添加自訂網域名頁面,填寫相關配置項,然後單擊建立。
配置項
操作
網域名稱
填寫已在阿里雲備案或接入備案的自訂網域名名稱。支援單網域名稱(例如
www.aliyun.com)或萬用字元網域名稱(例如*.aliyun.com)。HTTPS
根據需要啟用或禁用HTTPS協議訪問自訂網域名的功能。取值如下:
啟用:開啟通過HTTPS協議訪問自訂網域名的功能。表示支援使用HTTP或HTTPS協議訪問該自訂網域名。
說明您還可以選中強制HTTPS複選框,此時僅支援使用HTTPS協議訪問該自訂網域名,Function Compute會將所有使用HTTP協議訪問該自訂網域名的請求重新導向至HTTPS協議。
禁用:關閉通過HTTPS協議訪問自訂網域名功能。表示僅支援使用HTTP協議訪問該自訂網域名,使用HTTPS協議將無法訪問該自訂網域名。
認證類型
選擇要上傳的認證類型。當您啟用HTTPS協議訪問自訂網域名的功能時,需設定此配置項。取值說明如下:
阿里雲 SSL 憑證:選擇您的阿里雲SSL認證。如果認證名稱下拉式清單為空白,則說明您尚未購買阿里雲SSL認證,您可以登入SSL認證管理主控台購買。
手動上傳:手動輸入認證名稱,並填寫PEM 認證內容和PEM 認證密鑰。
說明上傳的認證的大小不能超過20 KB,認證密鑰的大小不能超過4 KB。
TLS 協議版本
選擇函數使用的TLS協議版本。
說明選擇以上TLS協議版本後,您還可以選中開啟支援TLS 1.3複選框,表示同時支援TLS 1.3協議。
加密套件
選擇TLS密碼編譯演算法套件,如果不配置,預設選擇全部加密套件。取值說明如下:
全部加密套件,相容性最高,安全性較低:選擇全部加密套件。Function Compute支援的加密套件列表請參見強加密和弱加密套件列表。
協議版本的自訂加密套件,請謹慎選擇,避免影響業務:選擇部分支援的加密套件。下拉式清單中顯示所有加密套件,您可以單擊加密套件右側的
表徵圖,刪除安全性較弱的弱加密套件,保留您選擇的TLS協議版本支援的加密套件。
重要請謹慎選擇自訂加密套件,確保服務端和用戶端套件的正確匹配。
關於TLS協議版本和其支援的加密套件,請參見TLS協議版本與加密套件對應關係。
Function Compute對加密套件的命名使用RFC命名規範。同一個加密套件,使用不同命名規範的命名會存在差異。關於RFC和OpenSSL命名的加密套件名稱差異點,請參見RFC與OpenSSL加密套件命名對照表。
CDN 加速
根據需要啟用或禁用CDN加速開關。為網域名稱設定CDN加速功能後,終端使用者將通過CDN加速網域名稱快速讀取所需內容。
啟用:開啟CDN加速功能。需要填寫自訂的CDN 加速網域名稱。然後登入CDN控制台為加速網域名稱配置CNAME。更多資訊,請參見步驟四:開啟CDN加速(可選)。
禁用:關閉CDN加速功能。
Web Application Firewall
根據需要啟用或者禁用Web Application Firewall開關。為自訂網域名開啟Web Application Firewall安全防護之後,Web Application Firewall將對該網域名稱上的業務流量進行惡意特徵識別和防護,避免函數被惡意侵入。具體資訊,請參見開啟Web Application Firewall。
啟用:開啟Web Application Firewall安全防護功能。
禁用:關閉Web Application Firewall安全防護功能。
路由配置
設定路徑與函數的對應關係,即不同的請求路徑可以觸發不同的函數執行。您需要設定以下欄位:
路徑:可以觸發指定服務下的指定函數的請求路徑。
服務名稱:來自指定路徑的請求觸發的對應服務。
函數名稱:來自指定路徑的請求觸發的指定服務下的對應函數。
版本或別名:來自指定路徑的請求觸發的指定服務下的對應函數版本或別名。
重寫策略:將匹配指定路徑的請求的URI根據規則進行重寫。具體操作,請參見操作步驟。
您可以根據需要添加多個路由。更多路由資訊,請參見路由匹配規則。
配置完成後,您可以根據需求編輯或刪除配置的自訂網域名。
重要刪除自訂網域名會導致通過該網域名稱接入的請求全部失敗,請謹慎操作。
步驟四:開啟CDN加速(可選)
為Web應用綁定自訂網域名後,您可以將該自訂網域名作為來源站點網域名稱為其添加加速網域名稱,然後為加速網域名稱配置CNAME,即為網域名稱設定CDN加速功能。將部署在Function Compute的應用作為來源站點,將源內容發布到邊緣節點,使終端使用者能快速讀取所需內容,有效降低訪問時延,提高服務品質。
加速網域名稱添加成功後,您可以在Function Compute控制台中的目標自訂網域名中看到CDN功能開關已開啟,並已綁定了在CDN控制台添加的加速網域名稱。
CDN加速功能會消耗公網流量,需要收取流量費用。更多資訊,請參見計費概述。
自訂網域名和加速網域名稱不能使用同一個網域名稱。例如:自訂網域名設定為www.test.com,加速網域名稱需要設定為其他的網域名稱,如cdn.test.com。
登入CDN控制台,開啟CDN加速。
具體操作,請參見添加加速網域名稱。
設定來源站點資訊時,選擇Function Compute網域名稱,然後選擇目標Function Compute服務所在地區和已建立的自訂網域名。
- 登入Function Compute控制台,在左側導覽列,選擇。
- 在頂部功能表列,選擇地區,然後在網域名稱列表,找到目標網域名稱,單擊操作列的編輯。
在編輯自訂網域名頁面,查看由CDN控制台同步的CDN加速網域名稱配置。

為自訂網域名添加CDN加速網域名稱成功後,CDN會為您分配一個CNAME網域名稱。在網域名稱管理列表頁面擷取到對應的CNAME網域名稱,將加速網域名稱的DNS解析記錄指向分配的CNAME網域名稱,從而實現加速效果。
具體操作,請參見配置CNAME。
說明CNAME的格式為
加速網域名稱.w.alikunlun.com,例如example.aliyundoc.com.w.alikunlun.com。
步驟五:驗證自訂網域名
自訂網域名或CDN加速網域名稱設定成功後,您可以通過以下方式訪問自訂網域名進行測試。
方法一:通過命令列
curl URL測試。例如curl example.com/login。方法二:通過瀏覽器測試。
在瀏覽器地址欄中輸入請求URL,然後按斷行符號鍵可以驗證是否調用了目標函數。
加密套件相關資訊
強加密和弱加密套件列表
TLS協議版本與加密套件對應關係
RFC與OpenSSL加密套件命名對照表
匹配規則
路由匹配規則
您需要在綁定自訂網域名過程中設定路徑和函數的對應關係,來自不同路徑的請求就可以觸發不同的函數執行。Function Compute支援精確匹配和模糊比對,具體規則如下:
精確匹配:請求的路徑和設定的路徑完全一致才可以觸發對應的函數。
假設,設定路徑為/a,對應的服務為s1,對應函數為f1,對應的版本為1。那麼只有來自路徑/a的請求才能觸發版本1下的f1函數執行,來自路徑/a/的請求無法觸發版本1下的f1函數執行。
模糊比對:支援使用萬用字元(*)設定路徑,且萬用字元(*)只能放到路徑的最後。
假設,設定路徑為/login/*,對應服務為s2,對應函數為f2,對應版本為1。那麼路徑首碼為/login/(例如/login/a、/login/b/c/d)的請求都會觸發版本1下的f2函數執行。
若一個自訂網域名下配置了多個路由,則精確匹配的優先順序大於模糊比對的優先順序。
模糊比對時滿足最長首碼匹配原則。
假設,配置了/login/a/*和/login/*兩個路徑,自訂網域名為
example.com,請求URL為example.com/login/a/b。此時,該請求URL滿足設定的路徑。但是根據最長首碼匹配原則,最終匹配的路徑應該是/login/a/*。
樣本
假設自訂網域名為example.com,根據本文的操作步驟,設定了以下5條路由規則。
路由規則 | 路徑 | 服務名稱 | 函數名稱 | 版本 |
路由規則1 | / | s1 | f1 | 1 |
路由規則2 | /* | s2 | f2 | 2 |
路由規則3 | /login | s3 | f3 | 3 |
路由規則4 | /login/a | s4 | f4 | 4 |
路由規則5 | /login/* | s5 | f5 | 5 |
最終匹配結果如下。
請求URL | 匹配的服務名稱 | 匹配的函數名稱 | 匹配的版本 | 匹配的路徑 |
example.com | s1 | f1 | 1 | / |
example.com/user | s2 | f2 | 2 | /* |
example.com/login | s3 | f3 | 3 | /login |
example.com/login/a | s4 | f4 | 4 | /login/a |
example.com/login/a/b | s5 | f5 | 5 | /login/* |
example.com/login/b | s5 | f5 | 5 | /login/* |
網域名稱匹配規則
Function Compute會根據您請求中的網域名稱資訊匹配合適的網域名稱,並將請求轉寄給匹配到的網域名稱對應的函數。Function Compute支援網域名稱的精確匹配和模糊比對,具體規則如下。
精確匹配:請求的網域名稱與您建立的自訂網域名完全一致時,才能觸發該網域名稱對應的函數。
模糊比對:支援匹配萬用字元網域名稱(泛網域名稱),即請求的網域名稱與您建立的自訂網域名匹配就可以觸發該網域名稱對應的函數。萬用字元(*)最多隻能有一個,且只能放到網域名稱的最前面。
如果一個請求同時匹配了單網域名稱和萬用字元網域名稱,單網域名稱的優先順序大於萬用字元網域名稱的優先順序。
模糊比對時,萬用字元網域名稱只能匹配同級網域名稱。例如,現有網域名稱
*.aliyun.com,可以匹配fc.aliyun.com,但是不能匹配cn-hangzhou.fc.aliyun.com。因為*.aliyun.com和fc.aliyun.com均為第三層網域名,而cn-hangzhou.fc.aliyun.com為四級網域名稱。
樣本
假設現有自訂網域名fc.aliyun.com、*.aliyun.com和*.fc.aliyun.com,不同網域名稱的請求匹配到的網域名稱如下所示。
請求網域名稱 | 匹配到的網域名稱 |
fc.aliyun.com | fc.aliyun.com |
fnf.aliyun.com | *.aliyun.com |
cn-hangzhou.fc.aliyun.com | *.fc.aliyun.com |
accountID.cn-hangzhou.fc.aliyun.com | 無匹配 |
常見問題
HTTP觸發器的公網訪問地址可以用於生產環境嗎?
配置了自訂網域名,訪問一致502 Bad Gateway,怎麼處理?
配置自訂網域名時,使用中文網域名稱一直報錯,怎麼處理?
如何解決通過瀏覽器訪問網域名稱時會觸發強制下載的問題?
訪問加速網域名稱時出現301重新導向,如何處理?
在路由配置時無法選擇已建立的服務和函數,怎麼辦?
通過路由配置的路徑無法觸發函數執行,怎麼處理?
問題診斷
在綁定自訂網域名過程中如果發生錯誤,服務端會返回錯誤資訊。下表列出了常見的錯誤碼,協助您快速定位問題。
錯誤碼 | HTTP狀態代碼 | 錯誤資訊 | 原因分析 |
InvalidICPLicense | 400 | domain name '%s' has not got ICP license, or the ICP license does not belong to Aliyun | 網域名稱未備案,或備案未接入阿里雲。更多資訊,請參見步驟一:備案網域名稱。 |
DomainNameNotResolved | 400 | domain name '%s' has not been resolved to your FC endpoint, the expected endpoint is '%s' | 網域名稱未設定CNAME到指定的Endpoint,可以通過dig命令或在網域名稱解析伺服器處查看確認。 |
DomainRouteNotFound | 404 | no route found in domain '%s' for path '%s' | 沒有為指定路徑設定對應觸發的函數。 |
TriggerNotFound | 404 | trigger 'http' does not exist in service '%s' and function '%s' | 自訂網域名觸發的函數未設定HTTP觸發器。 |
DomainNameNotFound | 404 | domain name '%s' does not exist | 擷取網域名稱資訊時,網域名稱不存在。 |
DomainNameAlreadyExists | 409 | domain name '%s' already exists | 建立網域名稱時,網域名稱已存在。 |
如果問題仍未能解決,請加入DingTalk使用者群(DingTalk群號:64970014484),聯絡Function Compute工程師即時溝通處理。