全部產品
Search
文件中心

CDN:存取控制排障指南

更新時間:Sep 05, 2026

當訪問CDN加速資源返回403錯誤,或網域名稱出現流量異常、疑似被惡意盜刷時,請按照本文的癥狀分類定位原因並處理。本文僅收錄排障類問題,配置與諮詢類問題請參見存取控制常見問題

癥狀速查

通過curl -v或瀏覽器開發人員工具查看回應標頭中的X-Tengine-Error欄位,對照下錶快速定位原因:

X-Tengine-Error值

原因

排查章節

denied by req auth: no url arg auth_key

URL鑒權:未攜帶鑒權參數

URL鑒權導致的403

denied by req auth: expired timestamp

URL鑒權:鑒權到期

URL鑒權導致的403

denied by req auth: invalid md5hash

URL鑒權:簽名計算錯誤

URL鑒權導致的403

denied by Referer ACL

Referer黑白名單攔截

Referer黑白名單導致的403

denied by IP ACL = blacklist

IP命中黑名單

IP黑白名單導致的403

denied by IP ACL = not in whitelist

IP不在白名單

IP黑白名單導致的403

black ua

UA命中黑名單

UA黑白名單導致的403

not in white ua

UA不在白名單

UA黑白名單導致的403

無此欄位,且X-Cache為MISS

來源站點返回的403

來源站點返回的403

說明:如果回應標頭中存在X-Tengine-Error但值不在上表中,或網域名稱開啟了遠程鑒權功能,請參見遠程鑒權導致的403

如何判斷403是CDN返回的還是來源站點返回的?

訪問加速資源返回403時,先判斷403的來源,再按對應癥狀族排查:

  • 在瀏覽器開發人員工具或curl -v命令中查看回應標頭。如果回應標頭中包含X-Tengine-Error欄位,說明403由CDN節點返回,根據該欄位的錯誤資訊對照上方速查表定位原因,請參見URL鑒權導致的403Referer黑白名單導致的403CDN其他存取控制導致的403

  • 如果回應標頭中不包含X-Tengine-Error欄位,請通過修改本地hosts檔案將加速網域名稱指向來源站點IP,直接存取來源站點驗證。如果來源站點同樣返回403,說明是來源站點自身的存取控制策略攔截了請求,請參見來源站點返回的403。來源站點側通用排查方法另請參見回源排障指南

URL鑒權導致的403

開啟URL鑒權功能後,如果請求未攜帶鑒權參數或鑒權參數無效,CDN會返回403。通過回應標頭中的X-Tengine-Error: denied by req auth資訊判斷具體原因。

說明:URL鑒權僅控制存取權限,鑒權結果不影響CDN的緩衝行為。鑒權通過後,CDN節點會去除URL中的鑒權參數(如auth_key),使用原始URL作為緩衝標識(Cache Key),不同使用者針對同一資源產生的不同鑒權URL命中同一份緩衝。鑒權到期僅導致後續新請求被攔截返回403,不會使已緩衝的資源失效。

報錯denied by req auth: no url arg auth_key(未攜帶鑒權參數)

  • 問題原因:CDN開啟了URL鑒權,但實際訪問的URL中沒有攜帶鑒權參數。

  • 解決方案:如果您需要使用鑒權功能,請按照URL鑒權配置為請求產生並攜帶正確的鑒權參數。如果您不需要鑒權功能,登入CDN控制台關閉該網域名稱的URL鑒權即可。

報錯denied by req auth: expired timestamp(鑒權到期)

  • 問題原因:URL攜帶了鑒權參數,但鑒權參數中的時間戳記已到期。鑒權URL的有效期間由您配置的有效時間長度決定,超過有效時間長度後鑒權失效。

  • 解決方案:請參見URL鑒權配置重建鑒權URL。如果您的業務頁面載入時間較長,可以適當延長鑒權有效時間長度。

報錯denied by req auth: invalid md5hash(鑒權計算錯誤)

  • 問題原因:鑒權參數的MD5值計算不正確,通常是鑒權代碼的簽名演算法與CDN鑒權方式的要求不一致導致。

  • 解決方案:建議先使用CDN控制台的地址產生器產生鑒權URL,與您自己的鑒權代碼產生的URL逐欄位對比,定位簽名差異。各鑒權方式的簽名演算法說明請參見鑒權方式A說明,鑒權程式碼範例請參見鑒權程式碼範例

Referer黑白名單導致的403

配置Referer黑白名單後,如果請求的Referer與規則不匹配,CDN會返回403,回應標頭中的錯誤資訊為X-Tengine-Error: denied by Referer ACL。您可以使用curl -e "<Referer值>" <加速資源URL>命令類比攜帶指定Referer的請求進行驗證。

攜帶Referer的請求被攔截(denied by Referer ACL)

  • 問題原因:請求攜帶的Referer不在白名單內,或命中了黑名單。常見於黑白名單白名單配置遺漏了實際引用資源的網站網域名稱。

  • 診斷方法:在CDN控制台查看該加速網域名稱的Referer黑白名單配置,判斷被攔截請求的Referer是否匹配規則。也可以通過下載CDN日誌找到對應訪問記錄的Referer頭。

  • 解決方案:將被攔截的Referer加入白名單(或從黑名單移除)。配置方法請參見配置Referer黑/白名單

空Referer的請求被攔截(直接存取URL返回403)

  • 問題原因:以下情境的請求不攜帶Referer(即空Referer):通過瀏覽器地址欄直接存取資源URL;在APP或用戶端程式中構造請求未設定Referer頭;HTTPS頁面引用HTTP資源時瀏覽器根據預設Referrer-Policy不發送Referer;頁面顯式設定了Referrer-Policy: no-referrer;使用curl、wget等命令列工具預設不攜帶Referer。如果Referer黑白名單配置未勾選允許通過瀏覽器地址欄直接存取資源URL,空Referer請求會被攔截。

  • 解決方案:如果業務需要允許空Referer訪問,在Referer黑白名單配置中勾選允許通過瀏覽器地址欄直接存取資源URL;如果是為了防範空Referer盜刷而有意攔截,請勿放開,並參見流量異常與惡意盜刷配置更精細的防護策略。配置方法請參見配置Referer黑/白名單

CDN其他存取控制導致的403

IP黑白名單導致的403

配置IP黑/白名單後,如果用戶端IP命中黑名單或不在白名單內,CDN節點拒絕請求並返回403。回應標頭X-Tengine-Error: denied by IP ACL = blacklist表示命中IP黑名單,X-Tengine-Error: denied by IP ACL = not in whitelist表示不在IP白名單內。

  • 診斷方法:先確認用戶端的真實公網IP(可通過curl ifconfig.mecurl myip.ipip.net查詢)。如果請求經過了代理或負載平衡,CDN擷取的用戶端IP可能是代理IP而非終端使用者IP,需確認CDN節點實際識別到的用戶端IP。在CDN控制台查看該網域名稱的IP黑/白名單配置,確認該IP是否匹配規則。

  • 解決方案:先確認攔截是否符合預期。如需允許存取該IP,在CDN控制台的網域名稱管理中單擊目標網域名稱對應的管理,在左側導覽列單擊存取控制,在IP黑/白名單地區調整規則。配置方法請參見配置IP黑/白名單。如果IP黑名單中的IP仍可訪問資源,請參見為什麼IP黑名單中的IP還能訪問資源?

UA黑白名單導致的403

配置UA黑/白名單後,如果要求標頭中的User-Agent命中UA黑名單或不在UA白名單內,CDN節點拒絕請求並返回403。回應標頭X-Tengine-Error: black ua表示命中UA黑名單,X-Tengine-Error: not in white ua表示不在UA白名單內。

  • 診斷方法:通過curl -v <加速資源URL>查看請求實際發出的User-Agent值,或在瀏覽器開發人員工具的要求標頭中查看。在CDN控制台查看該網域名稱的UA黑/白名單規則,確認是否匹配。注意UA黑白名單支援萬用字元匹配,檢查是否被通配規則意外命中。

  • 解決方案:先確認攔截是否符合預期。如需允許存取,在CDN控制台的網域名稱管理中單擊目標網域名稱對應的管理,在左側導覽列單擊存取控制,在UA黑/白名單頁簽下調整規則。配置方法請參見配置UA黑白名單

遠程鑒權導致的403

開啟遠程鑒權後,CDN節點會將請求轉寄給您指定的鑒權伺服器驗證,以下兩種情況會攔截請求並返回403:

  • 鑒權伺服器返回了配置中定義的鑒權失敗狀態代碼(例如403),CDN判定鑒權失敗,拒絕使用者請求。

  • 鑒權逾時(CDN節點與鑒權伺服器的互動未在配置的逾時時間長度內完成),且鑒權逾時之後的動作配置為拒絕

  • 診斷方法:如果403不屬於上述URL鑒權、Referer、IP ACL、UA ACL中的任何一種(回應標頭中的X-Tengine-Error值均不匹配),且網域名稱開啟了遠程鑒權功能,則應優先排查遠程鑒權。在CDN控制台查看該網域名稱遠程鑒權配置的鑒權失敗狀態代碼鑒權逾時配置鑒權逾時之後的動作,再結合鑒權伺服器的訪問日誌,確認鑒權伺服器實際返回的狀態代碼以及是否存在逾時。

  • 解決方案:如果攔截不符合預期,請調整鑒權伺服器的驗證邏輯或鑒權失敗狀態代碼配置;如果鑒權頻繁逾時,請排查鑒權伺服器效能(逾時時間長度最長可設定為3000毫秒),或結合業務風險評估將鑒權逾時之後的動作調整為通過。配置方法請參見配置遠程鑒權

來源站點返回的403

如果回應標頭中不包含X-Tengine-Error欄位,且X-Cache為MISS,說明CDN未命中緩衝、請求回源後由來源站點返回了403。此時需要排查來源站點自身的存取控制策略。

來源站點為OSS時的403(AccessDenied等報錯)

403由OSS來源站點返回,常見報錯有三種:

  • 報錯You have no right to access this object because of bucket acl:源Bucket為私人讀許可權,CDN回源請求未通過OSS鑒權。建議在CDN控制台開啟OSS私人Bucket回源授權。配置方法請參見OSS私人Bucket回源

  • 報錯You are denied by bucket referer policy:Bucket設定了Referer黑白名單,CDN回源請求的Referer不符合Bucket黑白名單規則。在OSS控制台檢查Bucket黑白名單設定,允許CDN回源請求訪問(例如允許空Referer,或將CDN回源時攜帶的Referer加入白名單)。

  • 報錯You are forbidden to list buckets:同時開啟了CDN私人Bucket回源與OSS靜態網站託管,兩個功能存在衝突。需關閉其中一個:關閉CDN私人Bucket回源授權,或關閉OSS靜態網站託管功能。衝突說明請參見CDN回源OSS私人Bucket功能與OSS靜態網站託管功能的預設首頁配置衝突

回源HOST或其他來源站點策略導致的403

  • 問題原因:CDN回源時,回源HOST決定了回源請求訪問來源站點IP地址上的哪個網站。如果回源HOST配置錯誤,可能匹配到來源站點上未提供服務或有訪問限制的網站,導致來源站點返回403。此外,來源站點自身的防火牆規則、WAF策略或應用程式層存取控制也可能攔截CDN的回源請求。

  • 診斷方法:通過綁定hosts的方式將加速網域名稱指向來源站點IP,直接存取來源站點驗證是否也返回403。檢查CDN控制台中的回源HOST配置,確認其指向來源站點上實際提供服務的網站。

  • 解決方案:修正回源HOST配置,確保回源HOST指向來源站點上實際提供服務的網站。如果來源站點有防火牆或WAF攔截了CDN回源請求,將CDN回源IP段加入來源站點白名單。來源站點側通用排查方法請參見回源排障指南

流量異常與惡意盜刷

網域名稱被惡意攻擊或流量被惡意盜刷,會產生突發高頻寬或大流量,主要帶來兩類風險:

  • 網域名稱被切入沙箱:阿里雲CDN是公用加速服務,預設不提供抗攻擊能力。當網域名稱遭受攻擊時,CDN系統有權根據業務情況與攻擊影響程度將網域名稱切入沙箱,防止影響其他使用者的加速服務。攻擊較嚴重時,同賬戶下的其他網域名稱也可能被切入沙箱,並限制帳號下的新網域名稱接入。網域名稱進入沙箱後,CDN不再保證服務品質。關於沙箱的詳細說明,請見沙箱說明

  • 惡意訪問帶來高額賬單:攻擊與盜刷行為實際消耗了CDN頻寬資源,產生的流量頻寬費用由您自行承擔,極易出現高額賬單,甚至導致賬戶欠費停機。關於延停服務、費用控制等,請見高額賬單風險警示

如何確認網域名稱是否遭受盜刷或攻擊?

通過以下方式初步確認:

  • 登入CDN控制台,在監控報表中查看網域名稱的頻寬和流量趨勢,觀察是否存在非業務時段的異常峰值。

  • 下載網域名稱的CDN訪問日誌,分析訪問來源的IP分布、Referer分布和UA分布,識別是否存在高頻訪問的異常IP段、異常Referer來源或爬蟲類UA。

  • CloudMonitor中檢查是否已觸發頻寬或流量警示。

如何防護和處理?

建議提前做好防護:通過警示設定功能配置頻寬峰值和下行流量的警示規則,達到閾值時及時收到通知;根據攻擊特徵配置IP黑名單、Referer黑名單、UA黑名單或URL鑒權等存取控制策略進行攔截。針對盜刷情境的攔截方案請參見防範流量盜刷最佳實務

如果網域名稱已被切入沙箱,需等待攻擊流量消退後提交工單申請解除沙箱。為避免再次觸發,建議在解除前配置好存取控制策略。