免責聲明: 本文檔可能包含第三方產品信息,該信息僅供參考。阿里云對第三方產品的性能、可靠性以及操作可能帶來的潛在影響,不做任何暗示或其他形式的承諾。
問題描述
源站使用CDN加速后,訪問域名報503錯誤。
問題原因
- 安全組規則限制訪問。
- 服務器配置了單IP訪問次數限制。
- Web服務異常或服務器超載。
- 系統存在云鎖、安全狗、防火墻等安全策略,攔截了CDN的回源IP。
解決方案
本文以源站為Linux系統的ECS服務器,且由Nginx服務提供Web服務為例,處理方法如下。
CDN讀取數據過程
CDN讀取數據全程如下。
客戶端 -> CDN L1層 -> CDN L2層 -> 源站
當客戶端訪問您的源站資源時,客戶端將先查看CDN的1級節點,再查找CDN的2級節點,如果2級節點沒有,再查找源站。源站中的數據同步到2級節點,2級節點同步到1級節點,再從1級節點返回給客戶端需要訪問的數據。對于源站來說,CDN的L2節點才是客戶端。
回源節點的IP地址
為了防止源站被攻擊,一些客戶希望阿里云CDN提供回源的節點IP,然后在源站設置IP白名單,只讓CDN回源的節點訪問源站。但是,由于CDN回源時會智能分配節點訪問您的源站服務器,回源的節點IP是不固定的,因此不建議您將源站服務器的回源策略設置為固定的節點IP列表,這樣可能會發生回源失敗的情況。
如果您有特殊業務需求,源站上有安全狗等防護軟件確實需要配置白名單,請調用接口DescribeL2VipsByDomain,獲取CDN回源的節點IP列表并添加到您源站服務器的白名單中,以免影響CDN回源獲取資源。但是該接口僅支持日峰值帶寬為1Gbps以上的用戶調用,如果您符合該條件,請您提交工單,申請該接口的調用權限。
安全組規則限制
- 登錄ECS控制臺。
- 在實例列表頁面,單擊對應的實例名稱。
- 在安全組頁簽中,單擊安全組列表。
- 查看正在使用的規則表,單擊配置規則,根據需要添加或變更安全組規則即可。有關如何判斷IP地址是否為CDN的IP地址,請參考CDN讀取數據過程。有關如何獲取CDN的IP地址,請參考回源節點的IP地址。
單IP訪問次數限制
- 遠程連接Linux實例。
- 檢查Nginx服務的配置文件,修改
ngx_http_limit_conn_module
和ngx_http_limit_req_module
配置項。本文以ngx_http_limit_req_module
模塊為例,配置文件示例如下。http {
limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;
...
server {
...
limit_req zone=perip burst=5 nodelay;
}ngx_http_limit_conn_module
模塊用于限制每個定義的密鑰的連接數,特別是單個IP??地址的連接數。使用limit_conn_zone
和limit_conn
指令。ngx_http_limit_req_module
模塊用于限制每一個定義的密鑰的請求的處理速率,特別是從一個單一的IP地址的請求的處理速率。使用泄漏桶方法進行限制,使用limit_req_zone
和limit_req
指令。limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;
配置項定義一個limit_req_zone用來存儲Session,其大小是10M內存,以$binary_remote_addr為Key,限制平均每秒的請求為10個。limit_req zone=perip burst=5 nodelay;
配置項中啟用nodelay選項,嚴格使用平均速率限制請求數,超過的請求會被延時處理。
Web服務異常
- 遠程連接Linux實例。
- 檢查Nginx服務的日志,根據具體錯誤進行排查修復。
- 執行如下命令,重新啟動Nginx服務。
注:該操作會影響業務,請謹慎使用。
service restart nginx
安全策略攔截
設置各個安全產品的攔截策略,放行CDN的回源IP即可。
適用于
- CDN
文檔內容是否對您有幫助?