# 中国大陆账号微信扫码注册 [#中国大陆账号微信扫码注册]
## 第一步 [#第一步-1]
进入[七牛云官网首页](https://www.qiniu.com/),点击“免费注册”

## 第二步 [#第二步-1]
点击“微信快速注册”
## 第三步 [#第三步]
微信扫码,填写信息,完成注册
# 海外账号注册 [#海外账号注册]
## 第一步 [#第一步-2]
进入[七牛云官网首页](https://www.qiniu.com/),点击“免费注册”

## 第二步 [#第二步-2]
进入中国大陆注册页面,点击“[七牛海外用户注册](https://portal.qiniu.com/intl/signup)”
## 第三步 [#第三步-1]
填写账号信息,查看[七牛云服务用户协议](https://www.qiniu.com/agreements/user-agreement)和 [隐私权政策](https://www.qiniu.com/agreements/privacy-right)后,点击“免费注册”完成注册。
# 审计日志 (/account/0-audit-log)
最近更新时间: 2026-01-15 18:18:52
审计日志(Audit Log)是一项支持对七牛云账号进行监管、合规性检查、操作审核和风险审核的服务。借助 Audit Log,可以记录日志、持续监控并保留与整个七牛云的云基础设施中操作相关的账号活动。
访问地址:[https://portal.qiniu.com/audit/log-query](https://portal.qiniu.com/audit/log-query)

# 设置可用额度预警 (/account/0-available-credit-warning)
最近更新时间: 2026-05-06 16:22:28
# 一、设置入口 [#一设置入口]
登录账号后,进入管理控制台>财务中心>[财务概况](https://portal.qiniu.com/financial/overview),点击开启「可用额度预警」。

# 二、设置阈值 [#二设置阈值]
请输入大于0的数值,最多精确到小数点后2位。

# 三、预警规则 [#三预警规则]
**1.通知条件。**
当您账户的可用额度低于预警阈值时,系统会每天为您发送短信和邮件预警通知。
**2.通知对象。**
七牛云会通知到您账户绑定的邮箱和手机号。如需修改可以前往 个人中心>[安全设置](https://portal.qiniu.com/developer/user/security),更换邮箱和手机号。
**3.通知频率。**
每天发送一次。
# 四、关闭通知 [#四关闭通知]
1.点击开关,将预警设为关闭。

# 费用分析说明 (/account/0-cost-analysis-shows-that)
最近更新时间: 2026-05-06 18:24:43
# 概述 [#概述]
费用分析,为客户提供了多维度、可视化查看费用变化趋势、各产品费用占比、资金流入渠道占比等多种费用相关信息,提供比较全面的组合分析能力。该页面主要包含费用总览、费用详情、购买推荐三个模块。
# 费用总览 [#费用总览]
## 查询周期选择:近六个月、近一年 [#查询周期选择近六个月近一年]
> 注:由于本月账单需在下月月初出账,所以费用总览的查询周期不包含本月。
## 可视化形式:折线图、柱状图 [#可视化形式折线图柱状图]
> 注:费用大于统计周期内平均费用的20%线段(柱状图)颜色呈紫色,小于统计周期内平均费用的20%线段(柱状图)呈浅蓝色。
## 汇总维度:全部计费模式、按量计费、包年包月 [#汇总维度全部计费模式按量计费包年包月]
> 注:
> 全部计费模式:包含按量计费和包年包月的全部费用。
> 按量计费:按量计费产品费用,当月账单费用在下月月初出账。
> 包年包月:预付费产品(包含预付费/后付费订单)。

# 费用详情 [#费用详情]
## 汇总维度:产品、计费模式、支付币种、资金流入、资金流出 [#汇总维度产品计费模式支付币种资金流入资金流出]
> 注:
> 产品:按统计周期内所消费产品类别汇总。
> 计费模式:按量计费、包年包月
> 支付币种:现金、抵用券、赠送金
> 资金流入:包含所有通过不同渠道流入账户的资金,如充值、转账、退款、赠送等。这里的时间是资金流入/流出实际发生的时间和月结算单/账单所在月份不一一对应,例如2月份充值支付1月份账单,账单时间是1月份,充值时间是2月份。
> 资金流出:包含所有通过不同渠道流出账户的资金,如消费、转账等。
## 时间选择:上个月、近三个月、近六个月 [#时间选择上个月近三个月近六个月]
> 注:
> 上个月:按不同汇总维度统计上月各种金额占比。
> 近三个月:按不同汇总维度统计近三个月(不包含本月)各类金额占比。
> 近六个月:按不同汇总维度统计近六个月(不包含本月)各类金额占比。
## 查询周期:近六个月、近一年 [#查询周期近六个月近一年]
> 注:
> 近六个月:展示近六个月(不包含本月)按不同维度汇总的堆叠图。
> 近一年:展示近十二个月(不包含本月)按不同维度汇总的堆叠图。

# 购买推荐 [#购买推荐]
## 近六个月(不包含本月)的消费情况总结: [#近六个月不包含本月的消费情况总结]
费用最高月份及金额
费用环比增长率最高月份及金额
月平均消费排名前三位产品及消费金额
## 资源包购买: [#资源包购买]
可以点击资源包上「立即抢购」进入相应产品购买页面,也可以点击「云商城」进入云商城选购。

# 电子合同说明及操作手册 (/account/0-electronic-contract-documentation-and-operation-manuals)
最近更新时间: 2026-05-08 17:28:23
# 适用范围 [#适用范围]
电子合同适用于请款、报销等预付费场景。
# 操作手册 [#操作手册]
操作位置:控制台-财务中心-发票与合同-合同管理 ([点击前往](https://portal.qiniu.com/financial/invoice-contract/contract))
1)点击【申请合同】按钮

2)填写合同信息
* 甲方名称:实名认证名称不可更改。
* 地址:根据公司所在地,可自助填写。
* 联系人:公司业务联系人。
* 联系电话:联系人的有效联系电话。
* 服务内容:订单和按量付费产品至少填一个。
* 填写承诺付款金额:该项适用于请款合同,公司若无要求可不填写。

3)直接创建正式合同
创建正式合同后不能再修改,如有特殊需求请联系商务或提交工单。

4)先保存草稿再转为正式合同
若有信息尚未确定,可先保存草稿后续再转为正式合同。草稿状态下的合同允许修改/删除。


5)下载正式电子合同

# 特别提示 [#特别提示]
1)本【合同管理】页面仅针对电子合同,若需纸质合同请联系商务或提交工单。
2)电子合同仅针对标准预付费场景,合同金额不代表最终付款金额,每月应付款金额请以月结算单为准。
3)若签订合同后业务上有任何变更以实际业务规则为准。
4)每个订单只允许关联一个合同,未生成正式合同前您可自助修改,正式合同不可修改,若有需求请联系商务或提交工单。
# 财务对外 API 文档 (/account/0-financial-external-api-documentation)
最近更新时间: 2025-09-10 19:35:37
# 七牛云对外账单API文档 [#七牛云对外账单api文档]
### 更新日志 [#更新日志]
* 2021/12/22 v0.1 内部文档
* 2022/01/04 v1.0 对外文档
* 2022/02/24 v1.1 增加detail接口
* 2022/08/04 v1.2 增加订单、资源包管理接口
* 2023/03/03 v2.0 增加按量计费预估每日快照详情接口、月结算单详情接口v2
* 2023/08/11 v2.1 增加获取账户余额接口
* 2024/02/29 v2.2 增加获取分账账单详情接口
### 概述 [#概述]
财务对外 API 为七牛用户提供更加灵活的财务管理方式。作为对[财务中心](https://portal.qiniu.com/)管理系统的补充,可查看用户在某个账期内各产品的消费情况。
### 注意事项 [#注意事项]
按量计费的账单每月4号出账,为保数据的完整性,请在5号后查看上月账单。如2021年6月账单应在7月5号后查看。
接口支持查询近24个月的数据。
### 接口域名 [#接口域名]
[https://api.qiniu.com/](https://api.qiniu.com/)
### 接口列表 [#接口列表]
* [月结算单概览](#月结算单概览接口)
* [月结算单详情](#月结算单详情接口)
* [订单列表](#订单列表接口)
* [订单详情](#订单详情接口)
* [订单取消](#订单取消接口)
* [资源包当月概览](#资源包当月概览接口)
* [资源包列表](#资源包列表接口)
* [资源包详情](#资源包详情接口)
* [资源包历史抵扣明细](#资源包历史抵扣明细接口)
* [按量计费预估每日快照详情接口](#实时消费每日快照详情接口)
* [账户余额接口](#账户余额接口)
* [分账账单详情接口](#分账账单详情接口)
### API签名 [#api签名]
[文档地址](/products/kodo/development-guidelines/security/access-token)
### 错误码 [#错误码]
| 错误码 | 错误消息 | 错误说明 |
| ---- | --------------------------- | ----------- |
| 1000 | InvalidParameter | 请求参数不正确 |
| 1001 | BaseBillGetFailed | 账单数据获取失败 |
| 1002 | CustomBillGetFailed | 自定义账单数据获取失败 |
| 1003 | OrderGetFailed | 订单数据获取失败 |
| 1004 | MonthStatementGetFailed | 月结算单获取失败 |
| 1005 | QueryTimeExceeded | 请求的时间不正确 |
| 1006 | TransactionGetFailed | 流水数据获取失败 |
| 1007 | CouponUsageGetFailed | 优惠券使用量获取失败 |
| 1008 | CancelOrderByUnionOrderHash | 取消订单失败 |
| 1009 | MonthOverviewGetFailed | 资源包当月概览获取失败 |
| 1010 | RespackOverviewGetFailed | 资源包列表获取失败 |
| 1011 | RespackDetailGetFailed | 资源包详情获取失败 |
| 1012 | HistoryUsageGetFailed | 资源包历史抵扣获取失败 |
| 1013 | GetBalanceOverviewFailed | 账户余额获取失败 |
| 1014 | FindSABillDetailsFailed | 获取分账账单详情失败 |
### 订单产品归属 [#订单产品归属]
以下列举了目前订单系统内商品的产品归属对应常量值,即订单相关接口中的 seller\_id
| seller\_id | 名称 |
| ---------- | ------------- |
| 33 | SSL 证书 |
| 39 | 存储 |
| 45 | CDN |
| 51 | 内容安全 |
| 54 | 云主机 |
| 60 | 直播 |
| 72 | 云短信 |
| 75 | 短视频 SDK |
| 78 | 智能多媒体 |
| 79 | 实时音视频 |
| 82 | 视频监控 |
| 94 | 企业直播aPaaS-P01 |
| 98 | 企业直播aPaaS-P02 |
| 99 | SDK |
### **月结算单概览接口** [#月结算单概览接口]
#### 描述 [#描述]
本接口作GET请求用来获取请求拥有的所有月结算单的概览列表。该接口需要您使用带Authorization签名认证的请求,如果使用匿名请求无法获取账单概览。
#### 请求 [#请求]
##### 请求语法 [#请求语法]
```
GET /billing-api/v1/bill/overview?start=[&state=]
```
如果授权成功,则授权服务器会携带授权码 `code` 重定向至回调地址。
**注意,授权码仅在十分钟内一次有效。**
**错误**
```http
HTTP/1.1 302 Found
Location: https://client.example.com/cb?error=
```
如果授权过程中发生错误,则授权服务器会携带错误信息 `error` 重定向至回调地址。
可能的错误值为:
* `invalid request`:请求不合法,可能缺少必要的参数,或者是 `client_id` 不合法
* `access denied`:授权被拒绝
* `server error`:服务器错误
### 向授权服务器申请授权令牌 [#向授权服务器申请授权令牌]
**请求**
```http
POST|GET https://portal.qiniu.com/oauth/v2/token
Authorization: Basic
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&code=&redirect_uri=
```
> 该接口同时支持 `GET` 方法和 `POST` 方法,`Query Paramters` 中的参数也可以 `Form` 的形式提交
* `grant_type`:必须为 `authorization_code`
* `code`:必填,从 `/authorize` 接口回调后取得的 `code`,即上一步获取到的授权码
* `redirect_uri`:如果在 `/authorize` 接口中也提供了该参数时必填,且必须一样
第三方应用的凭证 `client_id` 和 `client_secret` 可以以两种形式提供,**一种**是以如上例请求中的 `Basic Auth` 的形式提供,**另一种**则是以表单参数的形式提供。
当使用 `Basic Auth` 的方式时,需要在请求头中附加如下信息:
```http
Authorization: Basic
```
其中 ` `为经过 base64 编码的 `client_id` 和 `client_secret`,即 `base64_encode(client_id:client_secret)`
**响应**
```js
{
"access_token": "hoCh3nfpNKVRztaYrmq8Cmvu0AHsrDX0BVM5WrpI9YlASBkJ",
"expires_in": 2591999, // 单位:秒
"refresh_token": "1k5gVZFRM7TS8ue515s5P8ODJkjvXGgMj2zBjRTxMReJBwAL",
"token_type": "Bearer"
}
```
可能返回的错误码为:
* `400`:请求不合法,可能缺少必要的参数,或者是 `client_id` 不合法
* `401`:授权被拒绝
* `500`:服务器错误
### 刷新授权令牌 [#刷新授权令牌]
**请求**
```http
POST|GET https://portal.qiniu.com/oauth/v2/token
Authorization: Basic
Content-Type: application/x-www-form-urlencoded
grant_type=refresh_token&refresh_token=
```
> 该接口同时支持 `GET` 方法和 `POST` 方法,`Query Paramters` 中的参数也可以 `Form` 的形式提交
* `grant_type`:必须为 `refresh_token`
* `refresh_token`:必填,用于刷新的 `refresh_token`
**响应**
同`向授权服务器申请授权令牌`接口
## 资源服务 [#资源服务]
第三方应用从授权服务器拿到的 `Access Token` 即可用于访问资源服务器获取与用户相关的资源。
### 鉴权 [#鉴权]
访问的凭证为 `Access Token`,目前支持的携带方式有:
* 在请求头中添加 `Authorization`头,值为 `Bearer `
* `query param` 中携带 `access_token=`
* `POST` 请求时,Body 中以 Form 的格式携带 `access_token=`
### 接口规格 [#接口规格]
#### 获取用户基本信息 [#获取用户基本信息]
**请求**
```http
GET|POST https://portal.qiniu.com/oauth/v2/api/account/info
```
> 该接口同时支持 `GET` 方法和 `POST` 方法
**响应**
```js
{
data: {
"uid": 1380537799
},
"msg": "succ",
"ret": 0,
}
```
可能返回的错误码为:
* `400`:请求不合法,可能缺少必要的参数,如 token 不合法或已过期
* `500`:服务器错误
#### 获取用户可用额度(需申请配置授权) [#获取用户可用额度需申请配置授权]
**请求**
```http
GET https://portal.qiniu.com/oauth/v2/api/finance/available-balance
```
**响应**
```js
{
data: {
"balance": 9000 // 单位:万分之一元
},
"msg": "succ",
"ret": 0,
}
```
可能返回的错误码为:
* `400`:请求不合法,可能缺少必要的参数,如 token 不合法或已过期
* `500`:服务器错误
# 七牛云费用账户变更说明 (/account/0-seven-niuyun-expenses-account-changes)
最近更新时间: 2026-05-08 18:10:19
2019年9月12日起,我们将调整财务中心可用额度的计算和展示,将按量计费预估金额作为负值列入可用额度,确保用户能查看实时的可用额度,以便判断具体的充值金额。
具体介绍如下,请您耐心阅读,预计阅读时间3分钟。
**1.可用额度计算调整**
可用额度=现金余额+赠送金余额-欠费金额-按量计费预估金额
管理页面:财务中心- >[财务概览](https://portal.qiniu.com/financial/overview)

**2.账户金额说明**
| 名称 | 说明 |
| ------ | ------------------------------------------------------------------------------------------------ |
| 可用额度 | 可以用来购买云服务的余额。 |
| 现金余额 | 通过线上充值或线下银行转账充值的现金余额。 |
| 赠送金余额 | 只能支付按量付费产品的费用,不能购买预付费产品,不能提现和开发票。 |
| 欠费金额 | 用户因使用七牛云服务所产生的欠费金额。 |
| 按量计费预估 | 用户因使用云服务,但未到出账结算的消费金额。立即查看 [按量计费预估](https://portal.qiniu.com/financial/bills/estimated-consume)。 |
**3.可用额度为负的影响**
可用额度为负后,您的账户将进入欠费流程,会根据您的认证类型授予一定的欠费保护期,保护期内您无法操作新建和变更等功能。保护期内若未按要求充值,您将被冻结。保护期时长如下:
* 未认证:1天保护期
* 个人认证:3天保护期
* 企业认证:5天保护期
关于欠费流程的更多说明请参考文档 [新版欠费流程](/faq/account-finance/account-problem/5996-new-owe-the-process-description) 。
**4.设置可用额度预警**
您可以设置可用额度预警,来了解可用额度的变化,以便及时充值,避免欠费影响您的服务 [立即设置](https://portal.qiniu.com/financial/overview)。

# 计费方式变更 (/account/0-switch-charge-method)
最近更新时间: 2026-05-06 17:06:13
本文档主要介绍了针对支持多种计费方式计费的产品,如何变更其计费方式,通过变更计费类型,可以让您选择更合适的计费方式。
### 操作方式 [#操作方式]
1. 登陆七牛云财务中心 - [价格和优惠](https://portal.qiniu.com/financial/price) ,选择需要切换计费方式的产品以及对应计费项,点击【切换计费方式】

2. 您可在不同的计费方式之前切换,如从原有带宽日峰值计费变更为流量计费,请您仔细确认调整后的价格,确认无误后点击【确定】保存变更

3. 确定变更计费方式后,对应计费项会立即调整为新的计费方式和价格

### 变更计费方式后,需注意以下说明: [#变更计费方式后需注意以下说明]
* 切换计费方式每日仅可操作一次且无法撤销或再次变更,操作后当日立即生效,请您关注次日更新的实时消费账单。
* 若您在同个账期月份里进行多次变更计费方式,当月账单会根据实际操作分段计费。举例说明比如于某月1日从原有带宽日峰值计费切换到流量计费方式,再于11日从流量计费方式切换回带宽日峰值计费,再于21日从带宽日峰值计费方式切换到流量计费方式,当月后续不再操作,那实际当月出账单分段为1~~10日流量方式计费,11~~20日带宽日峰值方式计费,21\~31日流量方式计费。
* 变更计费方式为带宽计费后,您已购买的资源包将无法抵扣,故若您已购买资源包请切换到流量计费方式以免影响出账抵扣。
* 若您是与七牛云签约合同的大客户,请联系您的七牛云商务经理变更计费方式,此处不提供切换计费方式的选项。
# 新版财务概况 (/account/0-the-new-financial-situation)
最近更新时间: 2026-04-29 10:51:30
# 一、管理界面 [#一管理界面]
登录账号后,进入管理控制台>财务中心>[财务概览](https://portal.qiniu.com/financial/overview),就可查看新版财务概览。

# 二、账户金额说明 [#二账户金额说明]
* 可用额度:可以用来购买云服务的余额。
* 可用额度=现金余额+赠送金余额-欠费金额-实时消费金额
* 支付费用时,七牛云将优先扣除抵用券、赠送金余额,再扣除现金余额。
* 现金余额:通过线上充值或线下银行转账充值的现金余额。
* 赠送金余额:只能支付按量付费产品的费用,不能提现和开发票。
* 欠费金额:用户使用七牛云服务产生的欠费金额,但不包括已消费未出账金额和已出账未扣费金额。
* 实时消费金额:七牛云会在账户内暂时冻结实时消费金额,冻结的金额并未实际消耗,更多说明请参考 [按量计费预估](/account/bill-management/0-real-spending-detail)
# 违规信息处罚标准 (/account/0-violation-of-information-standards)
最近更新时间: 2026-05-06 17:16:53
| 产品类别 | 违规级别 | 处罚策略 |
| ---------- | ---- | ---- |
| 对象存储(KODO) | 轻 | 封禁资源 |
| | 中 | 冻结空间 |
| | 重 | 冻结账号 |
| CDN | 轻 | 封禁外链 |
| | 中 | 冻结域名 |
| | 重 | 冻结账号 |
| 视频直播(Pili) | 轻 | 封禁房间 |
| | 中 | 冻结空间 |
| | 重 | 冻结账号 |
| 快直播(Miku) | 轻 | 封禁房间 |
| | 中 | 冻结空间 |
| | 重 | 冻结账号 |
| 云主机服务(QVM) | 轻 | 阻断网络 |
| | 中 | 冻结主机 |
| | 重 | 冻结账号 |
## 注: [#注]
违规级别将根据账号的[违规类型](/account/0-harmful-information-classification)、违规数量、传播程度等情况综合判定。
# 违规信息处理帮助 [#违规信息处理帮助]
请您根据站内信或邮箱中《违规信息处理通知》里面通报的违规内容,尽快完成清理规避风险。
## 注: [#注-1]
监管部门下发要求处置的,不支持解除封禁。
# 抵用券介绍 (/account/0-vouchers-types-and-rules-is-introduced)
最近更新时间: 2026-05-06 17:57:34
# **一、抵用券管理页面** [#一抵用券管理页面]
入口:管理控制台->财务中心
-订单券:[https://portal.qiniu.com/financial/coupon](https://portal.qiniu.com/financial/coupon)
-账单券:[https://portal.qiniu.com/financial/voucher](https://portal.qiniu.com/financial/voucher)

# **二、抵用券分类** [#二抵用券分类]
根据抵用券适用的系统/付费类型的不同,分为:
-账单券:适用于按量付费的后付费产品费用。
-订单券:适用于流量包、SSL证书、包年包月的云主机等一次性结算的产品费用。
# **三、抵用券优惠规则** [#三抵用券优惠规则]
## **1、满减类型** [#1满减类型]
根据有无金额门槛,分为:无门槛券和满减券。
## **2、抵用券面额** [#2抵用券面额]
抵用券能抵扣的最大金额。
## **3、抵用券门槛** [#3抵用券门槛]
使用抵用券需要满足的费用门槛。
## **4、生效时间** [#4生效时间]
抵用券的有效时间范围。
# **四、抵用券使用规则** [#四抵用券使用规则]
## **1、使用次数** [#1使用次数]
根据抵用券能够使用的次数,分为:仅一次使用和可多次使用。
## **2、付费类型** [#2付费类型]
-预付费(即订单券)
-后付费(即账单券)
## **3、适用产品/商品** [#3适用产品商品]
抵用券能适用在哪些产品/商品上。
## **4、抵扣规则** [#4抵扣规则]
账单券:账单出账扣费后,系统将自动抵扣多张有效状态、符合时间范围、符合适用范围的账单抵用券,优先抵扣快过期的抵用券。
订单券:订单券不会自动抵扣,需要您选购好商品下单时,主动选择需要使用的抵用券,再进行支付。
# **五、抵用券使用注意事项** [#五抵用券使用注意事项]
## **1、订单抵用券** [#1订单抵用券]
(1)每个订单最多只能使用一张抵用券,抵用券不可叠加使用。
(2)订单退款时,抵用券不支持退回;并且抵用券无法转让、提现,抵用券支付的金额无法开票。
(3)抵用券无法抵扣欠费金额。
## **2、账单抵用券** [#2账单抵用券]
(1)抵用券无法抵扣欠费金额。
(2)若通过活动获得抵用券,请于激活绑定抵用券后再使用,已使用或绑定成功的抵用券将显示在已激活抵用券列表。
# **六、举例说明** [#六举例说明]
抵用券:


以上抵用券类型和规则解释如下:
-抵用券类型:订单券
-抵用券满减类型:满减券
-抵用券面额:10元
-抵用券门槛:100元
-抵用券生效时间:2019-12-16 18:10:29 \~ 2020-01-15 18:10:29
-抵用券使用次数:仅一次可用
-抵用券付费类型:预付费
-抵用券使用商品:预付费产品通用
-抵用券抵扣规则:在下单时,选择该抵用券,再进行支付。
# 常见账单问题汇总 (/faq/account-finance/12989-Bill-overview)
最近更新时间: 2026-05-26 18:11:35
* 欠费了如何确定自己的消费明细
* 为什么会产生欠费
* 可用额度预警
* cdn流量说明
* 如何查看充值记录等
* 按量计费预估费用描述,资源包购买、续费
* 为什么自动瘦身费用很高?
***
# 1. 欠费了如何确定自己的消费明细 [#1-欠费了如何确定自己的消费明细]
收到邮件提示欠费,进入[财务中心](https://portal.qiniu.com/financial/overview),可以通过[按量计费预估](https://portal.qiniu.com/financial/bills/estimated-consume)查看自己当月的消费详情。
# 2. 为什么会产生欠费 [#2-为什么会产生欠费]
按量计费预估,是延迟统计的;例如今天的消费,需要到明天才会完成统计,有一定延迟导致的。
# 3. 可用额度预警 [#3-可用额度预警]
为了避免欠费,可以设置下[可用额度预警](https://portal.qiniu.com/financial/overview),余额到达您的设定数值会给您提醒。
注意:可用额度预警是基于按量计费预估进行提醒的,也有一天的延迟。

# 4. cdn流量是什么,如何分析自己产生的流量 [#4-cdn流量是什么如何分析自己产生的流量]
cdn流量是访问cdn域名产生的流量费用;可以通过[用量统计](https://portal.qiniu.com/cdn/statistics/usage/flow)来查看自己的流量;[日志分析](https://portal.qiniu.com/cdn/statistics/log/access)可以查看到流量来源地区等信息。
如果需要查看访问量较高的ip或者url,可以通过[TOP 访问统计](https://portal.qiniu.com/cdn/statistics/log/top)查看对应的信息,列举了前100访问量高的ip和url。
# 5. 如何查看充值记录等 [#5-如何查看充值记录等]
[收支明细](https://portal.qiniu.com/financial/cost/income-expenses),可以查看到您的余额抵扣信息,可以切换时间和流水类型对应查看。

# 6. 按量计费预估费用描述,资源包购买、续费 [#6-按量计费预估费用描述资源包购买续费]
如果需要根据您的[按量计费预估](https://portal.qiniu.com/financial/bills/estimated-consume)购买对应的资源包可以参考下如下(资源包主要是kodo和cdn的):
| 费用描述 | 费用说明 | 对应资源包 |
| ------------------ | ------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| 标准存储-对应存储区域 | 存储空间标准存储类型的文件容量的使用(有10g的免费额度)产生的计费 | [标准存储资源包](https://qmall.qiniu.com/template/MTEy?spec_combo=MzA0Mw\&ref=index) |
| 标准存储CDN回源流出流量-对应区域 | 回源流量具体说明可以参考文档[回源流量说明](/faq/cdn/6358-bills-storage-cdn-back-to-the-origin-of-traffic) | [回源流量资源包](https://qmall.qiniu.com/template/MTEy?spec_combo=MzE3NQ\&ref=index) |
| 外网流出流量-对应区域 | 通过自定义源站域名、s3域名访问或者使用工具没有指定cdn域名,访问产生的流量 | [外网流出流量资源包](https://qmall.qiniu.com/template/MTEy?spec_combo=MzE0Mg\&ref=index) |
| CDN-HTTP(S)-中国大陆 | 通过cdn域名访问产生的流量(http协议的cdn域名有10G的免费额度) | [cdn中国大陆资源包](https://qmall.qiniu.com/template/NTI?ref=category\&spec_combo=MTk0OA\&ref=index) |
| CDN-HTTP(S)-海外 | 海外的cdn域名访问产生流量 | [海外cdn资源包](https://qmall.qiniu.com/template/NTU?ref=category\&spec_combo=MjEzNA) |
# 7. 为什么自动瘦身费用很高? [#7-为什么自动瘦身费用很高]
自动瘦身费用是您的CDN域名开启了 [自动瘦身](/products/cdn/configuration-management-fusion/5-image-optimization) 功能后,访问png或jpg图片时产生的。
费用增加一般是以下原因:
1、CDN域名配置了不缓存或缓存时间很短,CDN节点没有缓存,频繁回源拉取资源导致。缓存配置参考[文档](/products/cdn/configuration-management-fusion/2-cache-configuration)
2、存储空间或源站新上传文件很多,且被大量访问产生的。存储空间的文件上传统计数据可以参考 [统计分析](/products/kodo/kodo-console-guide/1-statistical-analysis) 文档查询。
# 按量计费预估详细费用说明 (/faq/account-finance/12990-real-spending-detail-describe)
最近更新时间: 2026-09-03 15:36:32
# 一、KODO [#一kodo]
存储这边的收费文档可以参考:[存储计费说明文档](/products/kodo/1-metering-and-billing)
[存储价格详情](https://www.qiniu.com/prices/kodo)
1.标准存储-(华东/华南/华北/北美/亚太):存储空间容量的收费。**每个月有10G的免费额度**,超出部分按对应区域的单价收费。
如下费用账单,减去10G的免费额度,剩下的按单价计费:

2.低频/归档/深度归档-(华东/华南/华北/北美/亚太):存储空间容量的收费;**没有免费额度**。

3、智能分层存储:这个存储类型的收费是按访问频率不同,分别计算的;分为智能分层存储频繁访问层/不频繁访问层/归档直读访问层,以及智能分层对象监控和自动化费用。
具体收费项目如下

4. CDN回源流出流量-(华东/华南/华北/北美/亚太):存储空间绑定cdn域名,访问cdn域名时,cdn节点「没有缓存」时,需要回源站拉取资源并缓存,从空间拉取资源到cdn节点,产生的流量费用就是回源流量。**每个月有10G的免费额度**,全部存储区域通用免费额度,超出部分按对应区域的单价收费。

5.数据取回-(华东/华南/华北/北美/亚太):除了标准存储,其他类型的存储访问,解冻会产生数据取回的费用
低频存储:访问低频存储数据时,会产生额外的数据取回费。按服务端读取的数据量计算
归档直读存储:访问归档直读存储数据时,会产生额外的数据取回费。按服务端读取的数据量计算
归档存储:访问归档存储数据前,需要先解冻数据。按解冻数据量计算
深度归档存储:访问深度归档存储数据前,需要先解冻数据。按解冻数据量计算

6.外网流出流量-(华东/华南/华北/北美/亚太):使用自定源站域名、或者使用工具没有指定cdn域名访问下载产生的流量(各个存储类型都会产生)。**没有免费额度**。
标准存储外网流出流量

低频存储外网流出流量

7.Put/Delete请求:调用写请求的次数(包括 list 请求在内),比如上传/删除等。各个存储类型共用,**每月10万的免费额度**。


8、Get请求:调用读请求的次数,比如访问文件。各个存储类型共用,**每个月100万次的免费额度**。

# 二、CDN [#二cdn]
CDN的收费可以参考:[CDN 产品价格说明](/products/cdn/0-cdn-product-pricing)
[CDN价格详情](https://www.qiniu.com/prices/qcdn)
1.CDN-HTTP(S)-中国大陆:国内线路cdn访问产生的流量费用,**其中CDN-HTTP协议的域名,每个月有10G的免费额度**;当域名使用HTTPS协议时,无论请求是否使用HTTPS,都是**按HTTPS流量收费的,且没有免费额度**。

2.CDN-HTTP(S)-海外未分区:使用海外cdn,但是不按分区计费产生的流量,是无法抵扣资源包的,也**没有免费额度**。
注意:海外未分区流量需要联系商务经理进行分区,分区后可正常使用免费额度或资源包进行抵扣

3、CDN-HTTP(S)-(亚洲/亚洲其他/欧洲北美/南美洲/大洋洲与其他):使用海外cdn,按请求节点所在地区分区计费,可以使用对应资源包抵扣;**其中CDN-HTTP协议的域名,每个月有10G的免费额度**;当域名使用HTTPS协议时,无论请求是否使用HTTPS,都是**按HTTPS流量收费的,且没有免费额度**。
# 三、全站加速 [#三全站加速]
全站加速流量收费参考:[全站加速计费说明](/products/dcdn/0-dcdn-billing-instructions)
1.动态请求数计费:全站加速请求收费,**每月5万的免费额度**。

2.全站加速-HTTP(S)协议-(中国大陆/亚洲/亚洲其他/欧洲北美/南美洲/大洋洲与其他):全站加速流量收费,**没有免费额度**。

# 四、QVM [#四qvm]
云主机计费说明参考:[计费说明文档](/products/qvm/0-qvm-billing-contrast)
云主机主要计费模式为:预付费(包年包月)、后付费(按量付费)。下面仅为说明部分
1.QVM磁盘快照:不同区域收费不一样。[快照页面](https://portal.qiniu.com/qvm/vm/snapshot)可以查看您账号下的快照。

2.镜像收费:您账号下创建的磁盘,[查看您的镜像](https://portal.qiniu.com/qvm/vm/image)。
3、磁盘收费:单独购买磁盘只支持按量付费模式,[磁盘查看页面](https://portal.qiniu.com/qvm/vm/disk)。

4、负载均衡,可以在这边页面查看:[负载均衡页面](https://portal.qiniu.com/qvm/slb/instance)。
# 接收对象管理-Webhook:如何获取钉钉机器人 (/faq/account-finance/13427-slugeceptionmanagement-ding)
最近更新时间: 2026-04-09 16:39:48
**1. 在 PC 版钉钉中找到需要接收消息通知的会话群。选中并右键单击群,在弹框中单击【群设置】**。

**2. 找到【智能群助手】-【添加更多】-【添加机器人】-【自定义】-【添加】,编辑机器人名称和选择添加的群组。**
**3. 安全设置请选择【自定义关键词】,并输入:七牛云**

**4. 提交后即可获取webhook地址**

# 接收对象管理-Webhook:如何获取飞书机器人 (/faq/account-finance/13433-receptionmanagementfeishu)
最近更新时间: 2026-04-09 16:47:12
**1. 在 PC 版飞书中找到需要接收消息通知的会话群。进入后点击右侧的设置并选择【群机器人】。**

**2. 点击【添加机器人】-【自定义机器人】,并填写机器人名称和描述**

**3. 安全设置请选择【自定义关键词】,并输入:七牛云**

**4. 完成配置,即可获取webhook地址**
# 接收对象管理-Webhook:如何获取企业微信机器人 (/faq/account-finance/13434-wechat)
最近更新时间: 2026-04-09 16:48:54
**1. 在 PC 版企业微信中找到需要接收消息通知的企业微信群。选中并右键单击企业微信群,在弹框中单击【添加群机器人】。**

**2. 在弹框中单击【新创建一个机器人】,自定义机器人名称,填写完后单击【添加机器人】,即可获取webhook地址。**

# 如何进行网站公安备案和查询公安备案信息 (/faq/account-finance/3987-how-to-make-website-and-inquires-the-police-put-on-record-information)
最近更新时间: 2026-04-30 10:28:53
# 查询公安备案信息 [#查询公安备案信息]
打开 [全国公安机关互联网安全管理服务平台](https://beian.mps.gov.cn/#/)。
对首次登录系统的用户,系统会自动弹出提示信息,提示您先填写开办主体信息。
查询方式:在未登录网站情况下点击页面上方的【公共查询】,如下图所示:

可分别根据网站名称、网站域名、公安机关备案号来查询是否已经存在备案信息,查到显示如下页面:

# 网站公安备案的操作流程 [#网站公安备案的操作流程]
## 开办主体管理 [#开办主体管理]
注册并登录 [全国公安机关互联网安全管理服务平台](https://beian.mps.gov.cn/#/)。
对首次登录系统的用户,系统会自动弹出提示信息,提示您先填写开办主体信息。

开办主体申请: 对于首次备案的用户,必须首先填写主办单位及负责人的真实有效信息,只有提交了主体信息后,才能在该主体下进行网站备案。
开办主体分为: 个人、单位;单下又细分为:企业单位、国防军队、高等院校、政府机构、事业单位、社会团体、境外组织。
点击左侧菜单【开办主体管理】,您需要根据实际情况选择自己的开办主体性质,并正确填写各项信息\*\*(注:填写主体信息时,请您务必保证所填写的信息完整、真实、准确,这样才能通过审核,顺利完成备案)\*\*填写完成后点击【保存】,公安民警审核后您会收到短信通知,也可在系统消息中查看审核结果,一般审核时间为2-3个工作日。


* 填写注意事项:
1. 上传的证件图片要清晰大小在5MB以内,支持png,jpeg,jpg格式;
2. 单位名称:应完整填写网站主办者全称,如个人应填写个人姓名,企业应填写工商营业执照注册公司名 称。内容应真实准确,不得以数字、字母等符号或以网站名称代替网站主办者信息;
3. 单位性质:应与主办单位名称等信息对应一致,如主办单位名称为某某公司,则单位性质应为企业;如主办单位为张三,则单位性质应为个人;
4. 证件号码:应符合相应的格式要求,且与主办单位性质等信息(企业、事业单位、政府机关、军队、社会团体、个人等)对应一致。如主办单位性质为企业,只能填写不应填写军队代号或个人身份证等号码等非工商营业执照号码或非组织机构代码证号码;
5. 投资或主管单位:网站所属者为企业、事业单位、社会团体、政府机关、军队填写法人姓名或单位最高负责人姓名;
6. 负责人常住地:内容真实准确,格式标准完整。例如,农村单位应详细填写到村,城镇单位应填写到街道门牌号或信箱号;
7. 办公电话:务必填写。号码应格式标准、内容真实准确,标准格式为“0086-010-68870788”,不得出现“010-00000000”等明显不真实的联系方式。
## 新办网站备案申请 [#新办网站备案申请]
点击左侧菜单【网站业务-新办网站申请】,根据要求填写真实合法的信息,填写完成后,点击【提交】等待公安民警审核,一般审核时间为3-5个工作日\*\* (注务必按照要求填写,否则将被退回) \*\*
### 第一步:网站开办主体,已经提交申请或审核已经通过,直接点击【下一步】即可; [#第一步网站开办主体已经提交申请或审核已经通过直接点击下一步即可]

### 第二步:网站基本信息填写 [#第二步网站基本信息填写]


* 填写注意事项:(务必按照要求填写,否则将被退回)
注: 您的网站若不涉及前置审批,请不要在选项内容中打勾;如果没有您的网站服务内容,就无需选择。
1. 网站名称:应与其主办单位性质等信息对应一致。如主办单位性质为个人的网站,不得以“某某有限公司”等与其主命名;不得以域名作为网站名称。主办单位性质为非政府机构或非政府授权机构的网站,不得以“某某市人民政府”、“某某监察”等公共事务关键字命名;主办单位性质为非国家级单位的网站,不得以“中国”“中华”“维权”等字头命名。无新闻(省委宣传部获得前置审批)、出版(省出版局获得前置审批)、教育(省教育厅获得前置审批)、卫生(省卫生厅获得前置审批)、药监(省食品药品监管局获得前置审批)、文化(省文化厅获得前置审批)、广电(省广电厅获得前置审批)等前置审批或专项审批的网站,不得以相关领域。关键词命名。如未经新闻管理部门前置审核同意的,不得以“新闻网”命名。
2. 如果您的虚拟主机只对应一个IP,可以填写同一个IP地址;如果对应多个如实填写起止IP即可。
3. 网络接入服务商,域名注册服务商:可以选择境内与境外,在境内可以按照地域去进行选择,当找不到所使用的服务商时,选择其他可以手动输入服务商名称等信息。
4. 网站服务类型:单位可选择单位门户网站,个人可选择博客/个人空间,如有其他类型内容可如实勾选。
5. 互联网危险品信息发布,网址内容中前置审批内容选择时,均需要上传相应的资质证明文件以备核实。
### 第三步:网站负责人信息填写 [#第三步网站负责人信息填写]
如果网站负责人信息/信息安全负责人信息/舆情引导员信息与开办人主体负责人信息相同,直接打钩即可自动填充;如果不同则根据实际情况分别填写。

* 填写注意事项:
负责人姓名:应填写真实姓名全称,不得填报“王先生”、“李小姐”、“个人”或者加带数字或字母的姓名等明显不真实的姓名。
### 第四步:提示说明 [#第四步提示说明]
请认真阅读,如果没有异议,勾选“我已阅读信息网络安全保护方案”点击【提交】,公安民警会在3-5个工作日给已反馈,反馈的信息将以短信形式通知,也可登录网站在系统消息中查看。

* 特别注意:
非交互式网站初步审核完成后即完成备案,交互式网站需要进行面审或实地检查,具体时间将以短信告知。
如收到公安机关面审通知,请按照短信通知的时间携带所需证件到公安机关进行材料完整性检验;
如收到公安机关实地审核通知:请按照通知的时间做好准备,配合公安民警进行安全检查。
### 第五步:审核通过发放备案号 [#第五步审核通过发放备案号]
在完成以上审核以后,公安机关将会发放公安部备案号,您需要将备案号放置网站首页下端 ;您可以将网站备案代码放置在网站上,获取代码方法:在已备案网站中查看网站详情,点击【点击复制备案号】即可获得备案代码。


# 外网流出流量和 GET 请求次数问题 (/faq/account-finance/4405-%E5%A4%96%E7%BD%91%E6%B5%81%E5%87%BA%E6%B5%81%E9%87%8F%E5%92%8CGET%E8%AF%B7%E6%B1%82%E6%AC%A1%E6%95%B0%E9%97%AE%E9%A2%98)
最近更新时间: 2026-05-07 13:25:24
# 外网流出流量 [#外网流出流量]
外网流出流量的费用属于对象存储的费用。
如果使用了七牛测试域名或者融合 CDN 域名访问资源,是**不会计算**外网流出流量的。
只有以下五种情况会计算外网流出流量:
1. 使用第三方 CDN 回源七牛对象存储空间的回源请求。
2. 使用 [qshell](/products/kodo/0-qshell) 工具的 [qdownload](https://github.com/qiniu/qshell/blob/master/docs/qdownload.md) 命令下载,但没有指定 cdn\_domain 。
3. 使用 [kodo-browser](/products/kodo/1-kodo-browser) 工具不使用自有域名下载资源。
4. 调用 [AWS S3协议](/products/kodo/development-guidelines/aws-s3-compatible) 下载空间资源。
5. 使用 [空间源站域名](/products/kodo/kodo-console-guide/bucket-management/kodo-domain-name-management/1-set-the-custom-source-domain-name) 下载资源。
# GET 请求 [#get-请求]
七牛对象存储的 GET 请求次数与 HTTP 协议中的 GET 方法的请求不是同一个概念,不是说对域名发起了一次 GET 请求,就会计算一次 GET 请求次数。
如果使用七牛的测试域名或者融合 CDN 域名访问资源,如果没有进行回源,是**不会计算** GET 请求数的。
只有以下五种情况会计算 GET 请求次数:
1. 使用七牛的测试域名或者融合 CDN 域名访问资源,进行了回源请求。
2. 使用第三方 CDN 回源七牛对象存储空间的回源请求。
3. 使用 [qshell](/products/kodo/0-qshell) 工具的 [qdownload](https://github.com/qiniu/qshell/blob/master/docs/qdownload.md) 命令下载,但没有指定 cdn\_domain 。
4. 使用 [空间源站域名](/products/kodo/kodo-console-guide/bucket-management/kodo-domain-name-management/1-set-the-custom-source-domain-name) 下载资源。
5. 使用 [kodo-browser](/products/kodo/1-kodo-browser) 工具不使用自有域名下载资源。
6. 调用 [AWS S3协议](/products/kodo/development-guidelines/aws-s3-compatible) 下载空间资源。
# 按量计费预估常见问题 (/faq/account-finance/6218-real-spending-common-problems)
最近更新时间: 2026-05-07 15:04:27
**1.如何查看按量计费预估(当月消费明细)金额和明细?**
您可以在 财务中心-[财务概览](https://portal.qiniu.com/financial/overview) 上查看实时消费金额,点击实时消费金额或进入财务中心 - [按量计费预估](https://portal.qiniu.com/financial/bills/estimated-consume) 均可查看当月未出账的预估消费明细详情。
**2.按量计费预估金额是否已经扣费?**
按量计费预估金额并未扣费,仅占用了您的可用额度,且该部分金额不能使用、不能提现,相当于平台暂时冻结了您的可用额度,以确保您能支付月账单。待次月月账单出账扣费,您的按量计费预估金额会同时更新,释放上月被占用的可用额度,并根据您的月账单进行扣费。
**3.为什么会产生按量计费预估金额?**
只要您产生的用量超出了免费额度和已购买的资源包的抵扣范围,额外的用量都会进行计费,产生费用。
**4.如何监控当月按量计费预估的情况?**
您可以设置可用额度预警,当可用额度低于您设置的阈值时,系统会向您推送通知,关于可用额度预警可参考 [设置可用额度预警](/account/0-available-credit-warning)。
**5.当月消费较高,导致可用额度为负了会怎么办?**
当可用额度为负,账户将进入欠费流程,您可参考 [新版欠费流程](/faq/account-finance/account-problem/5996-new-owe-the-process-description)。
# 增值税专用发票抬头说明 (/faq/account-finance/6434-special-invoices-for-value-added-tax-payable-to-illustrate)
最近更新时间: 2019-12-30 14:21:43
* 根据《中华人民共和国发票管理办法》、《中华人民共和国发票管理办法实施细则》和《增值税专用发票使用规定》,纳税人销售货物、提供应税服务以及从事其他经营活动,应向购买方开具发票。
* 自2012年起,国家开始实行营业税改征增值税试点方案,并逐渐在全国范围内多行业展开。由于增值税发票管理比营业税发票管理要规范和严格得多,对于纳入了增值税管理体系的互联网、信息技术服务等行业来说,税务部门对纳税人的企业纳税管理和发票管理提出了更高的要求。其中,《增值税专用发票使用规定》明文规定专用发票开具要与实际交易相符(《规定》第十一条)。
* 用户在购买七牛云服务时,通过网络页面点击确认等方式选择接受了七牛云的服务条款,即视为双方订立了有效合约。用户实名认证主体为系统自动获取的实际交易主体,实名认证名称为系统自动获取的发票抬头,一个七牛云账号只对应一家法律主体。
* 若您尚未完成实名认证,请安排好您的时间,完成实名认证流程,以免影响后续发票申请。
* 七牛云禁止一个账号下随意变更发票抬头,主要系基于对增值税发票(尤其是专用发票)管理的严肃性考虑,这同时也是国家有关部门的要求。若您要修改发票抬头需先修改实名认证信息。实名认证重新认证通过后,即可将新实名认证名称作为专票抬头进行开票。
# 含赠送金充值提现说明 (/faq/account-finance/6450-give-gold-deposits-containing-withdrawal)
最近更新时间: 2020-01-13 15:06:59
# \*\* 1 充值赠送金概述\*\* [#-1-充值赠送金概述]
-充值赠送金只能支付按量计费的产品,不可开票、提现。
-赠送金是默认您的此次充值的现金全部用于消费的情况下所给予的赠送,当该笔充值未全部消费而申请提现时,此次赠送无效,在可提现金额中将减去对应的赠送金额。
# \*\* 2 含赠送金充值提现实例 \*\* [#-2-含赠送金充值提现实例-]
## \*\* 2.1 单笔含赠送金充值提现 \*\* [#-21-单笔含赠送金充值提现-]
充值金额 = 1000元
赠送金额 = 300元
消费金额 = 500元
提现前现金余额 = 800元
最大可提现金额 = 充值金额 - 消费金额 = 1000元 - 500元 = 500元
提现后现金余额 = 0元
备注:该笔充值赠送无效。
\*\* 若您申请提现金额小于最大可提现金额,则调整账户现金余额。\*\*
示例:
申请提现金额 = 300元
提现后现金余额 = 最大可提现金额 - 申请提现金额 = 500元 - 300元 = 200元
## **2.2 多笔含赠送金充值提现** [#22-多笔含赠送金充值提现]
### **例1 消费金额 \<= 第一笔充值金额** [#例1-消费金额--第一笔充值金额]
充值金额(1) = 1000元
赠送金额(1) = 300元
充值金额(2) = 1000元
赠送金额(2) = 300元
消费金额 = 500元
提现前现金余额 = 2000元
最大可提现金额 = 充值金额1 + 充值金额2 - 消费金额 = 1000元 + 1000元 - 500元 = 1500元
提现后现金余额 = 0元
备注:第一、二笔充值赠送均无效。
**若您申请提现额小于最大可提现金额,则调整账户现金余额。**
示例:
申请提现金额 = 300元
提现后现金余额 = 充值金额(1) + 赠送金额(1) + 充值金额(2) - 消费金额 - 申请提现金额 = 1000元 + 300元 + 1000元 - 500元 -300元 = 1500元
备注:第一笔充值赠送有效,第二笔充值赠送无效。
**若 充值赠送(2) \< 客户申请提现金额 \< 最大可提现金额**
申请提现金额 = 1100元
提现后余额 = 充值金额(1) + 充值金额(2) - 消费金额 - 申请提现金额 = 1000元 + 1000元 -500元 - 1100元 =400元
备注:两笔充值赠送均无效。
### **例2 第一笔充值金额 \< 消费金额 \<= 第一笔充值金额 + 第一笔赠送金** [#例2-第一笔充值金额--消费金额--第一笔充值金额--第一笔赠送金]
充值金额(1) = 1000元
赠送金额(1) = 300元
充值金额(2) = 1000元
赠送金额(2) = 300元
消费金额 = 1100元
提现前现金余额 = 1500元
最大可提现金额 = 充值金额(2) = 1000元
提现后现金余额 = 200元
备注:第一笔充值赠送有效,第二笔充值赠送无效。第一笔现金余额200元可继续用于消费。
**若您申请的提现金额小于最大可提现金额,则调整账户现金余额。**
示例:
申请提现金额 = 500元
提现后现金余额 = 充值金额(1) + 赠送金额(1) + 充值金额(2) - 消费金额 - 申请提现金额 =1000元 + 300元 + 1000元 - 1100元 - 500元 =700元
**若您申请提现金额大于最大可提现金额,则两笔充值赠送均无效。**
示例:
申请提现金额 = 1200元
可提现金额 = 充值金额(1) + 充值金额(2) -消费金额 =1000元 + 1000元 - 1100元 = 900元
提现后现金余额 = 0元
### **例3 消费金额 >= 第一笔充值金额+第一笔赠送金** [#例3-消费金额--第一笔充值金额第一笔赠送金]
充值金额(1) = 1000元
赠送金额(1) = 300元
充值金额(2) = 1000元
赠送金额(2) = 300元
消费金额 = 1500元
提现前现金余额 = 1100元
最大可提现金额 = 充值金额(1) + 赠送金额(1) + 充值金额(2) - 消费金额 = 1000元 + 300元 + 1000元 - 1500元 = 800元
提现后现金余额 = 0元
备注:第一笔充值赠送有效,第二笔充值赠送无效。
**若您申请提现金额小于最大可提现金额,则调整账户现金余额。**
示例:
申请提现金额 = 500元
提现后现金余额 = 最大可提现金额 - 申请提现金额 = 800元 - 500元 = 300元
## **2.3 无赠送金和含赠送金充值并存** [#23-无赠送金和含赠送金充值并存]
充值金额(1) = 300元(无充值赠送)
充值金额(2) = 1000元
赠送金额(2) = 300元
消费金额 = 1000元
提现前现金余额 = 600元
最大可提现金额 = 充值金额(1) + 充值金额(2) - 消费金额 = 300元 + 1000元 -1000元 = 300元
提现后现金余额 = 0元
备注:按照充值时间顺序扣费,第二笔充值赠送无效。充值赠送金是否为有效情况和2.2例子相同。
**若您申请提现金额小于最大可提现金额,则调整账户现金余额。**
示例:
申请提现金额 = 200元
提现后现金余额 = 最大可提现金额 - 申请提现金额 = 300元 - 200元 = 100元
### **提示:** [#提示]
上述例子中不涉及含抵用券的情况。
# 七牛工单小助手使用指南 (/faq/account-finance/7023-qiniu-work-instructions-on-using-a-single-little-helper)
最近更新时间: 2020-07-27 18:59:52
七牛云推出移动端工单小程序,通过手机即可快速提交、查看工单,关注七牛云服务公众号,第一时间获取七牛最新消息通知,解决问题,快人一步。
# 扫码获取七牛云工单小助手 [#扫码获取七牛云工单小助手]

# 关联七牛账号 [#关联七牛账号]
通过点击「`我`」-「`关联七牛云账号`」

# 消息订阅 [#消息订阅]
开启微信推送功能,订阅七牛工单消息,需要先关注微信公众号『`七牛云服务`』,关注后即可第一时间获取工单回复进展

# 提交工单 [#提交工单]
通过点击「`首页`」-「`创建工单`」选择具体的产品和问题类型,填写并提交工单

# 查看已提交工单 [#查看已提交工单]
通过点击「`首页`」-「`我的工单`」,即可查看到所有已经提交的工单,建议点击「待您处理」查看七牛工程师已经处理回复的工单

# 一键投诉 [#一键投诉]
通过点击工单页面,「`一键投诉`」按钮,进行问题及时升级反馈

# 关闭工单 [#关闭工单]
若问题已经解决,通过点击工单页面,「`关闭工单`」关掉当前工单

# 评价工单 [#评价工单]
通过点击工单页面,「`关闭工单`」-「`立即评价`」对本次服务进行评价

# 对公汇款说明 (/faq/account-finance/8169-contrary-to-the-remittance-instructions)
最近更新时间: 2026-05-09 09:53:22
为方便您通过对公汇款方式充值,七牛云为您提供浦发银行汇款专属账号。专属账号为13位数字,用于将您通过银行柜台或网银等方式向专属账号的汇款自动匹配至七牛云账户下。专属账号和七牛云发票显示账号二者实质为同一账号。建议您使用专属账号汇款,通过专属账号汇款准实时到账,缩短到账时间。
# 对公汇款流程 [#对公汇款流程]
## 1、获取专属收款账号 [#1获取专属收款账号]
位置:[财务中心 > 账户充值](http://portal.qiniu.com/financial/recharge)
点击「对公汇款」页面,在对公汇款信息处点击「复制以上收款信息」按钮获取您的专属收款账号。

## 2、打款至专属收款账号 [#2打款至专属收款账号]
* 通过网上银行/手机银行/电汇/支票/柜台打款等方式打款至您的七牛云专属收款账号。
* 每个七牛账号都有对应的专属收款账号,该专属收款账号不可用于其他七牛云账号或其他客户,请注意核对,避免充错账号。
* 专属收款账号暂不支持外币汇款。
## 3、查询充值结果 [#3查询充值结果]
* 专属账号汇款到账时间:准实时到账。(具体到账时间以银行的实际到账时间为准。)
* 查询位置:[财务中心 > 成本费用 > 收支明细](https://portal.qiniu.com/financial/cost/income-expenses)
* 您也可以 [设置](http://portal.qiniu.com/notification/user-setting) 手机短信、邮件、站内信的方式接收到账信息。
# 旧版对公汇款信息 [#旧版对公汇款信息]
### 通用账号汇款特别说明 [#通用账号汇款特别说明]
* 为了您的合法权益,转账时请备注您的七牛云账号。
* 如银行不支持"@"符号输入,请使用中文“艾特”替代。eg:[mail@qiniu.com](mailto:mail@qiniu.com);mail艾特qiniu.com。
* 银行转账会需要至少 3 个工作日到账,期间请耐心等待,如遇到问题可以联系销售或者技术支持。
### 通用收款账号信息 [#通用收款账号信息]
收款户名:上海七牛信息技术有限公司
收款银行:上海浦东发展银行杨浦支行
收款账号:98120154740008821
# 账户与财务 (/faq/account-finance)
这里用于整理账号、计费、权限和安全相关的常见问题。
# AI 大模型推理 (/faq/aitokenapi)
## 订阅管理积分相关FAQ [#订阅管理积分相关faq]
[查看原文](/faq/aitokenapi/aitoken-sub-mgmt/13459-sub-mgmt-faq)
本文主要介绍AI订阅使用相关问题
## AI推理邀请、注册FAQ [#ai推理邀请注册faq]
[查看原文](/faq/aitokenapi/share-to-earn/13461-aitoken-Invite-registration-earn)
本文主要介绍如果通过专属链接邀请注册
## 大模型接口调用FAQ [#大模型接口调用faq]
[查看原文](/faq/aitokenapi/other/13462-aitoken-use-faq)
AI 大模型推理服务问题,FAQ
更多问题请查看 [官网 FAQ](/faq)。
# 流量异常的常用处理方法 (/faq/cdn/12966-abnormal-traffic-problems-faq)
最近更新时间: 2026-08-18 14:01:18
# 简介 [#简介]
本文主要是指导您,在流量出现非预期增长的情况下,您应该如何完成流量的快速检查,然后对异常的流量、文件、ip做出快速处理,防止您的流量被进一步请求,从而造成更大的损失。
# 说明 [#说明]
* 本文只以CDN域名为例,源站域名和S3域名不在本文说明范围,全站加速域名DCDN与CDN分析方式相同,就不做赘释。
* 如果您发现您的源站域名产生的流量过高,建议您将源站域名删除,修改成CDN域名,原因是:`源站域名`防护能力不如`CDN`,源站域名不建议直接暴露公网使用,源站域名一般是直接给第三方CDN回源使用。
* 本文只针对访问量特别巨大的情况下,为您介绍如何判断和处理
# 账单与流量 [#账单与流量]
只要您将域名解析到七牛给您分配的cname,并且您使用域名进行访问,就会产生流量,CDN域名,默认每个月提供免费的10GB - HTTP流量 ,注意:`域名一旦升级到HTTPS,那么域名就不在享有免费的 10GB HTTP流量`。所以当您发现,您如果CDN流量不足10GB,但是却产生了流量计费,您需要看下,您是不是将域名升级到了HTTPS ,计费的账单也是 CDN - HTTPS流量计费。如果您之前的流量使用很低,但是近期流量费用突然增长很多,那么此时,你需要进行流量分析。
# 流量统计分析与防护 [#流量统计分析与防护]
流量统计分析有多重维度进行统计分析,可以查看带宽、流量、访问TOP靠前的文件和IP等,具体详情可以参考[流量分析](/products/cdn/data-statistics-fusion)
## 获取访问量最高的文件和ip [#获取访问量最高的文件和ip]
当您发现流量账单超出预期,流量增长过大,你可以看下,您访问最多的文件 和 ip 是什么,进入[CDN-统计分析-TOP URL/IP](https://portal.qiniu.com/cdn/statistics/log/top)进行查询
## 文件删除 与 ip黑名单封禁 [#文件删除-与-ip黑名单封禁]
* 单文件访问量特别高
当您在URL TOP 100 中发现,某个文件或者某几个文件的访问量远超其他文件,或者访问量远超您的预期,您可以将这些文件删除,然后请一定要刷新这些文件的CDN缓存,如果您只是将文件删除,但是没有刷新缓存的话,有可能您的文件删除后,文件依然是可以访问的!CDN缓存默认最大时间是30天!刷新缓存可以参考这里:[主动刷新缓存](/faq/cdn/refresh-the-cache-problem/1325-refresh-the-cache-and-the-effect-of-time#1)
* 单个ip的访问量特别高
当您发现单个ip或者某几个ip访问量特别高的时候,您可以在 [CDN -- 域名管理](https://portal.qiniu.com/cdn/domain) -- 配置 --IP黑白名单配置中,开启黑名单,将这些个ip直接加入黑名单即可
* 某些个长的很像的ip访问量特别高
当您发现某一批ip,或者某个网段的ip长得非常像,比如访问的ip是
```bash
58.222.39.112
58.222.39.117
58.222.39.119
223.108.56.24
223.108.56.23
223.107.67.1
```
如果这种相对比较连续集中的ip,不是您正常业务的ip,您可以设置子网掩码的方式进行拉黑,比如设置黑名单ip
```bash
58.222.39.0/24
223.108.56.0/24
223.107.67.0/24
```
如果觉得ip范围小了,可以使用/8 /16更大范围的网段去屏蔽,
其中 /24 表示 ip 的前3段有效:
58.222.39.0/24表示的是 58.222.39.xxx 网段的全部ip,
58.222.0.0/16 表示 58.222.xxx.xxx网段的全部ip
58.0.0.0/8 表示 58.xxx.xxx.xxx网段的全部ip
可以根据你们的需求自行调整这个拦截范围
* 出现奇怪的ip
当您发现了一些ip比较奇怪,不是常规的数字ip,比如
```bash
240e:978:1505:7f:0:2b:0:2564
240e:979:9503:bf:0:7a:0:264
240e:978:1505:7f:0:2b:0:2563
240e:979:9503:bf:0:2e:0:266
240e:978:1505:7f:0:2c:0:2562
240e:979:9503:bf:0:7a:0:264
240e:979:9503:bf:0:2e:0:266
```
这种ip就是IPV6的ip,处理这种ip有两种方式
1:将域名的IP协议调整为IPV4 , 在CDN--域名管理--配置中,修改ip协议,只选择ipv4即可
2:将ipv6 加入黑名单,`注:ipv6不能像ipv4设置网段,只能一个一个添加`,如果麻烦,建议用方式1
## 全部CDN访问详情 [#全部cdn访问详情]
如果您觉得 TOP100中的ip可可能不全,或者存在更多的其他非预期ip访问,想要获取这些ip的访问特征、访问时间等其他信息,建议您在控制台直接下载原始[CDN日志](https://portal.qiniu.com/cdn/log)进行分析
# 流量控制的方法 [#流量控制的方法]
CDN -- 域名管理 -- 配置 – 访问控制 中已经提供了防止盗链的功能,建议客户可以按照需求去自定义配置,防盗的方式有:ip黑白名单、referer防盗链、时间戳防盗链以及回源鉴权
| 防盗量功能类型 | 功能说明 |
| ---------- | ----------------------------------------------------------------------------------------------------- |
| ip黑白名单 | 设置客户ip黑名单,禁止特定ip访问资源,设置ip白名单,只允许特定ip访问资源,可以有效对客户端请求来源做控制,控制访问流量。 |
| referer防盗链 | 对HTTP的referer请求头做检验,设置特定域名referer黑名单,禁止特定域名下访问资源,设置特定域名referer白名单,只允许特定域名下访问资源。 |
| 时间戳防盗链 | 客户端在请求时,需要按照业务服务端返回的签名内容发起请求,请求url携带鉴权参数,CDN节点按照预设鉴权配置检验签名内容,校验通过后才继续放行。 |
| 回源鉴权 | CDN在请求的资源时候,将特定参数和参数内容,转发到客户自定义业务鉴权服务器,业务鉴权服务器对参数内容校验,只有业务鉴权服务器返回特定的状态码,校验通过后才继续放行。 |
| UA黑白名单 | User-Agent 字段,可以识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等;通过 User-Agent 字段的值来允许或者阻止特定用户访加速域名。 |
# 流量监控与告警 [#流量监控与告警]
除了配置相关放到措施外,七牛还提供了相关的告警功能
建议您启用流量/带宽管理的相关配置(免费),监控域名流量或带宽的消耗情况并接收告警,及时了解流量消耗的相关信息。
| 功能类型 | 功能说明 |
| ---------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [流量告警监控平台](/products/cdn/3-cdn-the-alarm-service) | 可以对 CDN 产品下指定域名,进行多维度的流量带宽监控,达到设定的峰值后将会给用户发送告警(短信、邮件和微信),便于更加及时地发现潜在风险。 |
| [流量包管理](https://portal.qiniu.com/financial/orders/respack-mgr/current) | 如果已经购买CDN流量资源包,您可以在控制台-资源包管理处设置告警策略,当所有有效流量包余额不足设定的比例时发送告警。
|
| [流量余额管理](https://portal.qiniu.com/financial/overview) | 如果没有购买资源包,直接使用账号余额支付账单,可以在控制台-财务中心-财务概览处设置余额告警策略,当可用额度不足设定的余额时发送告警
|
# 综合处理方式 [#综合处理方式]
1:检查异常流量详情
2:针对异常流量,删除异常文件,刷新文件缓存,根据您的需求,配置对应的防盗措施,简单一点的可以配置ip黑名单,当然您也可以设置其他方式
3:设置监控与告警,流量带宽告警,必要的时候,您可以同时设置资源包余额告警和账号余额告警
4:定期检查流量带宽日志,如果发现异常,及时更新防盗策略
# 微信小程序使用七牛CDN,Referer防盗链如何设置 (/faq/cdn/13076-domain-name-hotlinking-prevention-wechat)
最近更新时间: 2026-04-29 14:54:28
### 简介 [#简介]
Referer防盗链可在存储空间(Bucket)或CDN节点两级配置:
存储空间级:仅管控直接访问源站域名的请求。
CDN级:管控通过CDN域名的所有请求(含缓存命中场景)。
用户实际通过CDN域名访问资源,因此需**在CDN侧配置防盗链**。若仅在存储空间设置,可能因CDN缓存或拦截导致规则失效。
### 如何开启CDN Referer 防盗链 [#如何开启cdn-referer-防盗链]
您业务使用微信小程序的话,除了您自己网站涉及域名外,还需要额外放行小程序官方域名
```text
servicewechat.com
*.servicewechat.com
```
1,登录 七牛管理控制台 ,在左侧点击 CDN ,在 [域名管理](https://portal.qiniu.com/cdn/domain)中,找到需要开启 Referer 防盗链的域名,点击 配置

2,下拉弹窗,找到 访问控制 -> Referer 防盗链,点击 修改配置:

3,点击 开启 ,然后配置具体的黑白名单规则:

# 视频教程 - 绑定域名 (/faq/cdn/1388-video-tutorials-binding-domain)
最近更新时间: 2023-06-25 19:40:53
如何绑定域名,进行cname 解析
[https://dn-odum9helk.qbox.me/lnwaoAhRqxEasksQlVu1V6n6ZwVb.mp4](https://dn-odum9helk.qbox.me/lnwaoAhRqxEasksQlVu1V6n6ZwVb.mp4)
# 常见的证书申请状态有哪些? (/faq/cdn/3655-what-are-common-certificate-application-status)
最近更新时间: 2017-08-31 16:01:22
# 已完成 [#已完成]
证书验证成功并已签发证书,可以使用。
# 域名循环验证中 [#域名循环验证中]
已提交证书申购,等待用户DNS验证域名所有权。
# DNS验证超时 [#dns验证超时]
24小时内没有通过DNS验证。
原因:
1. 没有进行DNS验证;
2. TXT解析内容填写错误
# 订单被拒绝/安全审核失败 [#订单被拒绝安全审核失败]
* 用户短时间多次提交或重复信息提交订单;
* 域名中包含非法关键字导致安全审核失败。
# 提交订单审核不通过 [#提交订单审核不通过]
* 域名中含有敏感信息,未通过CA机构的反钓鱼审核,请尝试更换域名。
* 域名是被列入CA机构黑名单,请尝试更换域名。
* 相同信息频繁申请或信息不是真实信息,请尝试更换信息。
# SSL 证书相关的一些问题 (/faq/cdn/3673-general-issues)
最近更新时间: 2026-09-14 10:20:27
1. 目前七牛免费证书是 DV 单域名证书,即1个证书对应 1 个域名。不支持多域名和泛域名绑定。
2. OV 和 EV 证书支持多个标准域名,多个标准域名 + 多个泛域名。但是要激活证书多域名的能力,首次绑定必须 ≥2 个域名。
3. 申请主域名如 qiniu.com 的 SSL 证书,默认会在证书域名中添加 www 域名如 [www.qiniu.com](http://www.qiniu.com) ,因此无需重复申请;
4. 同样,如果您申请 www 的二级域名,将同时为您添加主域名使用权限。但如果您是申请的三级域名,如 [www.abc.qiniu.com](http://www.abc.qiniu.com) ,则只能支持该域名,不会支持 abc.qiniu.com。
5. Q:证书过期后怎么办? 证书管理中可以查看证书的有效期,当证书快过期时用户可以重新申请证书并绑定域名。如果已经过期的证书,需要域名点击 HTTPS 配置,然后关闭 HTTPS ,关闭完成后,再重新申请一键HTTPS免费升级即可。
# Symantec 证书为什么相比其他证书要贵一些? (/faq/cdn/3698-symantec-certificate-why-some-expensive-compared-to-other-certificate)
最近更新时间: 2017-08-31 16:02:49
# 原因一 [#原因一]
传输层加密仅仅是 SSL 证书的作用之一;SSL 证书更主要的用处其实在于验证网站及其背后企业的真实性以及合法性。
* 更贵的 SSL 证书的验证过程通常更加严谨。DV(Domain Validation)级别的证书(如你提到的 GeoTrust QuickSSL)在签发之前只会验证你对域名的使用权,并不对域名使用者本身进行任何验证。而更高端一点的 OV(Organization Validation)会验证域名背后的公司 / 组织的真实性和合法性(个人用户通常是无法获得 OV 证书的)。并且和 DV 不同,OV 证书签发之前是需要 paperwork 的,需要提交相关的证明、执照等材料。过程更复杂、签发更严谨,价格自然就更高。
* 另外,你购买证书时往往还同时为顾客购买了一份保险(warranty):如果由于 CA 的失误给一个诈骗 / 非法的公司或组织颁发了证书,并且顾客在这种网站上消费造成了财产损失,CA 会在一定程度上对顾客进行赔付。不同价格的证书的赔付额度差异很大,条款亦可能有所不同。例如 RapidSSL 的保额为 $10,000 美元,而 Symantec Secure Site Pro 则为 $1,750,000 美元。
* 总结:购买 SSL 证书时所付出的成本除了用于加密之外,其实更多的是为了让访客相信你的网站是合法的、可信赖的。
# 原因二 [#原因二]
比较价格的时候,只考虑外观效果(绿锁)和加密强度这两个因素是不完全的,其他因素:
* 证书的适用范围、功能、有效期
* 颁发公司的公信力
* 证书这种东西,信任链的顶层就是颁发公司,知名公司的信用当然比一个名不见经传的小公司值钱得多
* 颁发公司对证书密钥的保护能力
* 服务条款的差别
* 证书维护、更新、废弃,担保、赔偿
# 原因三 [#原因三]
证书不仅是加密用的,也是身份的证明。一个信任的CA颁发的证书,证明效力就要比不信任的CA颁发的证书更好。贵的证书也是这样,它的证明效力,要比便宜的证书多很多的。
# 原因四 [#原因四]
付费证书的价值在于其签名,签名意义在于标示你是可信的服务方而非伪造的钓鱼者。另外赛门铁克 pro 系列证书除支持 RSA 算法外还支持 ECC 算法。
# 原因五 [#原因五]
另外 单纯从技术角度,symantec和 GeoTrust 的区别如下:
* 算法支持上 Symantec(支持RSA DSA ECC三种算法)Geotrust(支持RSA DSA两种算法)
* 兼容性 Symantec > Geotrust ; Symantec(原verisign)可兼容市面上所有的浏览器,对移动端的支持也是最好的
* OCSP 响应速度:Symantec > Geotrust
* CA 安全性 方面 Symantec > Geotrust ,symantec是国际知名安全厂商,CA的安全级别也是国际第一的安全系数。
* Symantec 证书除实现加密传输以外,还另外有恶意软件扫描和漏洞评估的附加功能。GeoTrust证书没有
* Symantec对证书有商业保险赔付保障,金额最高为175万美金,GeoTrust最高为150万美金
# 证书链是什么? (/faq/cdn/3703-the-certificate-chain-is-what)
最近更新时间: 2017-08-09 09:11:48
* 完整的证书内容一般分为3级,服务端证书-中间证书-根证书,即 end-user certificates, intermediates Certificates 和 root Certificates。
* end-user :用来加密传输数据的公钥的证书,是https中使用的证书。开发者牛小七把证书部署在qiniu.com 的服务器上。
* intermediates:CA用来认证公钥持有者身份的证书,即确认https使用的end-user证书是属于qiniu.com的证书。
* root:用来认证intermediates证书是合法证书的证书。
* 简单来说,end-user证书上面几级证书都是为了保证end-user证书未被篡改,保证是CA签发的合法证书,进而保证end-user证书中的公钥未被篡改。我们使用end-user certificates来确保加密传输数据的公钥(public key)不被篡改,而又如何确保end-user certificates的合法性呢?这个认证过程跟公钥的认证过程类似,首先获取颁布end-user certificates的CA的证书,然后验证end-user certificates的signature。一般来说,root CAs不会直接颁布end-user certificates的,而是授权给多个二级CA,而二级CA又可以授权给多个三级CA,这些中间的CA就是intermediates CAs,它们才会颁布end-user certificates。
* 七牛云证书管理,会在用户上传证书的时检测证书的完整性,证书链不完整会自动帮用户补全证书链,但无法保证补全的证书链100%是正确的。所以需要用户选择使用自传的证书还是系统补全后的证书。
# 域名配置 FAQ (/faq/cdn/3880-the-domain-name-configuration-faq)
最近更新时间: 2026-07-02 15:49:05
| Q1:已经配置CNAME,为何还是提示请配置CNAME,CNAME应该如何正确配置? |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| CNAME 记录解析需要到域名提供商处配置,问题参考:[配置失败原因](/faq/cdn/domain-name-configuration-problem/3884-why-did-the-cname-parsing-or-display-please-match-cname);更多配置请参考: [帮助文档](/products/cdn/1-custom-domain-name-binding-process)。 |
| Q2:时间戳防盗链是什么?如何实现? |
| ---------------------------------------------------------------------------------------------- |
| 参考文档:[时间戳防盗链](/faq/cdn/domain-name-configuration-problem/1670-timestamp-hotlinking-prevention) |
| Q3:域名希望覆盖范围从大陆调整到海外,使用场景需要从图片小文件调整到点播,如何操作? |
| ------------------------------------------- |
| 此类需求必须要提交工单,说明域名和具体的需求,由七牛工程师来调整。 |
| Q4:如何更换空间绑定域名? |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 更换存储空间绑定的CDN加速域名:参考 [设置自定义CDN加速域名](/products/kodo/kodo-console-guide/bucket-management/kodo-domain-name-management/0-set-the-custom-cdn-to-accelerate-the-domain-name) 文档绑定新的CDN加速域名,然后去域名购买商平台配置CNAME解析,解析成功后新的CDN域名配置就完成了。然后在自己业务端修改外链中的域名为新绑定的CDN加速域名即可 |
| 更换存储空间绑定的自定义源站域名:参考 [设置自定义源站域名](/products/kodo/kodo-console-guide/bucket-management/kodo-domain-name-management/1-set-the-custom-source-domain-name) 文档绑定新的自定义源站域名,然后去域名购买商平台配置CNAME解析,解析成功后新的自定义源站域名配置就完成了。然后在自己业务端修改外链中的域名为新绑定的自定义源站域名即可 |
| Q5:物联网卡使用CDN如何设置白名单? |
| ---------------------------------------------------- |
| CDN默认没有访问限制,如果物联网卡有域名白名单限制,可以在物联网卡里面将需要请求的CDN域名加白处理。 |
| Q6:CDN是否支持设置指定省份或国家走加速? |
| -------------------------------------------------------------------- |
| 不支持,如果需要限制某些省份或国家访问,可以在CDN域名购买商平台或域名DNS托管商平台将不需要访问的省份或国家解析至127.0.0.1 |
| Q7:CDN是否支持热点视频瘦身? |
| ---------------------------------------------------------------------------------------------------------- |
| 支持,具体可以参考 [CDN热点视频瘦身](/products/kodo/development-guidelines/dev-the-data-processing/3-hot-video-slim) 说明文档 |
| Q8:CDN如何临时屏蔽所有访问? |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 您可以在域名购买商平台将域名的cname解析指向127.0.0.1 或 设置ip白名单为1.1.1.1来处理,ip黑白名单配置操作参考:[/products/cdn/configuration-management-fusion/access-control-configuration/3-ip-black-and-white-list](/products/cdn/configuration-management-fusion/access-control-configuration/3-ip-black-and-white-list) |
| Q9:国内域名使用CDN是否需要ICP备案? |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| CDN域名覆盖范围选择中国大陆或全球覆盖的情况下,是必须要有ICP备案,域名可以在 [工信部官网](https://beian.miit.gov.cn/#/Integrated/recordQuery) 可以查询到备案信息即可。需要了解域名ICP备案流程和要求,可以参考 [备案简介](/products/qvm/section-fpr5/9-record-introduction) 说明 |
| Q10:已备案过的域名,为啥提示未备案? |
| ---------------------------------------------------------------------------------------------------------------------------- |
| 您可以在 [工信部官网](https://beian.miit.gov.cn/#/Integrated/recordQuery) 查询确认下备案信息是否可以查询到?如果查询不到,说明ICP备案信息可能被注销了,需要您找之前备案的平台确认下具体情况。 |
| Q11:您的账号xxx在过去 90 天内没有流量,我司将于 7 天后停用如上域名 |
| ---------------------------------------- |
| 过去90天,没有流量且没有任何操作的域名会被停用,停用前会发送通知告知用户。 |
| 建议解决方案:您只需在域名停用前使用该域名访问资源产生流量即可避免停用。 |
| Q12:CDN是否支持WSS协议,即WebSocket Secure |
| ---------------------------------- |
| CDN暂时不支持websocket |
| Q13:创建域名失败,提示域名冲突? |
| ------------------------------------------------------------------------------------------------------------------------ |
| 产生原因是对应域名在其他七牛账号已创建使用导致的; |
| 1、如对应域名在其他七牛账号下还未删除,您可以参考 [域名找回](/products/cdn/the-domain-name-management/3-the-domain-name-back) 文档操作处理; |
| 2、如对应域名在其他七牛账号下已被删除,需要您 [提交工单](https://support.qiniu.com/tickets/new-for-person) 由技术支持人员为您人工过户处理(注意:每月1-3号为出账期,不支持域名过户); |
| 3、注意:域名找回后,当月未出账的所有CDN流量费用由新账号承担 |
| Q14:CDN支持etag设置吗? |
| ----------------- |
| 不支持 |
| Q15:CDN可以指定空间或者指定目录,不要有缓存吗? |
| -------------------------------------------------------------------------------------------------------- |
| 支持,CDN域名支持后缀、目录方式配置缓存,配置操作参考 [缓存配置](/products/cdn/configuration-management-fusion/2-cache-configuration) |
| Q16:为什么下载的CDN日志没有UA信息? |
| -------------------------------------- |
| 日志中UA字段显示为”-“,是因为该请求未携带User-Agent头导致的。 |
| Q17:CDN支持「限制单个 IP 每秒请求数(QPS)」吗? |
| ------------------------------- |
| 目前暂不支持 |
| Q18:如何快速部署「EdgeOne」? |
| -------------------- |
| 目前暂不支持EdgeOne |
| Q19:误删CDN域名,如何处理? |
| ------------------------------------------------------------------------------------------------------------------------------------ |
| 域名删除后,无法恢复,需要继续使用的话,您重新创建下CDN域名并配置CNAME解析即可,创建域名操作参考:[域名接入](/products/cdn/the-domain-name-management/0-the-domain-name-to-access) 文档 |
| Q20:多个七牛云账号怎么使用同一个一级域名创建二级加速域名? |
| ------------------------------------------------------------------------------- |
| 每个账号新域名接入都要完成1次接入验证的,这个只能将之前的TXT解析修改成现在需要认证的 TXT记录值了,另外,完全相同的域名不能多次绑定 |
| 也就是 1.iiiii5.cn 可以在 A账号绑定 , 2.iiiii5.cn 可以在 B账号绑定,在 A账号绑定 1.iiiii5.cn 不能在B 账号绑定 |
| Q21:流量护盾告警通知不支持按拦截状态过滤 |
| ---------------------------------------------------------- |
| 流量护盾本身不能按“已拦截就不通知、只有必要时才通知”这样区分发送,邮件是否频繁主要还是由告警规则和接收人配置决定。 |
如果您希望只发给某个邮箱发送,可以把其他邮箱从告警接收人里移除,并把告警阈值或持续时间调高来减少重复提醒。 |
| Q22:泛域名删除失败 |
| ------------------------------- |
| 泛域名删除的前提需要将其下的泛子域名全部删除后才能删除泛域名的 |
| Q23:CDN域名创建失败,提示源站与加速域名相同,怎么处理? |
| ------------------------------------------------------------------ |
| 这是因为相同域名已经作为自定义源站域名绑定在存储空间了,无法继续作为CDN加速域名绑定,需要您更换一个未绑定过的其他二级或三级域名。 |
| Q24:配置CDN与空间Referer防盗链配置目前403无法访问? |
| ----------------------------------------------------------------- |
| 这是因为CDN与空间Referer配置会冲突导致的403,如果需要Referer防盗链配置的话,单独配置CDN的Refere即可。 |
# 访问下载问题 FAQ (/faq/cdn/3883-download-problem-faq)
最近更新时间: 2026-07-20 11:11:02
| Q1:下载失败,响应非 200 状态码,我应该怎么处理? |
| ------------------------------------------------------------------------------------------------------------------------------------- |
| 参考文档:[通过 http 状态码,判断下载失败原因](/faq/cdn/other-fusion/problem-diagnosis-method/3885-through-the-http-status-code-download-failure-reason) |
| Q2:怎样实现视频链接只能播放,不能下载? |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 播放其实就是一种形式的下载,所以只能播放不能下载是实现不了的,但我们可以用一些方式去避免别人下载:
方法 1 :可以开启域名 [时间戳防盗链](/faq/cdn/domain-name-configuration-problem/1670-timestamp-hotlinking-prevention) ,使得视频链接只在一段时间内可以访问。
方法 2 :用网页播放器播放视频,可以隐藏掉播放链接。虽然链接可以通过抓包获得,但是此方法可以屏蔽掉大部分的小白用户。 |
| Q3:如何打包下载多个文件? |
| --------------------------------------------------------------------------------------------------- |
| 无法通过一次请求,下载多个文件,但是可以用 [mkzip](/products/dora/file-processing/4-mkzip) 命令,在云端将多个文件打包,然后直接下载该 zip 文件。 |
| Q4:下载速度太慢,如何解决? |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 下载速度慢一般有以下几种情况:
1.使用七牛测试域名。七牛的测试域名有单 IP 访问次数和带宽的限制,更换自定义的 CDN 加速域名,可以解决。
2.用户本地的 DNS 设置有问题,跟本地出口 IP 不属同省同运营商,可以绑定公有dns服务器223.5.5.5 114.114.114.114 后,再进行访问测试。
3.创建域名时使用场景选择有误,比如将网页平台的域名用作视频点播。这种情况需要给七牛提交工单,修改域名使用场景。
4.每次访问时URL都携带了随机参数,导致每次访问时CDN都回源拉取资源,导致加载慢的,建议在业务端请求时去除URL中携带的随机参数,或者参考 [缓存配置](/products/cdn/configuration-management-fusion/2-cache-configuration) 配置忽略对应请求参数来处理。
5. 客户网络下行带宽较差,可以参考 [网络测试](/faq/cdn/other-fusion/problem-diagnosis-method/1324-mobile-terminal-network-test-tool-android-ios) 检查客户网络情况。
6.如果确认客户网络正常,主要是未击中CDN缓存的资源加载慢,可以对相关资源做下 【文件预取】([控制台预取文件](/products/cdn/2-refresh-the-prefetch-fusion),[文件预取API](/products/cdn/8-fusion-api-cache-management#P23)) 操作;同时针对不同类型的文件设置核实的[缓存策略](/products/cdn/configuration-management-fusion/2-cache-configuration)。 |
| Q5:上传前文件的大小和下载的文件大小不一致是什么原因? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 首先 [刷新 CDN 缓存](/faq/cdn/refresh-the-cache-problem/1325-refresh-the-cache-and-the-effect-of-time) ,刷新 10 分钟后,可通过 [检查文件 md5](/faq/cdn/refresh-the-cache-problem/3644-refresh-the-cache-fails-consistency-method-validation-file) 的方式,来看文件和原文件是否一致。 |
| Q6:为什么浏览器访问文件不是预览,而是直接下载? |
| ------------------------------------------------------------------------------------ |
| 浏览器会判断文件是否是自己支持预览的格式,如果文件直接下载,说明该浏览器不支持该文件格式。比如 webp 格式的图片,只有 chrome 浏览器支持,其他浏览器不支持。 |
| Q7:如何实现数据迁移? |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 同一账号、不同区域的数据迁移,可以通过 [跨区域同步功能迁移数据](/faq/cdn/3883-download-problem-faq) 操作。
其他情况,可以使用 [qshell](/products/kodo/0-qshell) 工具。先用 qdownload 命令批量下载到本地,再用 qupload 批量上传到另一空间。 |
| Q8:如何禁止访问某个文件? |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 如果文件是存储在【七牛存储空间】的,您可以调用 [修改文件状态](/products/kodo/rs/11-modify-the-file-status) 接口将对应文件禁用来实现。
**注意:**
文件状态禁用后,如需全网生效,需要刷新下CDN缓存([七牛控制台刷新CDN缓存](/products/cdn/2-refresh-the-prefetch-fusion),[调用API接口刷新CDN缓存](/products/cdn/8-fusion-api-cache-management#P21))。 |
| Q9:CDN域名同时大量并发观看在线视频是否会卡顿? |
| -------------------------------------------- |
| 不会,CDN节点默认没有访问速度和带宽限制,视频加载速度主要取决于本地客户端下行带宽大小 |
| Q10:网站已停止访问CDN域名,为什么还有CDN流量及费用产生? |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1、因为CDN域名配置还在CDN节点,客户端还是能正常请求到CDN资源并产生流量;
2、如果不需要访问CDN的话,需要在七牛控制台将CDN域名 [停用并删除](/products/cdn/the-domain-name-management/1-domain-name-operation#2) 下,CDN域名删除后才会无法请求进来。
3、七牛账单存在一天延迟,假如您在昨天删除了CDN域名,在昨天删除域名之前的流量费用,会在今天出账更新,理论上就是今天之后的流量账单才不会继续更新,注意,这个一定要删除了CDN域名后的第2天,流量费用才会保持不变 |
| Q11:访问资源返回404状态码时,是否会计算CDN流量? |
| ----------------------------- |
| 会计算,CDN流量统计不区分状态码 |
| Q12:为什么我文件删除了,还有CDN流量? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1:文件删除后,需要主动[刷新 CDN 缓存](/faq/cdn/refresh-the-cache-problem/1325-refresh-the-cache-and-the-effect-of-time)才可以
2: 文件删除后且刷新了缓存,但是文件还有少部分流量,这个是404状态码产生的流量导致,只要客户端在持续请求,就会产生少部分的404响应流量,相比源文件,流量会大幅度降低,可以检查[**CDN详细日志**](/products/cdn/data-statistics-fusion/log-analysis/5-cdn-log-fusion),看下对应的URL的响应状态码是不是非200的响应。 |
| Q13:微信小程序中无法访问资源,提示「请在“小程库右上角更多->反馈与投诉”中和开发者反馈。」如何处理? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 可以先在微信中直接请求资源外链看下是否正常?
1、直接请求正常,但小程序访问失败,说明CDN是正常的,问题应该在小程序这一层,需要您那边技术排查下小程序问题;
2、如果直接请求也失败,可以提供下具体错误信息,[提交工单](https://support.qiniu.com/tickets/new-for-person) 反馈技术支持人员进一步排查 |
| Q14:为什么CDN域名的动态查询请求没有请求源站? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| CDN一般用于静态资源的缓存加速,如果是动态请求的话,建议绑定 [全站加速](/products/dcdn/0-dcdn-guide-to-the-console) 域名来访问;如果源站同时存在动态和静态资源请求,可以参考 [缓存配置](/products/cdn/configuration-management-fusion/2-cache-configuration) 文档对静态资源设置缓存时间,最后设置一个全局不缓存来处理。 |
| Q15:为什么CDN域名在中国大陆区域访问很慢? |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 一般是您选择了海外覆盖范围导致的,可以参考 [如何自主切换域名覆盖范围?](/faq/cdn/7456-seven-cattle-console-switch-how-autonomous-domain-coverage) 去核实确认下域名覆盖范围,如果需要中国大陆区域访问的话,需要修改为中国大陆区域覆盖。如果确认域名覆盖范围已经是中国大陆了,可以参考「Q4:下载速度太慢,如何解决?」 进一步排查。 |
| Q16:为什么无法访问,返回403? |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 403一般是域名配置了referer、ip、ua、时间戳、回源鉴权等防盗链策略 或 存储空间是私有空间导致的,可以通过以下步骤排查确认
1、参考 [访问控制配置](/products/cdn/configuration-management-fusion/access-control-configuration) 检查是否触发CDN防盗链策略拦截导致的?
1、参考 [设置Referer防盗链](/products/kodo/kodo-console-guide/bucket-management/space-settings/4-set-the-referer-hotlinking-prevention) 检查是否触发存储referer策略导致的?
3、参考 [设置访问控制](/products/kodo/kodo-console-guide/bucket-management/space-settings/0-set-access-control) 检查空间是否是私有的?是的话,需要生成 [下载凭证](/products/kodo/development-guidelines/security/0-download-token) 才可以访问。 |
| Q17:为什么视频无法播放、加载慢或黑屏? |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1、无法播放或黑屏:一般是视频编码格式浏览器不支持或视频本身存在异常导致的,可以通过 [avinfo](/products/dora/audio-and-video-processing-api/2-audio-and-video-metadata-information-avinfo) 命令查询视频元信息和编码格式;
a、如果 avinfo 命令返回 `{"error":"unknown format"}` 错误,说明视频本身存在异常导致的,需要您检查上传前的原视频情况;
b、如果 avinfo 命令返回正常,返回视频编码格式是h265的,由于h265视频编码格式浏览器端支持度不高,建议转换为h264的视频编码格式;可以使用网上第三方工具转码 或 在七牛创建 [转码任务](/products/kodo/kodo-console-guide/bucket-management/the-data-processing/tasks-workflows/2-task) 处理;
2、加载慢:一般是视频moov元信息后置或视频码率太大导致,可以通过 [avinfo](/products/dora/audio-and-video-processing-api/2-audio-and-video-metadata-information-avinfo) 命令查询码率信息;moov元信息位置查询可以使用 `ffprobe -v trace 视频文件外链 2>&1 \| grep -E "moov\|mdat"` 命令查询,如果 moov 出现在 mdat 之后 说明 moov 后置了。
解决方法:
1)、您可以调用「普通音视频转码」[/products/dora/audio-and-video-processing-api/3-audio-and-video-transcoding-avthumb](/products/dora/audio-and-video-processing-api/3-audio-and-video-transcoding-avthumb) 接口,进行转码,转码命令:avthumb/mp4 即可把元信息提前,这样可以加快资源播放。
2)、控制台操作转码:
a)、新建工作流模板,参考[文档](/products/kodo/kodo-console-guide/bucket-management/the-data-processing/tasks-workflows/0-workflow-template#1) 「工作流模板」-「新建新建工作流」-「工作流节点配置」 -「添加普通转码」(选择预设 「SYSTEM\_MP4\_COPY」) - 「添加输出」- 点击「保存」
b)、使用第1步创建的工作流模板,新建任务,参考[文档](/products/kodo/kodo-console-guide/bucket-management/the-data-processing/tasks-workflows/2-task#3「任务管理」-「新建任务」-「选择输入文件」)(需要转码的视频文件) - 「选择工作流模板」- 点击「确定」提交任务 |
| Q18:为什么图片在手机端可以加载展示,浏览器不能? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 一般是图片格式在浏览器端不支持导致的,您可以使用 [imageInfo](/products/dora/image-processing-api/2-pictures-basic-information-imageinfo) 命令查看图片格式;可以将图片格式转换为png、jpg、jpeg等这种浏览器基本都支持的格式;图片格式转换命令参考 [格式转换](/products/dora/image-processing-api/the-advanced-treatment-of-images-imagemogr2/3-format-conversion) |
| Q19:无法访问CDN或存储空间资源? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1、可以先基于 Q1 方法排查看下;
2、如果无状态码返回,响应超时,建议先确认下本地客户端网络是否正常?可以尝试更换手机流量或其他wifi网络访问测试验证;
3、ping域名节点返回127.0.0.1地址,一般是本地开启了网络代理导致的,可以关闭本地网络代理后再访问测试;如果本地未开网络代理,可以尝试修改本地dns服务器为223.5.5.5 或 114.114.114.114 公有dns服务器后,重新访问测试;
4、如果上述方法都无效,可以提供相关错误信息和资源URL等信息,然后 [提交工单](https://support.qiniu.com/tickets) 反馈技术支持人员进一步排查确认 |
| Q20:CDN域名已配置证书,https还是无法访问? |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1、可以先检查下域名DNS解析是否正确?CDN域名DNS解析配置参考:[CNAME配置](/products/cdn/the-domain-name-management/2-cname-configuration)
2、域名DNS解析正常,可以参考 [HTTPS配置](/products/cdn/configuration-management-fusion/4-https-configuration) 检查下 TLS版本是否设置太低导致的?可以都勾选提交成功后,再访问测试

3、上述检查都正常的话,可以右键打开浏览器检查模式,复现后获取下console和network中的错误信息,可以 [提交工单](https://support.qiniu.com/tickets) 反馈技术支持排查确认。 |
| Q21:全站加速域名访问504或超时失败,如何处理? |
| -------------------------------------------------------------------------------------------------------------------------- |
| 一般是源站响应慢或源站异常导致的,建议优先排查确认源站情况;如果确认源站正常,可以 [提交工单](https://support.qiniu.com/tickets) 反馈技术支持进一步排查确认;
说明:全站加速默认回源超时时间10s |
| Q22:https网站下http域名无法正常访问? |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 由于浏览器端安全策略问题,目前Chrome、火狐等浏览器默认会将https协议网站内置http协议URL强制升级为https发起访问,这是浏览器端的处理策略,七牛侧无法控制。处理方式:1、整站降为http协议2、整站升级为https协议,参考文档[https配置](/products/cdn/configuration-management-fusion/4-https-configuration) |
| Q23:m3u8或mp4的h264编码格式的视频在ios端无法播放,Android正常,是什么原因? |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 一般是由于视频编码等级(Level)过高导致的,可以通过转码将视频编码等级降为Baseline。
解决方法:
1)、您可以调用「普通音视频转码」[/products/dora/audio-and-video-processing-api/3-audio-and-video-transcoding-avthumb](/products/dora/audio-and-video-processing-api/3-audio-and-video-transcoding-avthumb) 接口,进行转码,转码命令:avthumb/mp4/vcodec/libx264/h264Profile/baseline 即可将编码等级降为Baseline;
2)、控制台操作转码:
a)、新建工作流模板,参考[文档](/products/kodo/kodo-console-guide/bucket-management/the-data-processing/tasks-workflows/0-workflow-template#1) 「工作流模板」-「新建新建工作流」-「工作流节点配置」 -「添加普通转码」(`选择自定义预设:编码配置 - 编码格式 - 选择H.264,最下面的高级参数 - 编码等级 选择 baseline`,其他参数不动,默认即可) - 「添加输出」- 点击「保存」
b)、使用第1步创建的工作流模板,新建任务,参考[文档](/products/kodo/kodo-console-guide/bucket-management/the-data-processing/tasks-workflows/2-task#3「任务管理」-「新建任务」-「选择输入文件」)(需要转码的视频文件) - 「选择工作流模板」- 点击「确定」提交任务 |
| Q24:为什么CDN访问文件时,返回的Content-Type响应头与存储空间不不一样? |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| CDN默认不会修改文件响应头信息,可以参考 [HTTP响应头配置](/products/cdn/configuration-management-fusion/6-the-http-response-header-configuration) 文档看下是否您主动设置了 Content-Type 响应头导致的?是的话,可以删除Content-Type响应头配置,然后 [刷新CDN缓存](/faq/cdn/refresh-the-cache-problem/1325-refresh-the-cache-and-the-effect-of-time) 后,再重新访问测试看看 |
| Q25:http链接访问正常,https链接访问失败? |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 一般是CDN域名未配置https证书或已绑定证书过期导致的。
https证书配置参考:[HTTPS配置](/products/cdn/configuration-management-fusion/4-https-configuration),
证书过期处理方式参考 [HTTPS 相关问题 FAQ](/faq/cdn/3887-https-issues-related-to-the-faq) 中的 Q6 处理说明 |
| Q26:域名访问报错ERR\_NAME\_NOT\_RESOLVED? |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ERR\_NAME\_NOT\_RESOLVED,这个错误意味着 DNS(域名系统)解析失败,即无法将域名转换为对应的 IP 地址。 |
| 1、尝试更换 DNS 服务器,例如使用 Google 的公共 DNS(8.8.8.8 和 8.8.4.4)或 223.5.5.5,备用选择 180.76.76.76。(a.在 Windows 上,你可以通过控制面板 -> 网络和共享中心 -> 更改适配器设置 -> 右键点击你的网络连接 -> 属性 -> Internet 协议版本 4 (TCP/IPv4) -> 使用下面的 DNS 服务器地址。b.在 macOS 上,前往系统偏好设置 -> 网络 -> 高级 -> DNS,然后添加新的 DNS 服务器; |
| 2、看下是否是进行了本地host;检查 hosts 文件(通常位于 C:\Windows\System32\drivers\etc\hosts 在 Windows 上,或在 /etc/hosts 在 macOS 或 Linux 上),查看是否有错误的条目将域名映射到错误的 IP; |
| 3、切换网络,重新访问看下。 |
| Q27:文件无法访问,报404 \{"error":"Document not found"},是什么原因? |
| ------------------------------------------------------ |
| 是因为文件已被删除导致的,建议去存储空间检查下文件是否还在? |
| Q28:对象存储空间资源支持设置一次性下载凭证吗? |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 不支持,私有空间下载凭证是根据过期时间实现的,有效期内可以多次请求下载。
如需实现一次性下载功能,可以将 [空间转换为公开空间](/products/kodo/kodo-console-guide/bucket-management/space-settings/0-set-access-control),自己实现 [回源鉴权](/products/cdn/configuration-management-fusion/access-control-configuration/2-back-to-the-source-authentication) 策略,然后在CDN域名配置自己的回源鉴权服务地址来实现。 |
| Q29:为什么访问日志里存在大量 /qiniu\_do\_not\_delete\_\*.gif |
| ---------------------------------------------------------------------------- |
| 这类文件 iniu\_do\_not\_delete\_\*.gif是域名修改配置时,各个cdn节点为了检测配置正常下发所进行测试时的测试资源,忽略即可 |
# HTTPS 相关问题 FAQ (/faq/cdn/3887-https-issues-related-to-the-faq)
最近更新时间: 2026-06-08 12:04:02
| Q1: 升级 https,是否影响 http 的访问? |
| ---------------------------------------------- |
| 不管是在域名升级 http 的过程中,还是升级 https 后,都不影响 http 的访问。 |
| Q2: 域名升级 https 后,流量费用有哪些改变? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 查看七牛官网的 [七牛云价格方案](https://www.qiniu.com/pricing),点击“CDN ”,可以看到流量计费的规则。
其中,https 的域名,不管是用 http 协议访问,还是 https 协议访问,都是按照 https 的标准计费的。
如果对费用还有疑问,可以拨打 400-101-8589 转 1 号线销售咨询。 |
| Q3: 修改CDN或DCDN域名HTTPS配置的密码是什么? |
| ------------------------------------------------------------------------------------------------------------------------------------ |
| 修改CDN或DCDN域名HTTPS配置的密码为『七牛账号登录密码』,如忘记七牛账号登录密码了,可参考 [重置密码](/faq/account-finance/account-problem/3965-reset-password) 方式重置登录密码后,再重新操作。 |
| Q4: 如何关闭 http 访问,而不是设置 http 强制跳转 https? |
| --------------------------------------- |
| 这种不支持,只能开启强制https方式来处理 |
| Q5: 如何关闭 https? |
| ------------------------------------------------------------------------------------------------------- |
| 只有证书过期,才可以在控制台,CDN--域名管理--配置--https配置中,关闭https。证书未过期,你在控制台无法直接操作关闭,可以提交工单我们内部处理关闭,注意关闭后https访问会提示证书相关报错 |
| Q6: 域名证书过期,怎么办? |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 证书域名已过期,您可以在控制台中,将域名降级到http,然后重新选择使用七牛免费证书,一键升级到https即可。或者您也可以上传您的自有证书,然后在HTTPS配置处,替换到您自己的证书即可。具体可以参考[HTTPS配置](/products/cdn/configuration-management-fusion/4-https-configuration) |
| Q7: 需要使用https,域名怎么升级到https? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 您可以在控制台中,选择使用七牛免费证书,一键升级到https即可,具体可以参考[HTTPS配置](/products/cdn/configuration-management-fusion/4-https-configuration)。或者您也可以上传您的自有证书,然后在HTTPS配置处,替换到您自己的证书即可。 |
| Q8: 已经上传自有证书,为什么绑定时无法选择? |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 一般是自有证书适用域名与需要绑定的域名不匹配导致的。
比如:
1、自有证书适用 [www.qiniu.com](http://www.qiniu.com) 和 qiniu.com,说明该证书只能绑定在www\.qiniu.com 和 qiniu.com这2个域名使用;
2、自有证书适用 \*.qiniu.com 这种二级泛域名证书,则只能绑定在 test.qiniu.com、123.qiniu.com 这种二级域名上使用,无法绑定在 qiniu.com 主域名、三级子域名(示例:test.123.qiniu.com)或四级子域名(示例:test.123.456.qiniu.com) 等其他其他子域名。 |
| Q9: 是否支持国密证书绑定? |
| --------------- |
| 目前暂不支持。 |
| Q10: 资源可以在浏览器中直接访问,但是在网站里面不能访问? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 这种情况下,一般有两种情况:
第一种情况是资源域名没有设置跨域头,请求被跨域拦截,一般情况下,如果您的源站是七牛存储,默认都是携带跨域头,如果你的源站是您自己的服务器,需要浏览器F12看下,您的CDN请求是否有携带跨域头,如果没有,可以在CDN--域名管理--配置中,添加自定义响应头,Access-control-allow-origin:\* , 参考[HTTP响应头配置](/products/cdn/configuration-management-fusion/6-the-http-response-header-configuration)\
第二种情况就是最常见的情况,https网站混用了http的资源,如果您的网站是https的,但是CDN域名是http的话,浏览器默认会禁止加载http的请求,解决方案要么将网站设置为http的,或者将CDN域名升级到https即可。 |
| Q11: CDN域名证书到期前会通知吗? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 会通知,CDN域名证书会在证书剩余有效期不足29天、7天、3天、1天和过期后多次发送通知;证书更新完成后就不会发生通知。
`注意:` 需要在 [消息设置](https://portal.qiniu.com/notification/user-setting/basic/product) - `域名证书服务提醒` 设置通知方式和接收人信息。
 |
| Q12: 给CDN域名“一键申请免费证书时,提示域名不满足免费证书申请条件”,如果处理? |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 一般是您的域名开启了IP黑白名单、referer黑白名单、时间戳防盗链或回源鉴权功能导致的,这种情况无法使用【一键申请免费证书】功能,需要您参考 [手动申请并绑定证书](/faq/cdn/https-issues-related-to/3725-how-to-apply-for-and-use-free-certificate) 步骤手动申请并配置证书。 |
# 流量异常情况的原因和处理方法 (/faq/cdn/3888-traffic-problems-faq)
最近更新时间: 2026-06-16 15:13:17
| Q1:流量突增、流量明显高于正常业务量,应该如何处理? |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1.可以 [下载日志](https://portal.qiniu.com/cdn/log) 进行 [统计分析](/faq/kodo/basic-use-of/1451-how-to-own-space-ip-access-number)。
2.可以针对CDN域名,在 [告警服务](/products/cdn/3-cdn-the-alarm-service) 开启配置 告警,当使用量超过您设置的告警值会进行通知。
3.如果通过分析,得出流量确实产生于被盗刷或者是被攻击,可以在域名 “防盗链配置” 中,配置防盗链。 |
| Q2:域名被攻击,为何停用或者删除了域名后,依然还有流量? |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 当域名仍然解析到七牛,七牛对于攻击的请求会给出非 200 的响应,这种响应有通信头的流量的消耗,当攻击频次巨大时,会产生计费的流量。
当域名是自定义域名,建议调整解析到 1.1.1.1。若调整解析为空,攻击者可能更换攻击方式,绑定 host 攻击。
当域名是七牛提供的域名,需要提交工单联系七牛调整域名解析。 |
| Q3:为什么使用http下载消耗的却是https流量? |
| ------------------------------------------------------------------------ |
| 域名如果开通了 https,那么统一按照 https 收费。
如果有些请求使用 http,可以新增一个专门用来 http 访问的域名。 |
| Q4:为什么资源删除后依然会产生流量? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 这个是资源在访问后,会在cdn中生成缓存,下次访问的时候直接会从cdn中加载资源,而不用回源到源站去加载资源,有效缩短加载时间,这个本身就是cdn的优势所在。所以文件删除后需要调用刷新接口去删除cdn的缓存,这样才能保证文件删除后无法继续访问。如何刷新缓存:1. 通过api 接口刷新:[https://developer.qiniu.com/fusion/api/1229/cache-refresh](https://developer.qiniu.com/fusion/api/1229/cache-refresh) 2. 通过portal.qiniu.com 控制台刷新缓存,点击左侧cdn => 刷新预取 |
| Q5:top内referer为什么有这么多值为:servicewechat.com的请求? |
| --------------------------------------------------------- |
| 这是正常的来源页统计,表示您的 CDN 资源主要是被 servicewechat.com 页面引用后产生了访问流量 |
servicewechat.com和\*.servicewechat.com为微信小程序侧的referer值|
# 域名已经做解析如何通过验证 (/faq/cdn/3890-domain-name-already-how-do-parsing-by-verifying)
最近更新时间: 2026-08-21 11:31:16
# 域名解析方法 [#域名解析方法]
解决方法:在验证域名前加上 `_dnsauth`。
以 jsdemo.gugaobai.top 为例,如果做了 A 记录解析或者 cname 解析,有些域名商是不可以同时再做 TXT 解析的
此时解析 \_dnsauth.jsdemo.gugaobai.top 这个域名也可以通过验证
证书签发后可以下载至本地使用
# 文件验证方法 [#文件验证方法]
### 1. 补全证书信息时选择文件验证 [#1-补全证书信息时选择文件验证]
### 2. 获取验证信息 [#2-获取验证信息]
### 3. 本地生成一个名为 fileauth.txt 的文件,内容为上面的txt记录值 [#3-本地生成一个名为-fileauthtxt-的文件内容为上面的txt记录值]
### 4. 上传至域名对应的七牛空间(或者用户自己的服务器),设置前缀为记录名(如 .well-known/pki-validation/) [#4-上传至域名对应的七牛空间或者用户自己的服务器设置前缀为记录名如-well-knownpki-validation]
### 5. 确认文件上传成功 [#5-确认文件上传成功]
# SSL 证书 FAQ (/faq/cdn/3905-ssl-certificate-faq)
最近更新时间: 2026-08-19 11:01:37
| Q1: 为什么我无法上传自有证书或证书上传后不可用? |
| ---------------------------------------------------------------- |
| 证书有效期需要≥30天,少于30天的证书是不能用于七牛 CDN 的。 |
| `注意:自有证书必须是CA机构签发;Cloudflare平台签发证书只能用于Cloudflare平台,无法用于七牛或其他平台。` |
| Q2:如何上传自有证书? |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1、建议您在证书厂商下载证书时,选择 Nginx 服务器类型的证书文件; |
| 2、进入七牛云管理控制台:[https://portal.qiniu.com/certificate/ssl,点击](https://portal.qiniu.com/certificate/ssl,点击) 【上传自有证书】; |
| 3、使用编辑器打开后续文件,并复制 .crt 或者 .pem 后缀的文件内容到证书内容 (公钥),复制 .key 后缀结尾的内容到 证书私钥; |
| 4、如果需要把域名升级为 HTTPS 或者修改证书 的话,需要按照以下步骤绑定证书即可:[/products/cdn/configuration-management-fusion/4-https-configuration](/products/cdn/configuration-management-fusion/4-https-configuration) 。 |
| Q3: 我申请了七牛的 SSL 证书,为何申请 SSL 证书一直待确认,有时候需要好几天? |
| ----------------------------------------------------------------------------------------------------------------------- |
| 在证书订单页面,点击订单最后的 “详情” ,确定验证流程是否配置完成。
当选择 DNS 验证方式,域名除 TXT 记录外,还有 A 记录、cname 记录等记录类型,验证是不会通过的。这种情况需要重新提交订单,选择文件验证方式。 |
| Q4: 因为解析冲突,我不能选择 DNS 验证方式;因为服务器不支持 .well-known 这种目录,文件验证不能通过,我如何通过验证呢? |
| ----------------------------------------------------------------------------------------------------------------- |
| 参考文档:[域名已经解析如何通过验证](/faq/cdn/3890-domain-name-already-how-do-parsing-by-verifying)\
文档中的第一种方法,可以解决两种情况同时存在的问题。 |
| Q5: 为什么申请 SSL 证书失败呢? |
| -------------------------------------------------------------------------------------------------------------------------------------------------- |
| CA 中心验证的过程是完全黑盒的,具体失败原因无法得知。从经验看,原因有以下几种可能性:
1. 网站所有人与证书申请人姓名不同。
2. 域名中含有 “非法” 字符,比如域名中不能有 test 。
3. 域名涉及非法信息 / 被举报 / 被 CA 中心添加黑名单。 |
| Q6: 为什么申请 SSL 免费证书配置时间很长? |
| ------------------------------------------------------------------------------------------------------------------------------------------- |
| 通常情况下证书会在配置在 1-2 小时内颁发并完成配置,期间域名访问不受影响,部分配置不可修改。但证书颁发受 CA 中心的影响,证书颁发时间不可控,若较长时间仍未配置完成,另外建议检查下,域名是否存在CAA解析记录,如果域名存在CAA解析记录,会导致证书签发失败,任务处理延时。 |
| Q7: 证书到期了可以自动续费吗? |
| ------------------------------------------------ |
| 证书到期现在不支持自动续费,需要重新购买新的证书,完成验证,证书签发后部署到CDN进行替换即可。 |
| Q8: 免费证书到期后,续费报错:\[400600] 前置订单未完成,请稍后重试点击查看 ,如何处理? |
| --------------------------------------------------------------------------------------------------------------------------------- |
| 免费证书到期后,不需要续费,您重新申请购买新的免费证书即可。参考文档:[如何申请并使用免费证书](/faq/cdn/https-issues-related-to/3725-how-to-apply-for-and-use-free-certificate) |
| Q9: 证书申请失败,存在CAA或DS记录 |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 证书在CA机构签发的时候,会发起证书域名验证轮询,域名如果存在CAA或DS解析记录,那么就无法完成验证。需要去域名控制台,删除域名下的CAA或DS类型的解析,也就是去DNS服务商或者域名供应商(如华为云、阿里云、Cloudflare等),配置CNAME解析或者A记录解析的地方,删除多余的CAA或DS记录解析 |
| Q10: 续费SSL证书生效时间问题 |
| ------------------ |
| 从购买日开始算的,不是叠加计算 |
| Q11: 如何下载SSL证书? |
| ------------------------------------------------------------------------------------------------------------------ |
| 在七牛控制台 - 证书管理 - [我的证书](https://portal.qiniu.com/certificate/ssl#cert) 界面找到需要下载的证书,点击 「下载」 ,文件格式默认是zip压缩文件,本地自行解压即可 |
| Q12: 为什么在七牛已配置证书,访问还是提示不安全? |
| -------------------------------------------------------------------- |
| 一般是域名解析不在七牛这边导致的;建议去域名购买商平台或域名DNS托管商平台确认下解析配置信息,然后去域名解析所在厂商更新对应域名证书。 |
| Q13: 证书提交后,域名所有权验证未通过,如何处理? |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1、 如果您选择的是DNS验证方式:需要您去域名购买商平台根据七牛提供的验证解析信息,添加一条证书TXT验证解析记录;
`注意:如果有相同主机记录的TXT解析记录,直接修改对应的记录值为最新的即可`;
2、如果您选择的是文件验证方式:需要下载验证文件,并将验证文件上传到申请证书的域名所在服务器或七牛存储空间中,文件名与七牛提供的 验证文件路径(文件名示例:.well-known/pki-validation/fileauth.txt) 保持一致。 |
| Q14: 免费证书提交申请后,域名所有权验证通过,为啥一直处于验证审核中? |
| ---------------------------------------------------------------------------------------------------------------------------------- |
| 域名所有权验证通过后,CA会自动轮询签发证书,一般需要15-30min左右会自动签发证书,耐心等待即可。如果长时间未审核通过,您可以提供证书订单号和域名 [提交工单](https://support.qiniu.com/tickets) 反馈技术支持核实确认。 |
| Q15: 自有证书支持API上传和部署么? |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 支持,SSL证书上传API参考:[证书管理](/products/cdn/9-fusion-api-cert-management) 文档;
`注意:上传的自有证书必须是Nginx版本的`
1、如果是CDN域名的话,证书上传后,可以调用CDN的API接口更新对应域名证书,域名升级为https接口参考:[开启 HTTPS](/products/cdn/5-fusion-api-domain-config#P26),更新HTTPS协议域名证书接口参考:[修改 HTTPS 配置](/products/cdn/5-fusion-api-domain-config#P27) |
| 2、如果是存储空间绑定的自定义源站域名,目前暂时没有API接口,只能手动在控制台配置绑定,操作参考:[开启HTTPS访问](/products/kodo/kodo-console-guide/bucket-management/kodo-domain-name-management/1-set-the-custom-source-domain-name) |
| Q16: 2年期证书为什么自动续费失败了? |
| ------------------------------------------------------------------------------------------------------------------------ |
| 一般是您修改了之前七牛提供的2年期证书验证解析配置导致的,可以先去域名购买商或DNS托管商那边确认并恢复之前的验证解析配置,然后再 [提交工单](https://support.qiniu.com/tickets) 反馈技术支持确认并处理。 |
| Q17: 付费证书续费时,是否支持复用旧证书的CSR? |
| --------------------------- |
| 支持,续费时可以粘贴旧的CSR提交订单。 |
# CDN 命中率、回源率常见问题 (/faq/cdn/4080-the-common-problems-in-the-cdn)
最近更新时间: 2021-09-23 18:15:40
# CDN 命中率如果较低的原因是什么? [#cdn-命中率如果较低的原因是什么]
1. 源站动态资源较多,多为不可缓存的内容,也会导致频繁回源拉取。
2. 资源访问量较低,文件热度不够,CDN 收到请求较少无法有效命中缓存。
3. 缓存配置不合理,缓存时间过短,CDN 节点频繁回源。
4. 访问资源的 URL 带参数,并且参数不断变化,当用不同的 URL 去访问 CDN 的时候,CDN 会认为这是一个新请求(即便这两个不同的 URL 其实是访问到了同一个文件,并且该文件已经缓存在节点上),会回源去拉取所请求的内容。
# CDN 什么情况下会回源拉取资源? [#cdn-什么情况下会回源拉取资源]
1. 用户访问时,如节点上无缓存,则会回源拉取资源
2. CDN 节点上的文件超时过期,会回源拉取资源
3. 若为不缓存文件,用户访问时,会直接回源
4. 未忽略 URL 参数域名,使用该形式域名带参数访问资源,会直接回源
# 为什么我的回源流量比较高? [#为什么我的回源流量比较高]
当回源率较低时,大部分资源会回源拉取,产生回源拉取流量。特别的,如果每个资源都会带随机参数或者全局缓存为0s,此时命中率接近0,回源流量大大增加。
# SSL 证书续费操作流程 (/faq/cdn/4153-ssl-certificate-renewal-process)
最近更新时间: 2026-04-29 16:37:14
在七牛购买的证书,支持进行续费操作,续费后将生成一个新证书订单,需要针对新生成的证书订单,进行补全信息及证书验证的操作,等待证书签发后,本次续费操作完成。
1.登录 [七牛管理控制台](https://portal.qiniu.com/create) ,在左侧点击 [SSL 证书服务](https://portal.qiniu.com/certificate/ssl),找到待续费的证书订单,点击续费。
2.提交订单后,会提示您进行证书信息补全:
如果您提交订单后跳过了这个按钮,后续也可以在订单页面找到这个证书,点击进行补全。
3.补全信息完成后,您需要完成证书的验证配置。
您可以在`订单详情`中获取证书的验证信息,如果您申请的是免费DV证书,您可以参考文档[**免费证书验证指南**](/products/ssl/operation-guide/1-ssl-certificate-of-free-dns-validation-guide)
4.证书配置成功且订单签发后,您需要在「CDN」-「域名管理」-「配置」页面,修改「HTTPS配置」,选择下拉框中可选证书,点击提交即可更换CDN域名的绑定证书。
# 文件预取的意义和操作方法 (/faq/cdn/4155-the-significance-of-file-prefetching-and-operating-methods)
最近更新时间: 2026-04-29 16:34:46
# 文件预取的意义 [#文件预取的意义]
文件预取,也可称为预加热或预缓存,是指新资源提前由 CDN 拉取到 CDN 缓存节点。这样一来,用户第一次访问到该节点时,就可以直接命中缓存,无需重新回源拉取,由此提高用户第一次访问的速度。
# 提交预取请求的三种方法 [#提交预取请求的三种方法]
1. 在 [七牛管理控制台](https://portal.qiniu.com) 左侧产品列表中找到 CDN ,进去后点击 [刷新预取](https://portal.qiniu.com/cdn/refresh-prefetch) ,选择 **文件预取**。
按要求填写需要预取的 URL,点击提交即可。
2. 使用工具
使用七牛云提供的 [qshell](/products/kodo/0-qshell) 命令行工具,参考使用文档,先设置密钥,然后执行 [cdnprefresh](https://github.com/qiniu/qshell/blob/master/docs/cdnprefetch.md) 命令来预取。
3. 通过API 接口提交预取请求:
七牛各服务端的 [SDK](/sdk-tools/sdk#official-sdk) 都提供了预取的方法。
另附:[预取接口文档](/products/cdn/8-fusion-api-cache-management)
**`注:`** 提交预取请求后 **10 分钟** 左右,预取全网生效。
# 如何开启域名强制 https 访问? (/faq/cdn/4175-how-to-open-the-domain-name-mandatory-https-access)
最近更新时间: 2026-04-29 15:00:01
登录 [七牛管理控制台](https://portal.qiniu.com/create) ,在 [CDN - 域名管理界面](https://portal.qiniu.com/cdn/domain),找到需要开启强制 https 的域名,点击 **配置**:

下拉弹窗,找到 HTTPS 配置 ,点击 **修改配置**:

点击 **开启** 强制 HTTPS:

# 镜像存储刷新缓存方法 (/faq/cdn/4215-image-storage-refresh-the-cache-method)
最近更新时间: 2018-05-10 10:13:11
当镜像源的文件更新(或删除)后,刷新 CDN 缓存的方法有以下两种:
1. 首先将空间中该资源删除;
然后按照 [刷新缓存的方法](/faq/cdn/refresh-the-cache-problem/1325-refresh-the-cache-and-the-effect-of-time) 文档第一条介绍的方法,提交刷新缓存请求。
2. 首先,利用 prefetch 接口 或者 [qshell](/products/kodo/0-qshell) 工具的 prefetch 命令 将镜像源站的资源覆盖空间中相同名称的资源;
然后按照 [刷新缓存的方法](/faq/cdn/refresh-the-cache-problem/1325-refresh-the-cache-and-the-effect-of-time) 文档第一条介绍的方法,提交刷新缓存请求。
# 网站公安备案和查询流程 (/faq/cdn/5992-the-web-site-public-security-registration-process)
最近更新时间: 2019-07-26 11:47:56
# 如何查询公安备案信息 [#如何查询公安备案信息]
一、打开 \[全国公安机关互联网安全管理服务平台]\([http://www.beian.gov.cn/portal/index)。](http://www.beian.gov.cn/portal/index\)。) 对首次登录系统的用户,系统会自动弹出提示信息,提示您先填写开办主体信息。
二、\*\*查询方式\*\*:在未登录网站情况下点击页面上方的\`公共查询\`,如下图所示: 
可分别根据网站名称、网站域名、公安机关备案号来查询是否已经存在备案信息,查到显示如下页面: 
# 网站公安备案流程 [#网站公安备案流程]
# 一、用户登录、注册 [#一用户登录注册]
打开 \[全国公安机关互联网安全管理服务平台]\([http://www.beian.gov.cn/portal/index),点击\\\`联网备案登录\\\`,填写用户名、密码及验证码即可登录。](http://www.beian.gov.cn/portal/index\),点击\\`联网备案登录\\`,填写用户名、密码及验证码即可登录。) 
如果尚未注册,可点击\`注册\`,填写密码是注意至少八位并为“\`字母\`+\`数字\`+\`特殊符号\`”的组合。 
# 二、开办主体管理 [#二开办主体管理]
\*\*开办主体申请\*\*: 对于首次备案的用户,必须首先填写主办单位及负责人的真实有效信息,只有提交了主体信息后,才能在该主体下进行网站备案。开办主体性质分为个人和单位。 点击左侧菜单\`开办主体管理\`您需要根据实际情况选择自己的开办主体性质并正确填写各项信息(\*\*注:录入主体信息时所填写的信息必须真实、合法,才能审核通过,顺利完成备案。\*\*)填写完成后点击\`保存\`,公安民警审核后您会收到短信通知,也可在系统消息中查看审核结果,一般审核时间为3-5个工作日。
\*\*开办主体性质-个人\*\* 
\*\*开办主体性质-单位\*\*  
\*\*填写注意事项\*\*: 1. 上传的证件图片需要清晰,大小在400KB以内; 1. \*\*单位名称\*\*:形式上应完整填写网站主办者全称,如个人应填写个人姓名,企业应填写工商营业执照注册公司名称。内容应真实准确,不得以域名或数字等符号或以网站名称信息代替网站主办者信息; 1. \*\*单位性质\*\* :应与主办单位名称等信息对应一致,如主办单位名称为某某公司,则单位性质应为企业;如主办单位为张三,则单位性质应为个人; 1. \*\*证件号码\*\*:应符合相应的格式要求,且与主办单位性质等信息(企业、事业单位、政府机关、军队、社会团体、个人等)对应一致。如主办单位性质为企业,不应填写军队代号或个人身份证等号码等非工商营业执照号码或非组织机构代码证号码; 1. \*\*投资或主管单位\*\*:网站所属者为企业、事业单位、社会团体、政府机关、军队填写法人姓名或单位最高负责人姓名; 1. \*\*负责人常住地\*\*:内容真实准确,格式标准完整。例如,农村单位应详细填写到村,城镇单位应填写到街道门牌号或信箱号; 1. \*\*办公电话\*\*:务必填写。号码应格式标准、内容真实准确,不得出现“010-00000000”等明显不真实的联系方式。
# 三、新办网站备案申请 [#三新办网站备案申请]
点击左侧菜单\`新办网站申请\`,根据要求填写真实合法的信息,填写完成后,点击\`提交\`等待公安民警审核,一般审核时间为3-5个工作日 >注:务必按照要求填写,否则将被退回 >
\*\*第一步:网站开办主体,已经提交申请或审核已经通过,直接点击\`下一步\`即可;\*\* 
***
\*\*第二步:网站基本信息填写\*\*  
\*\*填写注意事项:(务必按照要求填写,否则将被退回)\*\* >注: 您的网站在不涉及前置审批,请不要在选项内容中打勾;如果没有您的网站服务内容,就无需选择。 > 1. \*\*网站名称\*\*:应与其主办单位性质等信息对应一致。如主办单位性质为个人的网站,不得以“某某有限公司”等与其主命名;不得以域名作为网站名称。主办单位性质为非政府机构或非政府授权机构的网站,不得以“某某市人民政府”、“某某监察”等公共事务关键字命名;主办单位性质为非国家级单位的网站,不得以“中国”“中华”“维权”等字头命名。无新闻(省委宣传部获得前置审批)、出版(省出版局获得前置审批)、教育(省教育厅获得前置审批)、卫生(省卫生厅获得前置审批)、药监(省食品药品监管局获得前置审批)、文化(省文化厅获得前置审批)、广电(省广电厅获得前置审批)等前置审批或专项审批的网站,不得以相关领域。关键词命名。如未经新闻管理部门前置审核同意的,不得以“新闻网”命名;未取得电子公告专项审批的,不得以“论坛”命名。含有bbs的域名视为论坛,需到省通信管理局办理电子公告专项备案。新增ICP备案操作手册新增ICP备案操作手册(一):增 1. \*\*网站服务类型\*\*:单位可选择单位门户网站,个人可选择博客/个人空间,如有其他类型内容可如实勾选。 1. 如果您的虚拟主机只对应一个IP,可以填写同一个IP地址;如果对应多个如实填写起止IP即可。
\*\*第三步:网站负责人信息填写\*\* 如果网站负责人信息/信息安全负责人信息/舆情引导员信息与开办人主体负责人信息相同直接打钩即可自动填充,如果不同则根据实际情况分别填写。 
\*\*填写注意事项:\*\* \*\*负责人姓名\*\*:应填写真实姓名全称,不得填报“王先生”、“李小姐”、“个人”或者加带数字或字母的姓名等明显不真实的姓名。
\*\*第四步:提示说明\*\* 请认真阅读,如果没有异议,勾选“我已阅读信息网络安全保护方案”点击\`提交\`, 公安民警会在3-5个工作日给已反馈,反馈的信息将以短信形式通知,也可登录网站在系统消息中查看。 
\*\*特别注意:\*\* 非交互式网站初步审核完成后即完成备案,交互式网站需要进行面审或实地检查,具体时间将以短信告知。 如收到公安机关面审通知,请按照短信通知的时间携带所需证件到公安机关进行材料完整性检验; 如收到公安机关实地审核通知:请按照通知的时间做好准备,配合公安民警进行安全检查。
\*\*第五步:发放备案号\*\* 在完成以上审核以后,公安机关将会发放公安部备案号,您需要将备案号放置网站首页下端 ;您可以将网站备案代码放置在网站上,获取代码方法:在已备案网站中查看网站详情,点击\`复制备案号\`即可获得备案代码。


# ICP备案流程 (/faq/cdn/6000-the-icp-registration-process)
最近更新时间: 2019-08-02 16:57:55
# 为什么要备案 [#为什么要备案]
根据工信部《互联网信息服务管理办法》(国务院 292 号令),网站在未完成备案之前,不能指向大陆境内服务器开通访问。如果你的网站托管在中国大陆节点服务器,就必须申请互联网内容提供商 (ICP) 备案。若网站服务器为非中国大陆节点,则不用申请备案。
1\. 对于单纯的资讯性并且不涉及直销的网站,需要申请 ICP 备案。ICP 备案可通过网站托管服务器提供商或网络空间服务商(如电信、移动、联通等)进行申请。 你可以在服务器提供商的备案系统提交 ICP 备案申请。如果你使用的是七牛云主机,请登录\[七牛云合作备案系统]\([https://portal.qiniu.com/qvm/beian?ref=developer.qiniu.com)提交备案申请。](https://portal.qiniu.com/qvm/beian?ref=developer.qiniu.com\)提交备案申请。) 七牛云 ICP 备案操作可分为:\[首次备案]\(/products/qvm/section-fpr5/0-qvm-first-guide)、\[接入备案]\(/products/qvm/section-fpr5/4-qvm-access-registration)、\[变更备案]\(/products/qvm/section-fpr5/3-qvm-change-record)、\[新增网站备案(原备案不在七牛云)]\(/products/qvm/section-fpr5/2-qvm-new-site) 和 \[增加网站备案(原备案在七牛云)]\(/products/qvm/section-fpr5/1-qvm-record-users)。 \*\*注:\*\*根据 2016 年最新要求,网站在工信部备案成功后,需在网站开通之日起 30 日内提交\[公安备案]\(/faq/cdn/5992-the-web-site-public-security-registration-process)申请。
2\. 对于商品或服务的在线平台或第三方卖方,需获得商用许可证。要申请经营性 ICP 许可证,你必须先有一个有效的 ICP 备案号。经营性备案需用户自己到当地管理局相关部门进行办理,服务商可协助提供资质以及接入协议。具体办理要求需你登录当地经营性备案网站进行查看。
# 备案准备 [#备案准备]
为节约备案时间,建议你提前做好备案准备。因各省管局要求不同,准备资料也有不同,请你访问\[工信部备案管理系统]\([http://www.beian.miit.gov.cn/)了解备案省市的备案规则准备备案资料。](http://www.beian.miit.gov.cn/\)了解备案省市的备案规则准备备案资料。) \* \*\*域名\*\* 域名所有者必须与备案主体\*\*一致并且已实名。\*\* 自 2018 年 1 月 1 日起,从事互联网信息使用的域名应为其依法依规注册所有,个人性质备案域名注册者应为本人,单位性质备案域名注册者应为单位(含公司股东)、单位主要负责人或高级管理人员。具体要求,请查看\[工业和信息化部关于规范互联网信息服务使用域名的通知]\([http://www.miit.gov.cn/newweb/n1146285/n1146352/n3054355/n3057709/n3057714/c5930543/content.html?spm=a2c4g.11186623.2.3.mFjsgs)。备案时会验证域名所有者和备案主办单位名称,网站域名所有者与网站备案主办者需一致。如果你的域名所有者与主办单位不一致,请先更改域名所有者信息。](http://www.miit.gov.cn/newweb/n1146285/n1146352/n3054355/n3057709/n3057714/c5930543/content.html?spm=a2c4g.11186623.2.3.mFjsgs\)。备案时会验证域名所有者和备案主办单位名称,网站域名所有者与网站备案主办者需一致。如果你的域名所有者与主办单位不一致,请先更改域名所有者信息。) \* \*\*备案资料\*\* 最新彩色营业执照正本、彩色法人的身份证正反面照片、公司座机、法人手机、网站负责人手机、公司邮箱、网站负责人幕布照(幕布运营商会在备案过程中邮寄)、域名证书(找域名注册商提供)等。 \*\*注:\*\*网站打开情况:网站在备案期间不能访问,要处于关闭状态。 \* \*\*工信部备案查询\*\* 若主办单位或个人证件(即备案主体)及网站域名都未进行过工信部备案,则为\*\*首次备案\*\*。先确认是否为首次备案,方便后续正确提交信息。 1. 打开\[工信部备案网站]\([http://www.beian.miit.gov.cn/)主页,单击\\\`公共查询\\\`。](http://www.beian.miit.gov.cn/\)主页,单击\\`公共查询\\`。)  2. 输入网站域名或公司主体及验证码,单击\`提交\`,若为空白结果则为首次备案。 
# ICP备案流程图 [#icp备案流程图]

# 自主报备 [#自主报备]
## 登录企业侧备案系统 [#登录企业侧备案系统]
1\. 打开\[工信部备案部级系统]\([http://www.beian.miit.gov.cn/)或住所所在地省局系统网站(入口:工信部主页-->管局系统),如下图所示。](http://www.beian.miit.gov.cn/\)或住所所在地省局系统网站(入口:工信部主页-->管局系统\),如下图所示。) 2. 在“自行备案导航”栏目输入\`接入商所在省\`,\`接入商名称\`及\`验证码\`,单击\`进入\`。
 
4\. 获取接入服务的企业名单\*\*(只能选择一个接入服务商)\*\*,单击\`某一接入商名称\`打开企业侧备案系统办理网站备案业务。 
## 提交信息 [#提交信息]
登录到企业侧备案系统后-->\*\*填写\*\*备案信息-->接入服务商\*\*校验\*\*所填信息并\*\*反馈\*\*。 
# 由接入服务商代为提交 [#由接入服务商代为提交]
网站主办者\*\*委托\*\*接入服务商代为报备网站的全部备案信息并核实信息真伪-->接入服务商\*\*核实\*\*备案信息-->提交到\*\*省管局系统\*\*。 如果你使用的是七牛云主机,可登录\[七牛云合作备案系统]\([https://portal.qiniu.com/qvm/beian?ref=developer.qiniu.com)提交备案申请。具体步骤,请参考\\\[首次备案指南\\](https://portal.qiniu.com/qvm/beian?ref=developer.qiniu.com\)提交备案申请。具体步骤,请参考\\\[首次备案指南\\)]\(/products/qvm/section-fpr5/0-qvm-first-guide)。
## 接入服务商核实备案信息流程: [#接入服务商核实备案信息流程]
1\. 接入服务商对网站主办者提交的备案信息进行当面核验:当面采集网站负责人照片; 2. 依据网站主办者证件信息核验提交至接入服务商系统的备案信息; 3. 填写《网站备案信息真实性核验单》。 \* 如果备案信息无误,接入服务商提交给省管局审核; \* 如果信息有误,接入者在备注栏中注明错误信息提示后退回给网站主办者进行修改。
# 省通信管理局审核 [#省通信管理局审核]
网站主办者所在地省管局对备案信息进行审核 \* 审核不通过,则退回企业侧系统由接入服务商修改; \* 审核通过,生成的备案号、备案密码(并发往网站主办者邮箱)和备案信息上传至部级系统,并同时下发到企业侧系统,接入服务商将备案号告知网站主办者。
# 常见问题 - 未备案冻结域名 (/faq/cdn/6292-common-problems-for-the-record-to-freeze-the-domain-name)
最近更新时间: 2026-04-29 15:24:20
# 简介 [#简介]
在域名备案被工信部吊销后,七牛将会对您的域名进行冻结,本文列出了部分您可能需要了解的问题。
Q:未备案冻结的域名如何解冻?
Q:如何查询备案?
Q:域名之前备案过了还会因为未备案冻结?
Q:备案吊销后如何处理?
Q:某些工具可以查询到备案,但还是被冻结了?
***
# Q:未备案冻结的域名如何解冻? [#q未备案冻结的域名如何解冻]
备案完成后,可以先在「**[域名信息备案管理系统](http://beian.miit.gov.cn/publish/query/indexFirst.action)**」查询备案是否已经公示,确认已经公示后,在 **七牛管理控制台** 页面选择 [**CDN**](https://portal.qiniu.com/cdn/overview) ,选择 [**域名管理**](https://portal.qiniu.com/cdn/domain) ,点击您需要解冻域名后的 **解冻** 字样,即可发起解冻任务。备案完成后,工信部一般会延迟1个工作日左右进行公示,解冻域名将以实际公示情况为准。
# Q:如何查询备案? [#q如何查询备案]
您可以通过「[**域名信息备案管理系统**](http://beian.miit.gov.cn/publish/query/indexFirst.action)」对备案信息进行查询。
查询方式:左侧「公共查询」-「备案查询」-「备案信息查询」,在网站域名处输入您的备案主域名,正确验证码后点击提交,如果域名没有备案信息,会提示`「没有符合条件的记录」`。
# Q:为什么域名之前备案过了还会被未备案冻结? [#q为什么域名之前备案过了还会被未备案冻结]
备案吊销是指对备案信息做收回并注销,由有管辖权力的部门停止原来准许进行某项活动的对象停止该项活动并收回准许文本的执行过程,一般带有强制性。起因基本是由于该对象违背或违反了发放文本时的约定所致,七牛检测到备案信息失效后,会对域名执行冻结操作。
# Q:备案吊销后如何处理? [#q备案吊销后如何处理]
确认备案被吊销后,您可以在原域名备案处,重新进行备案。
# Q:某些工具可以查询到备案,但还是被冻结了? [#q某些工具可以查询到备案但还是被冻结了]
网络上的备案查询工具都有一定的延迟,需要以工信部官网的公示结果为准,查询方式参考「如何查询备案」。
# 账单问题 - 存储CDN回源流出流量 (/faq/cdn/6358-bills-storage-cdn-back-to-the-origin-of-traffic)
最近更新时间: 2019-12-11 17:40:10
# 问:账单中「标准存储CDN回源流出流量」是什么含义? [#问账单中标准存储cdn回源流出流量是什么含义]
答:
下图为CDN访问的简化流程图,后续步骤号码将对应流程图中标号。
## 场景1:CDN节点「**没有缓存**」时,需要回源站拉取资源并缓存,访问步骤为: [#场景1cdn节点没有缓存时需要回源站拉取资源并缓存访问步骤为]
1: 客户访问端发送访问请求到CDN节点。
2: CDN节点进行回源,发送请求到七牛云存储。
3: 七牛云存储返回数据给CDN节点。
4: CDN节点缓存数据,并由CDN返回数据给客户端。
计费说明:该过程中,产生的计费项目为流程 3 产生的**存储CDN回源流出流量** + 流程 4 产生的**CDN访问流量**。
## 场景2:CDN节点「**有缓存**」时,访问步骤为: [#场景2cdn节点有缓存时访问步骤为]
1: 客户访问端发送访问请求到CDN节点。
4: CDN节点返回数据给客户端。
计费说明:该过程中,产生的计费项目为流程 4 产生的**CDN访问流量**。所以,并不是每次请求都会产生这两项计费。如果CDN有缓存没有进行回源,就不会产生**存储CDN回源流出流量**。
***
# 问:如何区分 存储CDN回源流出流量 和 CDN访问流量 呢? [#问如何区分-存储cdn回源流出流量-和-cdn访问流量-呢]
答:**存储CDN回源流出流量**是由七牛的存储机房流出的流量(流程3),**CDN访问流量**是由CDN节点流出的流量(流程4)。
***
# 问:为什么账单中 存储CDN回源流出流量 比 CDN访问流量 还高呢? [#问为什么账单中-存储cdn回源流出流量-比-cdn访问流量-还高呢]
答:CDN回源流出流量高的可能原因有
1. 业务主要是视频业务,但是创建域名时域名场景选择了网页平台,下载时边下边播,回源时完整回源,导致即使只观看一小部分,也会产生完整的回源流量费用。`建议空间可以绑定不同域名,视频业务使用点播平台域名播放`,域名场景不影响使用,但会针对特定场景有一定的优化。
2. 资源访问时,如果`每次都带了不同的query参数`,或者`把缓存时间设置非常小`,会导致强制CDN节点回源,所以每次访问都会产生了**存储CDN回源流出费用**。
***
# 问:可以关闭存储CDN回源流出流量吗? [#问可以关闭存储cdn回源流出流量吗]
答:不能,CDN节点至少需要有1次回源拉取行为才能完成缓存,在此过程中存储产生的流量都需要进行计费。
# 常见问题 - CDN功能咨询 (/faq/cdn/6389-function-of-consulting-the-faq)
最近更新时间: 2026-06-09 10:51:51
# 简介 [#简介]
七牛默认使用 CDN 域名访问存储资源,如果您正在使用 CDN 产品,可能会涉及到资源的缓存/预取问题,本文列出了部分您可能需要了解的问题列表。
Q1:CDN 是否支持 websocket 加速?
Q2:CDN 是否支持 HTTP2 访问?
Q3:微信小程序要求的 TLS 版本必须大于等于1.2怎么处理?
Q4:CDN 访问的链接长度限制是多少?
Q5:CDN 支持 指定端口访问 吗?
Q6:CDN 支持 海外访问加速 吗?
Q7:CDN 有带宽限制吗 ?
Q8:测试域名有使用限制吗 ?
Q9:测试域名能恢复吗?
Q10:没有域名或者域名还没有进行ICP备案,可以使用CDN加速吗?
Q11:域名使用场景可以修改吗,小文件场景和下载场景都能用吗?
Q12:已经创建的域名可以修改名称吗?
Q13:CDN支持中文域名以及中文转义域名吗?
Q14:CDN支持gzip或者br压缩吗?
Q15:CDN支持配置流量带宽上限、qps访问限制、UA黑名单、单链接访问限速吗?
Q16:空间上绑定的域名默认就有CDN加速吗,不要加速可以吗?
Q17:买CDN资源包可以提速吗,怎么让CDN更快?
Q18:CDN可以对服务器上部署的网站加速吗?
Q19:CDN支持配置自定义请求头吗?
Q20:CDN支持短链接吗?
Q21:CDN支持对某个资源访问做限制吗?
Q22:七牛提供域名吗?
Q23:七牛CDN域名支持配置HSTS么?
Q24:全站加速支持根据目录配置缓存吗?
Q25:域名所有权验证失败,如何处理?
如果本文仍然无法解决您的问题,您也可以通过 **[工单系统](https://support.qiniu.com/tickets/new)** 将您的问题反馈给我们。
| Q1: CDN 是否支持 websocket 加速? |
| -------------------------- |
| 暂不支持 websocket 加速。 |
| Q2: CDN 是否支持 HTTP2 访问? |
| ------------------------------------------------- |
| 支持,在 控制台 - CDN - 域名管理 中,修改 https 配置可以开启 http2 访问。 |
| Q3: 微信小程序要求的TLS版本必须大于等于1.2怎么处理? |
| -------------------------------------------------------- |
| 域名需要先开启 HTTPS,然后开启 HTTP 2 功能,HTTP 2.0 默认使用 TLS1.2 及以上版本。 |
| Q4: CDN 访问的链接长度限制是多少? |
| ------------------------------ |
| URL 参数限制为 750 字节内,暂时无法支持更长url。 |
| Q5: CDN或全站加速 支持指定端口访问吗? |
| ----------------------------------------------------------------- |
| CDN 域名仅支持默认的 80/443 端口访问,不支持自定义端口访问;但是 CDN 配置回源时,支持回源到您的服务器的指定端口。 |
| DCDN全站加速 域名仅支持默认的 80/443 端口访问,不支持自定义端口访问,且 全站加速 回源配置时,也不支持指定端口。 |
| Q6: CDN 支持 海外访问加速 吗? |
| -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| CDN可以配置海外加速,在CDN -- 域名管理 -- 配置 -- 覆盖范围中,设置海外或者全球加速线路,即可支持海外节点加速访问,修改覆盖范围参考[这里](/faq/cdn/7456-seven-cattle-console-switch-how-autonomous-domain-coverage) |
| Q7: CDN 有带宽限制吗? |
| ----------------------------------------------------------------------------------------------------- |
| CDN默认无带宽限制,如果您的带宽达到10Gbps,建议您可以[提交工单](https://support.qiniu.com/tickets/new)或者通过您的商务联系我们,提前报备,预留充足资源。 |
| Q8: 测试域名有使用限制吗 ? |
| ---------------------------------------------------------------------------------- |
| 测试域名限制比较多,测试域名无法修改,无法进行https配置,默认忽略全部参数缓存,默认只有30天使用期限,到期自动回收,单日限制10GB回源流量。 |
| 更多限制您参考[测试域名使用规范](/faq/cdn/other-fusion/1319-test-domain-access-restriction-rules) |
| Q9: 测试域名能恢复吗? |
| -------------- |
| 测试域名一旦删除,无法恢复。 |
| Q10: 没有域名或者域名还没有进行ICP备案,可以使用CDN加速或者访问吗吗? |
| --------------------------------------------------------------------------------------------------------------------------- |
| CDN加速必须绑定域名,没有域名无法使用CDN加速,根据工信部要求,凡是使用CDN国内加速的,必须拥有ICP备案,使用海外CDN暂时无法备案,但是必须要有域名,没有域名的话,您可以先去域名供应商处购买域名,七牛没有域名售卖,测试域名也不会售卖的。 |
| Q11: CDN 选错了应用场景可以修改吗,不同的场景有什么区别,都能用吗? |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 已创建完成的域名,无法修改使用场景,不同的场景都可以使用,不同的是图片小文件适合js 图片等文件快速访问,下载平台适合zip、dmg、apk等大文件下载分发,点播平台适合视频文件分发,基本都是可以使用,详细介绍您参考[使用场景说明文档](/products/cdn/3-usage-scenarios-fusion),如果您一定要修改使用场景,需要您[提交工单](https://support.qiniu.com/ticket/new)联系我们。 |
| Q12: 已经创建的域名可以修改名称吗? |
| ------------------------------------------ |
| 已经创建的域名不可以修改名称,需要重新创建新的域名,已创建的域名只能修改域名的配置。 |
| Q13: CDN支持中文域名以及中文转义域名吗? |
| ------------------------ |
| CDN不支持中文域名以及中文转义域名 |
| Q14: CDN支持gzip或者br压缩吗? |
| -------------------------------------------------------------------------------------------------------------------- |
| CDN控制台当前不支持配置gzip压缩,需要源站支持。源站如果是七牛存储空间,存储源站默认支持gzip压缩,源站如果是您的服务器,需要您服务器支持gzip压缩,CDN会将客户端的gzio压缩请求透传到您源站,需要源站响应压缩后的内容 |
| Q15: CDN支持配置流量带宽上限、qps访问限制、UA黑名单、单链接访问限速吗? |
| ---------------------------------------------------------------------------------- |
| CDN当前只支持 IP黑白名单,UA黑白名单,时间戳防盗链,回源鉴权以及referer防盗链5种防御方式,流量带宽上限、qps访问限制以及单链接访问限速都是不支持的 |
| Q16: 空间上绑定的域名默认就有CDN加速吗,不要加速可以吗? |
| ------------------------------------------------------------------------------ |
| 空间上绑定的域名默认就有加速效果,如果不要加速,只能绑定成源站域名,源站域名在空间设置--域名管理中,绑定自定义源站域名,自定义源站域名没有加速,没有缓存。 |
| Q17: 买CDN资源包可以提速吗,怎么让CDN更快? |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 资源包只是抵扣账单使用,和CDN下载速度没有任何关系。 |
| CDN下载速度主要取决于本地的下行带宽,本地独占下行带宽越高,CDN下载速度越快,一般如果本地带宽达到100-200Mbps,理论下载速度会在7MB/s \~ 20MB/s。避免出现跨境访问的情况,如果域名是纯海外加速,国内访问,或者域名是国内加速但是在海外访问,会出现访问慢的情况,建议调整域名覆盖范围,将域名设置成同境访问或者全球加速。 |
| 如果您的速度只有2-3MB/s,且本地带宽正常,没有跨境访问的情况,您可以[提交工单](https://support.qiniu.com/ticket/new)联系我们协查。 |
| Q18: CDN可以对服务器上部署的网站加速吗? |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| CDN可以配置域名回源,源站不是七牛存储,直接回源您的服务器,对服务器上的站点进行整体加速,DCDN也是可以支持对服务器网站进行加速,详情可以参考[域名回源](/faq/cdn/domain-name-configuration-problem/4064-understanding-and-setting-up-the-way-back-to-the-source-host) |
| Q19: CDN支持配置自定义请求头吗? |
| -------------------- |
| CDN不支持配置自定义请求头。 |
| Q20: CDN支持短链接吗? |
| ---------------------------------- |
| CDN不支持配置短链接,建议您将文件名设置短一点,或者不使用中文名。 |
| Q21: CDN支持对某个资源访问做限制吗? |
| ---------------------- |
| 不支持,CDN配置都是针对域名级别的。 |
| Q22:七牛提供CDN域名吗? |
| ------------------- |
| 不提供,需要您自行去域名服务厂商购买。 |
| Q23:七牛CDN域名支持配置HSTS么? |
| --------------------- |
| 暂不支持。 |
| Q24:全站加速支持根据目录配置缓存吗? |
| --------------------------------------------------------------------------------------------------- |
| 支持,全站加速支持根据目录、后缀方式配置缓存策略,具体参考 [缓存配置](/products/dcdn/configuration/2-dcdn-cache-configuration) 说明文档。 |
| Q25:域名所有权验证失败,如何处理? |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 一般是域名验证解析配置错误或验证文件无法访问导致的;
1、DNS验证方式:主机记录一般是 verification,且记录值必须是七牛通过的;
2、文件验证方式:需要在主域名下保证能访问到,[http://主域名/verification.html](http://主域名/verification.html) 文件且响应内容与七牛提供一致。
域名所有权验证说明文档参考:
全站加速域名: [域名归属校验](/products/dcdn/2-domain-verify-introduce)
CDN加速域名: [域名归属校验](/products/cdn/4-cdn-domain-verify-introduce) |
| Q26:域名刚刚创建为什么会产生流量? |
| ------------------------------------ |
| 域名创建的时候,会有节点可用性测试,这个测试流量一般非常低,可以忽略的。 |
# 常见问题 - 缓存刷新/资源预取 (/faq/cdn/6390-prefetch-cache-refresh-resources-faq)
最近更新时间: 2026-07-20 10:36:35
# 简介 [#简介]
七牛默认使用 CDN 域名访问对象存储资源,如果您正在使用 **对象存储 / CDN 产品**,可能会涉及到资源的缓存/预取问题,本文列出了部分您可能需要了解的问题列表。
Q0:资源已经在源站删除,为什么还能访问?
Q1:资源已经覆盖/重新上传,为什么还能访问到旧文件?
Q2:如何刷新 CDN 缓存?
Q3:刷新文件 和 刷新目录 分别是什么含义?
Q4:刷新 和 文件预取 有什么区别?
Q5:如何强制回源,不读取 CDN 缓存?
Q6:如何修改缓存时间?
Q7:为什么已经上传的文件有时会出现404,等待一段时间就会正常?
Q8:CDN 节点的缓存会实时和源站同步更新吗?
Q9:如何查看刷新任务是否处理成功?
Q10:提交任务报错 \[403023] urls admin submitted belong to more than one user
Q11:为什么刷新任务已经执行成功,还是访问到旧缓存?
Q12:CDN 访问为什么会存在缓存问题?
Q13:CDN缓存刷新和预取额度可以调整吗?
Q14:CDN缓存刷新和预取失败,是什么原因?
| Q0: 资源已经在源站删除,为什么还能访问? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 当前访问到了该资源在 CDN 节点的缓存。
资源从源站删除之后,缓存仍然会在 CDN 节点保存,所以用户仍然可以访问到,需要刷新 CDN 缓存。
说明:如果您使用了七牛的对象存储,默认绑定CDN加速域名,如果需要刷新缓存,请参考文档[刷新缓存的方法](/faq/cdn/refresh-the-cache-problem/1325-refresh-the-cache-and-the-effect-of-time) |
| Q1: 资源已经覆盖/重新上传,为什么还能访问到旧文件? |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 当前访问到了旧文件在 CDN 节点的缓存。
在源站某个资源的内容变更之后,旧缓存仍然会在 CDN 节点保存,刷新 CDN 缓存即可重新回源获取资源。
说明:如果您使用了七牛的对象存储,默认绑定CDN加速域名,如果需要刷新缓存,请参考文档[刷新缓存的方法](/faq/cdn/refresh-the-cache-problem/1325-refresh-the-cache-and-the-effect-of-time) |
| Q2: 如何刷新 CDN 缓存? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 刷新缓存方法请参考文档[刷新缓存的方法](/faq/cdn/refresh-the-cache-problem/1325-refresh-the-cache-and-the-effect-of-time) |
| 方法1: portal.qiniu.com 控制台刷新缓存,点击左侧 cdn — 刷新预取;
方法2: api 接口地址:[https://developer.qiniu.com/fusion/api/1229/cache-refresh](https://developer.qiniu.com/fusion/api/1229/cache-refresh);
方法3: qshell命令行工具:[/products/kodo/0-qshell](/products/kodo/0-qshell) |
| Q3: 刷新文件 和 刷新目录 分别是什么含义? |
| --------------------------------------------------------------- |
| 缓存刷新分为 刷新文件 和 刷新目录。 |
| 刷新文件:是以单条url为单位进行缓存刷新。
目录刷新:是以目录为单位,将该域名对应目录下的所有文件进行缓存刷新。 |
| Q4: 刷新 和 文件预取 有什么区别? |
| ---------------------------------------------------------------------------- |
| 刷新的含义为清空缓存,预取的含义为主动进行缓存 |
| 刷新后,所有 CDN 节点上对应的资源缓存失效,用户再次触发访问时,CDN 节点将执行回源拉取,刷新操作用于文件更新或删除后,保证用户能访问到最新资源。 |
| 预取后,资源将被主动缓存到 CDN 节点,用户通过 CDN 访问对应预取过的资源时,不需要重复回源,可以提升用户的访问速度。 |
| Q5: 如何强制回源,不读取 CDN 缓存? |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 由于 CDN 上默认是根据url缓存的,可以在访问链接后加上 ?\<随机数> ,如原始url为 [http://a.com/1.txt](http://a.com/1.txt) ,那么访问 [http://a.com/1.txt?\<随机数字](http://a.com/1.txt?\<随机数字)> 就可以强制进行回源了,如果您的资源更新频率较高,可以在cdn配置中,修改资源的缓存时间。 |
| `注意:`
1. 使用该方法强制回源的域名不能配置 忽略 URL 参数 ,否则随机数无效。
2. 随机数也会被缓存,需要强制回源时尽量不使用重复的随机数测试。 |
| Q6: 如何修改缓存时间? |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 如果需要部分前缀或后缀文件不缓存,可以在控制台-域名管理中,修改该域名的缓存配置为自定义,根据您的业务需求设置缓存时间,操作参考 [缓存配置](/products/cdn/configuration-management-fusion/2-cache-configuration) 说明文档。
修改完成后,节点对新的缓存将会依据配置进行,如需清空旧配置情况时已触发的缓存,可以尝试刷新目录缓存。 |
| Q7: 为什么已经上传的文件有时会出现404,等待一段时间就会正常? |
| ---------------------------------------------------------------------- |
| 如果在文件上传完成之前触发访问,会报错 404 ,404 默认会缓存 10 秒左右,如果重复请求该资源,会在上传完成后 10 秒内访问正常。 |
| Q8: CDN 节点的缓存会实时和源站同步更新吗? |
| ---------------------------------------------------------- |
| CDN 缓存更新依赖主动触发刷新任务,或者根据控制台配置的缓存有效时间,过期后重新回源拉取,默认情况下不会主动更新。 |
| Q9: 如何查看刷新任务是否处理成功? |
| ---------------------------------------------------------------------------- |
| 方法1:可以在控制台 - cdn - 刷新预取 - 操作记录中查看; |
| 方法2:调用CDN的接口查询,文档参考 [刷新查询](/products/cdn/8-fusion-api-cache-management#P22)。 |
| Q10: 提交任务报错 \[403023] urls admin submitted belong to more than one user |
| ----------------------------------------------------------------------- |
| 提交刷新/预取任务的域名必须是当前账户在 CDN 域名管理中已经创建的域名,无法刷新其他账户或未创建的域名。 |
| Q11: 为什么刷新任务已经执行成功,还是访问到旧缓存? |
| ------------------------------------------------------------------------------- |
| 1. 检查本地浏览器缓存是否清空,可以尝试更换浏览器或者无痕模式; |
| 2. 确认下访问 URL 是否携带了其他参数,刷新时是否连带参数进行刷新; |
| 3. https 和 http 部分场景下独立缓存,如果之前刷新的是 https 链接,并且用 http 访问过该资源,可以再尝试刷新 http 的链接试下。 |
| Q12: CDN 访问为什么会存在缓存问题? |
| --------------------------------------- |
| CDN 服务利用多级缓存原理进行加速,所以通过 CDN 的访问默认都会被缓存。 |
| Q13:CDN缓存刷新和预取额度可以调整吗? |
| ------------------------------------------------------------------------------------------------------ |
| 默认刷新额度:每天文件刷新限额 500 个,目录刷新 10 个,文件预取限额 100 个;如需提升,可以提交 [工单](https://support.qiniu.com/tickets) 咨询技术支持。 |
| Q14:CDN缓存刷新和预取失败,是什么原因? |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 一般是您的CDN域名配置了全局不缓存(缓存时间为0)导致的,缓存规则配置操作参考 [缓存配置](/products/cdn/configuration-management-fusion/2-cache-configuration);,如果已配置缓存策略,且缓存时间不为0,但刷新或预取还是失败,可以提交 [工单](https://support.qiniu.com/tickets) 咨询技术支持进一步核实确认。 |
# 常见问题 - CDN资源包相关问题 (/faq/cdn/6779-common-problems-cdn-resource-bundle-related-issues)
最近更新时间: 2026-06-17 16:44:46
# 简介 [#简介]
在官网和控制台,七牛推出了资源包可供购买,本文列出了部分关于CDN资源包您可能需要了解的问题。
Q0:如何购买资源包?
Q1:如何选择合适的CDN资源包?各选项的含义是什么?
Q2:如何查看资源包余量?
Q3:资源包可以叠加使用吗?抵扣顺序是什么?
Q4:资源包是否可以用于海外CDN加速?
Q5:使用量超出资源包后如何计费?
Q6:今天8点后购买的资源包,为什么没有进行抵扣?
Q7:CDN资源包可以抵扣对象存储的视频资源下载流量吗?
如果本文仍然无法解决您的问题,您也可以通过 **[工单系统](https://support.qiniu.com/tickets/new)** 将您的问题反馈给我们。
***
# Q0:如何购买资源包? [#q0如何购买资源包]
限时活动入口: [【CDN特惠五折日间包】](https://marketing.qiniu.com/activity/20200423?entry=index-advert)
长期活动入口: [【财务中心-购买资源包】](https://portal.qiniu.com/financial/respack/fusion-composite)
# Q1:如何选择合适的CDN资源包?各选项的含义是什么? [#q1如何选择合适的cdn资源包各选项的含义是什么]
购买资源包前,需要了解您的账户CDN业务的使用情况。
## 第一步:CDN域名所属协议(HTTP/HTTPS) [#第一步cdn域名所属协议httphttps]
在 **管理控制台** 页面选择 [**CDN**](https://portal.qiniu.com/cdn/overview) ,选择 [**域名管理**](https://portal.qiniu.com/cdn/domain) ,查看「协议」,并购买对应的「HTTP/HTTPS」资源包,如下图所示。
注:如果域名协议为HTTPS,通过HTTP/HTTPS访问时产生的流量都计为HTTPS流量。

## 第二步:CDN域名的使用场景(动态/静态) [#第二步cdn域名的使用场景动态静态]
在 **管理控制台** 页面选择 [**CDN**](https://portal.qiniu.com/cdn/overview) ,选择 [**域名管理**](https://portal.qiniu.com/cdn/domain) ,查看「使用场景」,并购买对应的「静态/动态」资源包。
静态加速场景:图片小文件/下载分发/点播平台
动态加速场景:动态加速
如下图所示。

## 第三步:资源包可用时间(全时段/日间时段/闲时段) [#第三步资源包可用时间全时段日间时段闲时段]
1. 全时段流量包:全时段指每天 0:00 - 24:00
2. 日间时段流量包:日间时段指每天 09:00 - 18:00
3. 闲时流量包:闲时段指每天 00:00 - 09:00
叠加使用规则和抵扣顺序参考 资源包可以叠加使用吗?抵扣顺序是什么?
## 第四步:CDN域名的使用量 [#第四步cdn域名的使用量]
在 **管理控制台** 页面选择 [**CDN**](https://portal.qiniu.com/cdn/overview) ,选择 [**统计分析**](https://portal.qiniu.com/cdn/statistics/usage) ,查看「用量统计」,您可以参考近期的流量使用情况,对不同场景/协议下域名的使用量进行估算,选择合适的资源包大小,如下图所示。

* 1:「已选域名」支持一键筛选 HTTP/HTTPS 协议进行统计。
* 2:CDN资源包支持中国大陆使用,您可以在「计费区域」中选择中国大陆进行筛选。
* 3:所选时间范围内,符合筛选条件的域名产生的总流量。
# Q2:如何查看资源包余量? [#q2如何查看资源包余量]
由于七牛目前按量付费资源采取月结算模式,系统每天8点左右将根据用户已使用的用量进行计费,更新一次实时消费明细,即实时消费明细为预估账单和余额预扣除,没有实际完成扣除,所以默认情况下,资源包的余量需要每个月完成月账单出账后更新状态,我们也可以通过下面的方法预估算资源包的使用情况。
`资源包剩余大小 = 历史月账单抵扣后剩余 - 本月消费预抵扣大小`
## 第一步:查看历史月账单抵扣后剩余 [#第一步查看历史月账单抵扣后剩余]
在 **管理控制台** 页面选择 [**财务中心**](https://portal.qiniu.com/financial/overview) ,选择 [**订单管理** - 资源包管理](https://portal.qiniu.com/financial/orders/respack-mgr/current),点击需要查看的资源包「详情」,进入订单详情后,点击「查看用量详情」。

您可以看到上一次月账单结算后资源包的剩余可用量,以及历史月份每次月账单结算后,资源包的抵扣情况。

## 第二步:查看本月消费预抵扣大小 [#第二步查看本月消费预抵扣大小]
注:实时消费明细 每日8点更新,更新用量的使用时间是截止本日0点,非实时动态更新。
在 **管理控制台** 页面选择 [**财务中心**](https://portal.qiniu.com/financial/overview) ,选择 [**实时消费明细**](https://portal.qiniu.com/financial/orders),查看从「上次月账单结算完成后」到「当日0点」的预估账单,参考下图,账单中可以下载「资源包抵扣明细」,抵扣明细中包含本月可用量/当前已用/本月剩余可用等参数。

## 第三步:预估资源包余量 [#第三步预估资源包余量]
以上图中的「国内HTTP全时段静态加速流量100G」资源包为例,第一步获取到历史月账单抵扣后剩余96G,第二步中获取到本月HTTP资源包已经抵扣2GB,那么该资源包的余量为:
资源包剩余大小 = 历史月账单抵扣后剩余 - 本月消费预抵扣大小 = 96GB - 2GB = 94GB
# Q3:资源包可以叠加使用吗?抵扣顺序是什么? [#q3资源包可以叠加使用吗抵扣顺序是什么]
资源包可叠加购买。
相同资源包出账时将按照资源包过期先后顺序依次抵扣,若当过期时间相同时,根据流量产生时段,在日间时段优先抵扣日间时段资源包,在闲时段优先抵扣闲时资源包,最后抵扣全时段流量包。
不同类型的资源包抵扣顺序为:
首先,根据流量的时间判断产生的流量类型为 闲时/日间/全时段 流量,优先抵扣 闲时/日间 流量包,后抵扣 全时段 流量包。
其次,抵扣实名认证用户每月享有的免费流量额度。
然后,根据流量包的下发策略「按月分配不结转/按月分配可结转/一次性分配」,优先抵扣 按月分配不结转资源包,再是 按月分配可结转资源包,最后是 一次性分配资源包。
最后,按照剩余有效期,优先抵扣快过期的资源包。
# Q4:资源包是否可以用于海外CDN加速? [#q4资源包是否可以用于海外cdn加速]
资源包目前仅支持中国大陆范围使用,海外CDN加速暂不支持。
# Q5:使用量超出资源包后如何计费? [#q5使用量超出资源包后如何计费]
在资源包生效期间内,若当月用量超出可用资源包额度,出账时将优先抵扣完资源包额度,超出部分再按照官网 [价格表 - 【CDN】](https://www.qiniu.com/prices)结算。
# Q6:今天8点后购买的资源包,为什么没有进行抵扣? [#q6今天8点后购买的资源包为什么没有进行抵扣]
实时消费明细 每日8点更新,更新用量的使用时间是截止本日0点,非实时动态更新,当月生效的资源包,您可以在购买后第二天,在财务中心查看实时消费明细账单。
# Q7:CDN资源包可以抵扣对象存储的视频资源下载流量吗? [#q7cdn资源包可以抵扣对象存储的视频资源下载流量吗]
1、如果存储空间绑定的是`CDN加速域名,且域名解析配置是CDN加速域名CNAME值`,使用对应CDN域名访问空间资源时,产生的是CDN流量,可以使用CDN资源包抵扣;
2、如果存储空间绑定的是`自定义源站域名,且域名解析配置的是自定义源站域名CNAME值`,使用对应自定义源站域名访问空间资源时,产生的是外网流出流量,无法使用CDN资源包抵扣,需要购买 [对象存储-外网流出流量资源包](https://qmall.qiniu.com/template/MTEy?spec_combo=MzE0NQ\&ref=index) 才可抵扣。

# 未备案域名访问限制 (/faq/cdn/6885-nocpi-domain-access-restrictions)
最近更新时间: 2026-05-08 16:29:54
七牛 CDN 支持为海外业务客户提供加速服务,但对于未备案域名访问有以下限制。
## 国内 ip 无法访问未备案域名 [#国内-ip-无法访问未备案域名]
对于海外未备案域名,七牛 CDN 可提供在纯海外区域(不含中国大陆)的加速访问;但受到相关监管规则限制,目前国内 ip 默认无法访问未备案的海外加速域名。
如果实际业务需要域名可被国内 ip 访问,建议您在[工信部域名信息备案管理系统](http://beian.miit.gov.cn/state/outPortal/loginPortal.action)进行备案,然后重新将域名配置为全球加速。
如有其他配置需求,可联系七牛销售进行申请和业务审核。
## 备案吊销情况说明 [#备案吊销情况说明]
原有已备案的纯海外加速域名如果备案被吊销,七牛将同样禁止国内 ip 访问。因此对于有备案的海外加速域名,强烈建议转为全球加速区域。
# 检测到域名源站发生改变,需重新修改回源鉴权配置 (/faq/cdn/7454-detected-domain-source-station-change-need-to-change-back-to-the-source-authentication-configuration)
最近更新时间: 2026-08-27 16:15:24
# 一、提示“检测到域名源站发生改变,需重新修改回源鉴权配置”原因 [#一提示检测到域名源站发生改变需重新修改回源鉴权配置原因]
当“私有空间”切换为“公开空间”时,『七牛控制台』-『CDN』-『域名管理』-『配置』界面提示“**检测到域名源站发生改变,需重新修改回源鉴权配置**”

# 二、如何去掉这行红字? [#二如何去掉这行红字]
1、找到『回源鉴权』,点击『修改配置』

2、找到『开启』,点击一下,让其变成『关闭』状态

3、点击『确认』,点击之后,域名会自动处理,一般在 15 - 20 分钟内会处理完成

> **如果长时间验证不通过,建议拨打 400-101-8589 转 2 号线,联系技术支持处理。**
# 监测到域名源站在七牛私有 BUCKET,建议打开回源鉴权功能 (/faq/cdn/7455-monitoring-the-source-domain-stood-seven-cows-private-bucket-suggested-that-open-source-authentication-function)
最近更新时间: 2026-08-27 16:15:54
# 一、提示“监测到域名源站在七牛私有 BUCKET,建议打开回源鉴权功能”原因 [#一提示监测到域名源站在七牛私有-bucket建议打开回源鉴权功能原因]
当“公开空间”切换为“私有空间”时,『七牛控制台』-『CDN』-『域名管理』-『配置』界面提示“**监测到域名源站在七牛私有 BUCKET,建议打开回源鉴权功能。**”

# 二、如何去掉这行提示? [#二如何去掉这行提示]
1、找到『回源鉴权』,点击『修改配置』

2、找到『关闭』,点击一下,让其变成『开启』状态

3、点击『确认』,点击之后,域名会自动处理,一般在 15 - 20 分钟内会处理完成

> **如果长时间验证不通过,建议拨打 400-101-8589 转 2 号线,联系技术支持处理。**
# 如何自主切换域名覆盖范围? (/faq/cdn/7456-seven-cattle-console-switch-how-autonomous-domain-coverage)
最近更新时间: 2026-08-27 16:15:01
### **自 2020年10月20日 起,『七牛控制台』-『域名管理』目前已支持用户自主切换域名覆盖区域(中国大陆、全球、海外)** [#自-2020年10月20日-起七牛控制台-域名管理目前已支持用户自主切换域名覆盖区域中国大陆全球海外]
1、在『域名管理』-『配置』界面,点击『修改』按钮

2、选择好“服务区域”后,点击『确认』,点击之后域名会自动处理,一般在 15 - 20 分钟内会处理完成

> **注意**
> 以下两种情况暂不支持『七牛控制台』自主切换:
>
> 1. 对于未备案域名不能从海外加速切换至全球或国内
> 2. 特殊计费方式的域名需要联系技术支持说明情况后,由七牛技术支持操作
> **如果长时间验证不通过,建议拨打 400-101-8589 转 2 号线,联系技术支持处理。**
# 如何查询CDN资源访问量? (/faq/cdn/7457-how-to-query-the-cdn-resource-traffic)
最近更新时间: 2026-04-29 15:09:00
| Q1: 如何查询访问量最大的CDN资源? |
| ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| 可以在 [**七牛控制台 - 访问分析**](https://portal.qiniu.com/cdn/statistics/log/access) 界面查询 top100 资源URL,操作详情参考:[**统计分析**](/products/cdn/data-statistics-fusion) |
| Q2: 如何查询每个资源的访问量和访问次数? |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 查询每个资源的访问量和访问次数,需要您下载CDN日志,根据CDN日志自己统计分析下。
CDN日志下载方式:
1. 在 [**七牛控制台**](/products/cdn/data-statistics-fusion/log-analysis/5-cdn-log-fusion) 下载。
2. 调用 [**API接口**](/products/cdn/10-fusion-api-log-download) 下载。 |
# CDN 下线或冻结域名解析逻辑变更 (/faq/cdn/9268-offline-or-freezing-dns-logical-adjustment)
最近更新时间: 2021-09-23 18:19:58
# 背景 [#背景]
由于近期出现不法分子通过七牛 CNAME 域名传播违规资源的情况,受相关信息监管部门要求,七牛 CDN 将调整用户主动操作下线或欠费冻结后的域名解析逻辑。
# 调整说明 [#调整说明]
2021年10月10日之前,用户主动下线或欠费冻结加速域名后,加速域名会被解析回用户源站。为避免相关合规风险,自2021年10月11日起,**下线或欠费冻结的域名会解析至不可用地址。**
因此,在用户主动下线或欠费冻结之后,将无法通过加速域名访问源站内容。
# 应对方案 [#应对方案]
若希望在域名下线后,可以继续通过加速域名访问源站,可自行修改 DNS 配置,将加速域名的 CNAME 记录指向您的源站即可。

# CDN (/faq/cdn)
## 如何配置域名的 CNAME [#如何配置域名的-cname]
[查看原文](/faq/cdn/4175-how-to-open-the-domain-name-mandatory-https-access)
CNAME的简单介绍,如何在七牛控制台获取 CNAME 解析值,以及如何在域名解析服务商执行 CNAME 解析操作。
## 测试域名使用规范 [#测试域名使用规范]
[查看原文](/products/cdn/the-domain-name-management/0-the-domain-name-to-access)
本文介绍了测试域名的特征和访问限制。
## 刷新缓存的方法 [#刷新缓存的方法]
[查看原文](/faq/cdn/4215-image-storage-refresh-the-cache-method)
提交刷新缓存请求、携带 url 参数刷新和镜像存储刷新缓存的方法和注意事项介绍
## HTTPS 相关问题 FAQ [#https-相关问题-faq]
[查看原文](/faq/cdn/4175-how-to-open-the-domain-name-mandatory-https-access)
HTTP 升级 HTTPS,访问、价格等问题解答
## CDN 节点 IP 的获取方法 [#cdn-节点-ip-的获取方法]
[查看原文](/faq/cdn/4215-image-storage-refresh-the-cache-method)
介绍了获取用户访问到的 CDN 节点 IP 的方法
## 为什么做了 CNAME 解析还是显示请配置 CNAME [#为什么做了-cname-解析还是显示请配置-cname]
[查看原文](/products/cdn/3-cdn-the-alarm-service)
显示 “请配置CNAME” 是域名还没有成功cname解析的状态,本文介绍了cname没有成功解析的几种场景和解决办法。
## 域名配置 FAQ [#域名配置-faq]
[查看原文](/products/cdn/the-domain-name-management/3-the-domain-name-back)
有关域名配置(cname 配置、时间戳防盗链等)的常见问题解答
## 刷新预取 FAQ [#刷新预取-faq]
[查看原文](/products/cdn/2-refresh-the-prefetch-fusion)
刷新,缓存,预取,刷新额度,镜像存储刷新
更多问题请查看 [官网 FAQ](/faq)。
# 内容审核资源包使用方法 (/faq/censor/5702-how-to-check-zyb)
最近更新时间: 2026-05-08 17:16:51
**Q:如何购买内容审核资源包?**
A:购买入口:[https://qmall.qiniu.com/template/MTA5?spec\_combo=MjkzNQ](https://qmall.qiniu.com/template/MTA5?spec_combo=MjkzNQ)
**Q:如何查询内容审核资源包使用情况?**
A:
1.进入财务中心 - 订单列表:[https://portal.qiniu.com/financial/orders/respack-mgr/current](https://portal.qiniu.com/financial/orders/respack-mgr/current)
2.找到对应三鉴资源包,点击详情

3.在右边名目处,点击「xxx资源包」

4.在详情处可查看截止上个月底的已使用量、余量

5.进入财务系统 - 实时消费明细,可查看截止今天本月的资源包抵扣量

6.`总使用量 = 截止上个月底的余量 - 截止今天本月的资源包抵扣量`
比如
截止上个月底的余量 = 45426500张
截止今天本月的资源包抵扣量 = 10615600张
则总使用量 = 45426500 - 10615600 = 34810900张
# 内容审核控制台资源加载失败 (/faq/censor/7178-censor-resource-loading-failure)
最近更新时间: 2020-10-12 17:21:15

内容审核控制台,在复核时资源加载失败,常见问题及解决办法如下:
**1. Chrome 浏览器用户请检查网站安全设置,允许显示混合内容**
Chrome 80 版本开始,会逐渐屏蔽网站的混合内容(https 网站加载 http 的图片视频资源),如果对应的存储空间不能提供 https 的域名,则需要用户手动允许加载混合内容
操作如下:
点击地址栏右边的锁图标 -> 网站设置 -> 权限 -> 不安全内容 -> 设置为允许


**2. 检查存储空间是否有可用域名,并且域名可用**
内容审核控制台将通过存储空间设置的可用域名访问资源,**并且优先使用默认域名**

**3. 请检查对应存储空间中的资源是否存在,已删除的资源将无法显示**
# 内容审核 (/faq/censor)
## 内容审核资源包使用方法 [#内容审核资源包使用方法]
[查看原文](/faq/censor/5702-how-to-check-zyb)
介绍内容审核资源包使用方法
## 内容审核控制台资源加载失败 [#内容审核控制台资源加载失败]
[查看原文](/faq/censor/7178-censor-resource-loading-failure)
内容审核控制台资源加载失败,常见问题及解决办法
更多问题请查看 [官网 FAQ](/faq)。
# 接收对象管理-Webhook:如何获取企业微信机器人 (/faq/console/10490-receptionmanagement-wechat)
最近更新时间: 2022-03-28 18:06:00
**1. 在 PC 版企业微信中找到需要接收消息通知的企业微信群。选中并右键单击企业微信群,在弹框中单击【添加群机器人】。**

**2. 在弹框中单击【新创建一个机器人】,自定义机器人名称,填写完后单击【添加机器人】,即可获取webhook地址。**

# 管理控制台 (/faq/console)
# 全站加速 (/faq/dcdn)
暂无已同步的 FAQ 条目。
更多问题请查看 [官网 FAQ](/faq)。
# 云主机 EVM (/faq/evm)
# 智能多媒体服务常见问题 (/faq/dora/13579-smart-multimedia-services-faq)
最近更新时间: 2026-09-24 14:45:13
# 智能多媒体服务常见问题 [#智能多媒体服务常见问题]
## Q: 七牛云的imageMogr2图片参数304缓存生效时imageMogr2是否计费咨询 [#q-七牛云的imagemogr2图片参数304缓存生效时imagemogr2是否计费咨询]
答:不重复计费的情况,如果请求的图片处理参数完全相同,且访问的CDN节点已缓存了该处理结果,则后续重复访问该节点不会再次计费,直接从缓存返回结果。
# 图片鉴黄服务接口协议 (/faq/dora/1406-image-as-a-yellow-service-interface-protocols)
最近更新时间: 2021-07-21 15:15:54
## 请求 [#请求]
### 请求报文格式 [#请求报文格式]
GET \?nrop HTTP/1.1
Host: \
### 请求头部 [#请求头部]
| 头部名称 | 必填 | 说明 |
| ---- | -- | ------------------------------------------------------------------------------------- |
| Host | 是 | 下载服务器域名,可为七牛三级域名或自定义二级域名,参考[域名绑定](/products/cdn/1-custom-domain-name-binding-process) |
***
## 响应 [#响应]
### 响应报文格式 [#响应报文格式]
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
\{
// ...nrop data...
}
### 响应头部 [#响应头部]
| 头部名称 | 必填 | 说明 |
| ------------- | -- | -------------------------- |
| Content-Type | 是 | MIME类型,固定为application/json |
| Cache-Control | 是 | 缓存控制,固定为no-store,不缓存 |
### 响应内容 [#响应内容]
■ 如果请求成功,返回包含如下内容的JSON字符串(已格式化,便于阅读):
\{
"code": "\",
"message": "\",
"fileList": \[
\{
"rate": \,
"label": \,
"name": "\",
"review": \
}
],
"statistic": \[
\,
...
],
"reviewCount": \,
"nonce": "\",
"timestamp": "\"
}
| 字段名称 | 必填 | 说明 |
| -------------- | -- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `code` | 是 | 处理状态(0:调用成功; 1:授权失败; 2:模型ID错误; 3:没有上传文件; 4:API版本号错误; 5:API版本已弃用; 6:secretId 错误; 7:任务Id错误,您的secretId不能调用该任务; 8:secretId状态异常; 9:尚未上传证书; 100:服务器错误; 101:未知错误) |
| `message` | 是 | 与`code`对应的状态描述信息 |
| `fileList` | 否 | 鉴别的图片文件列表 |
| `rate` | 是 | 介于0-1间的浮点数,表示该图像被识别为某个分类的概率值,概率越高、机器越肯定;您可以根据您的需求确定需要人工复审的界限。 |
| `label` | 是 | 介于0-2间的整数,表示该图像被机器判定为哪个分类,分别对应: 0:色情; 1:性感; 2:正常 |
| `name` | 是 | 鉴别图片文件的文件名 |
| `review` | 是 | 是否需要人工复审该图片 |
| `statistic` | 否 | 图像机器判定结果统计数组,分别对应判定为0-3的数据总量 |
| `callRecordId` | 否 | 调用的唯一标识符,用于后续的人工复审的结果反馈 |
| `APIVersion` | 是 | API的版本 |
| `reviewCount` | 否 | 需要人工复审的图片数量 |
| `nonce` | 是 | 随机数 |
| `timestamp` | 是 | 当前的服务器的Unix时间,UTC格式时间字符串 |
■ 如果请求失败,请参考以上`code`和`message`字段的说明。
## 示例 [#示例]
在Web浏览器中输入以下图片地址:
[http://qiniuphotos.qiniudn.com/gogopher.jpg?nrop](http://qiniuphotos.qiniudn.com/gogopher.jpg?nrop)
返回结果(内容经过格式化以便阅读)
\{
"code": 0,
"message": "succeed.",
"fileList": \[
\{
"rate": 0.9558794498443604,
"label": 2,
"name": "czfh1cATkoExQ\_AMVyg1zw==.resize",
"review": false
}
],
"statistic": \[
0,
0,
1
],
"reviewCount": 0,
"nonce": "0.31666339887306094",
"timestamp": "Wed, 06 May 2015 07:42:27 GMT"
}
**另一种方式安装。**
在左边的“添加资源”中,点击下面的“第三方数据处理” > "图片签黄"。
****
# 智能多媒体服务 (/faq/dora)
## persistent ID 的常见问题 [#persistent-id-的常见问题]
[查看原文](/faq/dora/other-dora/3643-how-to-acquire-persistent-id)
本文介绍了 persistent ID 的概念、获取方法和使用方法
## avthumb参数formats格式及解释 [#avthumb参数formats格式及解释]
[查看原文](/faq/dora/av-processing/1320-avthumb-parameters-formats-format-and-explanation)
格式及解释介绍
## avthumb参数vcodec格式及解释 [#avthumb参数vcodec格式及解释]
[查看原文](/faq/dora/av-processing/1385-avthumb-parameter-vcodec-format-and-explanation)
格式及解释介绍
## 使用七牛进行视频的剪辑 [#使用七牛进行视频的剪辑]
[查看原文](/products/dora/section-cc46gx/3-video-capture01)
视频剪辑
## avthumb参数acodec格式及解释 [#avthumb参数acodec格式及解释]
[查看原文](/faq/dora/av-processing/1432-avthumb-parameter-acodec-format-and-explanation)
格式及解释介绍
## 视频支持格式 [#视频支持格式]
[查看原文](/faq/dora/av-processing/1455-support-video-format)
列表展示
## 视频文字水印支持字体列表 [#视频文字水印支持字体列表]
[查看原文](/faq/dora/other-dora/11230-image-text-watermarking-support-font-list)
本节列出七牛视频文字水印处理支持的所有字体。
## 关于七牛的流媒体队列 [#关于七牛的流媒体队列]
[查看原文](/products/dora/console-guide/3-the-queue)
流媒体队列功能及使用介绍
更多问题请查看 [官网 FAQ](/faq)。
# 关于53端口默认关闭的说明 (/faq/las/12987-las-faq-port-53)
最近更新时间: 2026-05-06 18:11:31
## **概述** [#概述]
53端口为 DNS(Domain Name Server,域名服务器)服务器所开放,主要用于域名解析,通过 DNS 服务器可以实现域名与 IP 地址之间的转换,只要记住域名就可以快速访问网站。
根据《中华人民共和国电信条例》及《电信业务经营许可管理办法》,开展递归解析服务需要相应的增值电信业务经营许可证,即B26-1互联网域名解析服务业务牌照。因此,如您需要使用七牛云全栈应用服务器向公众提供递归解析服务,开通服务器53端口,需要提供相应增值电信业务经营许可证。
## **常见问题** [#常见问题]
### **1. 什么是互联网域名解析服务?** [#1-什么是互联网域名解析服务]
**互联网域名解析**是实现互联网域名和 IP 地址相互对应关系的过程。
**互联网域名解析服务**是指在互联网上通过架设域名解析服务器和相应软件,实现互联网域名和 IP 地址的对应关系转换的服务。域名解析服务包括权威解析服务和递归解析服务两类。
* 权威解析:指为根域名、顶级域名和其他各级域名提供域名解析的服务。
* 递归解析:指通过查询本地缓存或权威解析服务系统实现域名和 IP 地址对应关系的服务。
其中开展递归解析服务需要获得互联网域名解析服务业务的增值电信业务经营许可证。
### **2. 什么是服务器53端口?** [#2-什么是服务器53端口]
53端口为 DNS(Domain Name Server,域名服务器)服务器所开放,主要用于域名解析。七牛云的全栈应用服务器产品,默认会**封禁53端口的入向访问**。
### **3.53端口的入向访问被封禁对我的服务器会有什么影响?** [#353端口的入向访问被封禁对我的服务器会有什么影响]
如您未进行互联网域名解析服务业务,入向访问禁用53端口对您的服务器、业务不会有影响。
### **4.个人能从事互联网域名解析服务业务吗?** [#4个人能从事互联网域名解析服务业务吗]
电信业务经营者需为依法设立的公司,个人不能从事这项业务,您需要以公司的名义办理相应增值电信业务经营许可证,才能开展互联网域名解析服务业务。
### **5.如何办理“B26-1互联网域名解析服务业务”增值电信业务许可证?** [#5如何办理b26-1互联网域名解析服务业务增值电信业务许可证]
具体办理方式可以咨询您主体所在省通信管理局。
### **6.确实需要提供递归解析服务、且已办理好相关牌照,如何操作解除53端口封禁?** [#6确实需要提供递归解析服务且已办理好相关牌照如何操作解除53端口封禁]
您可以通过[**工单**](https://support.qiniu.com/tickets/new-for-person/form?category=%E5%85%B6%E4%BB%96\&space=%E5%85%A8%E6%A0%88%E5%BA%94%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8)联系我司、按要求提交相应材料,通过审核后为您解除53端口封禁。
### **7.不提供递归解析服务,是否可以开通53端口用来提供权威解析服务?** [#7不提供递归解析服务是否可以开通53端口用来提供权威解析服务]
可以,您可以通过[**工单**](https://support.qiniu.com/tickets/new-for-person/form?category=%E5%85%B6%E4%BB%96\&space=%E5%85%A8%E6%A0%88%E5%BA%94%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8)联系我司、按要求提交相应材料,通过审核后为您解除53端口封禁。
### **8.未办理相关许可证开展递归解析服务业务会有什么影响?** [#8未办理相关许可证开展递归解析服务业务会有什么影响]
根据《中华人民共和国电信条例》 第六十九条:(一)违反本条例第七条第三款的规定或者有本条例第五十八条第(一)项所列行为,擅自经营电信业务的,或者超范围经营电信业务的,由国务院信息产业主管部门或者省、自治区、直辖市电信管理机构依据职权责令改正,没收违法所得,处违法所得3倍以上5倍以下罚款;没有违法所得或者违法所得不足5万元的,处10万元以上100万元以下罚款;情节严重的,责令停业整顿。
## **相关政策法规要求** [#相关政策法规要求]
**《电信业务经营许可管理办法》**
第四十六条 违反本办法第十六条第一款、第二十八条第一款规定,擅自经营电信业务或者超范围经营电信业务的,依照《中华人民共和国电信条例》第六十九条规定予以处罚,其中情节严重、给予责令停业整顿处罚的,直接列入电信业务经营失信名单。
**《互联网域名管理办法》**
第三十六条 提供域名解析服务,应当遵守有关法律、法规、标准,具备相应的技术、服务和网络与信息安全保障能力,落实网络与信息安全保障措施,依法记录并留存域名解析日志、维护日志和变更记录,保障解析服务质量和解析系统安全。涉及经营电信业务的,应当依法取得电信业务经营许可。
**《电信业务经营许可管理办法》**
第二十四条 提供接入服务的增值电信业务经营者应当遵守下列规定:(三)不得为未依法取得经营许可证或者履行非经营性互联网信息服务备案手续的单位或者个人提供接入或者代收费等服务。
# ICP 备案相关问题 (/faq/las/12988-las-faq-domain-icp)
最近更新时间: 2026-10-15 11:35:15
## **1、为什么我的网站域名解析到七牛云全栈应用服务器无法访问?** [#1为什么我的网站域名解析到七牛云全栈应用服务器无法访问]
七牛应工信部要求,对未履行备案手续,在中国内地提供非经营性互联网信息服务的网站实行封堵措施。因此您的网站在未备案的情况下将无法在中国内地服务器访问,您可以[联系商务](https://support.qiniu.com/tickets)、协助您完成备案操作。管局审核通过后您的网站便可正常访问。感谢您的支持与理解!
## **2、购买七牛云全栈应用服务器如何完成域名的 ICP 备案?** [#2购买七牛云全栈应用服务器如何完成域名的-icp-备案]
**备案前提条件**
*
**购买时长不少于 1 年的包年包月云主机(包含独立公网 IP)。**
**备案周期**
* 约 20~30 个工作日(自完备资料提交开始计算)
LAS 的 ICP 备案目前还不支持系统提交,请[联系商务](https://support.qiniu.com/tickets)、协助您完成备案操作。
# 资源栈常见问题排查 (/faq/las/13334-faq-rsf-troubleshooting)
最近更新时间: 2026-03-03 13:05:45
# 资源栈常见问题排查指南 [#资源栈常见问题排查指南]
本文档帮助用户排查在控制台使用资源栈(Formation)时遇到的常见问题。
## 受支持的 Terraform Provider 白名单 [#受支持的-terraform-provider-白名单]
以下是当前资源栈支持的 Terraform Provider 列表:
| Provider | Source | 版本 | 用途 |
| --------- | ------------------- | ------ | -------------------------- |
| qiniu | qiniu/qiniu | 1.0.0 | 管理七牛云资源 |
| random | hashicorp/random | 3.8.0 | 生成随机数 |
| time | hashicorp/time | 0.13.1 | 处理时间相关操作 |
| archive | hashicorp/archive | 2.7.1 | 处理压缩文件 |
| cloudinit | hashicorp/cloudinit | 2.3.7 | 生成 cloud-init 配置文件 |
| external | hashicorp/external | 2.3.5 | 执行外部程序并获取其输出 |
| null | hashicorp/null | 3.2.4 | 提供空资源,配合 provisioner 等机制使用 |
| http | hashicorp/http | 3.5.0 | 发起 HTTP 请求 |
| tls | hashicorp/tls | 4.1.0 | 生成和解析 RSA 公私钥、证书等 |
| local | hashicorp/local | 2.5.3 | 操作本地文件和目录 |
| docker | kreuzwerker/docker | 3.6.2 | 管理主机上的 Docker 容器和镜像 |
> **注意**:使用未在白名单中的 Provider 会导致资源栈创建/更新失败。如需支持新的 Provider,可以提交工单申请。
更多信息请参考[七牛 Provider 官方文档](https://github.com/qiniu/terraform-module/tree/main/docs/qiniu-provider)。
***
## 日志及产物的目录结构 [#日志及产物的目录结构]
`` 是资源栈创建时指定的产物存储路径,格式为 `kodo:///<目录>/`。如果创建资源栈时未指定,系统会自动生成并创建对应的 Kodo 空间:
* **自动生成格式**:`kodo://rfs-<8位随机字符>--artifacts/`
* `<8位随机字符>`:由数字和小写字母(`0-9a-z`)随机生成
* ``:RFS 服务所在的区域 ID(如 `cn-east-1`)
* 示例:`kodo://rfs-a3b7f9k2-cn-east-1-artifacts/`
* **空间复用**:同一用户在同一区域的所有资源栈共享同一个自动创建的空间,不会重复创建
* **空间区域**:默认在 LAS 所在区域创建,如果该区域没有 Kodo 服务,会自动选择就近区域
资源栈的执行日志和产物按以下目录结构组织:
```text
/
└── r-/ # 每个 revision 对应一次执行操作
├── logs/
│ ├── terraform-log-.log # Terraform 内部执行日志
│ └── rfsjob-log-.log # RFSJob 执行过程日志
├── apply_results/ # 执行 apply 操作时的产物
│ ├── artifacts/
│ │ └── log.json # Terraform 结构化日志
│ └── content/ # Terraform 实际执行的模块代码
└── plan_results/ # 执行 plan 操作时的产物
├── artifacts/
│ └── log.json # Terraform 结构化日志
└── content/ # Terraform 实际执行的模块代码
```
> **说明**
>
> * `apply_results/` 和 `plan_results/` 分别对应 apply(创建/更新/删除)和 plan(计划)操作的产物,目录内部结构相同。
> * **revision** 是资源栈的版本号,每次执行操作(无论成败)都会生成一个新的 revision 目录用于存储日志;操作成功后,资源栈版本号才会递增。
### 日志文件说明 [#日志文件说明]
| 日志文件 | 内容说明 | 适用场景 |
| --------------------------------------- | ------------------------------------------------------------------------- | --------------------------- |
| `logs/terraform-log-<uuid>.log` | Terraform 自身的内部执行日志 | 排查 Terraform 引擎层面的问题 |
| `logs/rfsjob-log-<uuid>.log` | RFSJob 执行过程日志,包含 Git Clone、tfplan 文件下载、`init → plan → apply` 执行流程、上传对象存储等 | 排查执行流程问题(如 Git 拉取失败) |
| `<操作>_results/artifacts/log.json` | Terraform 执行过程输出的**结构化日志**(`<操作>` 为 `apply` 或 `plan`) | **首选查看**——语法错误、接口调用错误等均记录在此 |
| `<操作>_results/content/` | Terraform 真正执行的模块代码(包含内部自动生成的代码文件) | 查看 Terraform 实际执行的代码内容 |
***
## 常见问题 [#常见问题]
### 1. 创建/更新/删除资源栈失败 [#1-创建更新删除资源栈失败]
**问题现象**:资源栈状态变为 `CreateFailed`(创建失败)、`UpdateFailed`(更新失败)或 `DeleteFailed`(删除失败)。
**可能原因**:
* Terraform 模板语法错误
* Git 仓库拉取失败(地址错误、权限不足、网络不可达等)
* 使用了不受支持的 Terraform Provider(参见[白名单](#受支持的-terraform-provider-白名单))
* 输入变量(Variables)的值不符合类型或约束要求
* 云资源 API 调用失败(资源不足、余额不足、参数非法等)
**排查步骤**:
1. 在资源栈详情页,鼠标移动到**状态说明**,获取初步错误信息
2. 进入 `/r-/` 目录(revision 编号可在资源栈详情页的版本信息中查看),按优先级查看日志:
> **提示**:可在资源栈详情页点击**当前版本**右侧的图标,直接跳转到对象存储的对应目录。
* 查看 `<操作>_results/artifacts/log.json`——包含结构化的错误信息和上下文,能定位大部分问题
* 查看 `logs/rfsjob-log-.log`——排查 Git Clone 失败、执行流程中断等问题
* 查看 `logs/terraform-log-.log`——排查 Terraform 引擎层面的异常
**解决方案**:
1. **修正配置后重新更新**:根据错误信息修正 Terraform 配置,执行"更新"操作重新部署
> **提示**:若界面弹出 `强制重试资源栈` 提示,说明当前错误不可直接重试,必须先修正配置后再操作。
>
>
2. **重试操作**:系统会使用相同配置重新执行 `terraform apply`,适用于偶发错误(网络异常、Git 仓库临时不可用等)
> **注意**:以上排查步骤适用于所有资源栈失败类问题(包括下文中的问题 2、3、4),均可通过查看对应 revision 目录下的日志来定位原因。
### 2. 更新资源栈失败,提示资源在平台外被修改 [#2-更新资源栈失败提示资源在平台外被修改]
**问题现象**:更新资源栈失败,日志中提示检测到资源在平台外发生变更。
**可能原因**:
* 资源栈管理的云资源被通过控制台或 API 直接修改(如手动调整了虚拟机配置)
* 资源栈记录的状态与云资源的实际状态不一致
**解决方案**:
1. 更新时有一个**是否同步资源状态**的选项,选择**同步**重新更新——系统会先同步资源的最新状态,再执行更新操作
2. **建议**:通过资源栈统一管理资源变更,避免直接修改资源栈管理的云资源
### 3. 更新资源栈后部分资源被替换 [#3-更新资源栈后部分资源被替换]
**问题现象**:更新资源栈后,某些资源被删除并重新创建(Replace),而非原地更新(Update)。
**可能原因**:
* 某些资源属性的变更不支持原地更新(in-place update),Terraform 只能通过先创建新资源再删除旧资源(Replace)来完成变更
**解决方案**:
1. **更新前先预览变更**——创建一个 Update 类型的资源栈计划(StackPlan),查看 `resourceChanges` 中 action 为 `Replace` 的资源,确认无误后再应用
2. **注意**:`Replace` 操作会先创建新资源再删除旧资源,可能导致短暂的服务中断。对于有状态的资源(如数据库实例、云盘等),旧资源删除后其存储的数据将**永久丢失且无法恢复**,请务必在操作前完成数据备份
3. 如果不希望资源被替换,请调整 Terraform 配置,避免修改会触发替换的属性(具体哪些属性会触发替换,请参考对应 Provider 的文档说明)
### 4. 应用资源栈计划时提示"需要执行 Refresh" [#4-应用资源栈计划时提示需要执行-refresh]
**问题现象**:应用资源栈计划时提示 `StackNeedRefresh`,查看计划详情时,资源偏移(Resource Drift)列表不为空。
StackNeedRefresh 提示:
资源偏移(Resource Drift)列表示例:
**可能原因**:
* 计划创建后到应用期间,资源在平台外发生了变更
* 系统检测到了资源偏移(Resource Drift)
> **资源偏移**表示系统检测到某些资源在资源栈之外被修改。偏移类型包括:
>
> | 偏移类型 | 说明 |
> | ------ | ------------ |
> | Update | 资源的属性在平台外被更新 |
> | Delete | 资源在平台外被删除 |
**解决方案**:
1. 查看偏移列表,确认哪些资源发生了变更
2. 若变更是预期的,在**是否同步资源状态**的选项中,选择**同步**后应用计划
3. 若变更非预期,先排查是否有人手动修改了云资源
4. 也可以删除当前计划,重新创建新计划(新计划会基于最新状态生成)
5. **建议**:通过资源栈统一管理资源变更,避免在平台外直接操作资源栈管理的资源
# LAS全栈应用服务器常见问题 Q&A (/faq/las/13371-las-refund)
最近更新时间: 2026-08-17 16:31:50
**Q1:全栈应用服务器区域购买错误,可以更换区域吗?**
A:不支持更换区域,您可以参考下面 `全栈应用服务器退款流程` 操作退款后重新购买。
`注意:如果是通过活动购买的特价服务器,退款后将不再享有活动额度,无法继续购买特价服务器。`
***
**Q2:全栈应用服务器退款流程**
A:
1、进入LAS服务器,[实例列表](https://portal.qiniu.com/las/vm/instances);
2、点击更多,可以找到:释放/退订

***
**Q3:全栈应用服务器如何重置登录密码?**
A:
1、 在 [LAS实例管理界面](https://portal.qiniu.com/las/vm/instances) ,先点击 更多,再点击 `重置密码` 按钮进行密码重置

2、输入新密码后,点击 `确定` 后服务器会自动重启。

***
**Q4:全栈应用服务器如何配置安全组?**
A:可以参考下这个文档进行配置:[/products/las/las-security-group/13519-las-security-group-create](/products/las/las-security-group/13519-las-security-group-create)
***
**Q5:全栈应用服务器LAS是否支持IPV6?**
A:目前暂不支持,如需IPV6网络,建议购买 [QVM云主机](/products/qvm/0-qvm-linux-quickstart) 产品。
***
**Q6:全栈应用服务器 LAS 如何扩缩容系统盘?**
A:目前暂不支持,可以通过自定义镜像重新创建实例实现。具体操作步骤可以查看:[基于自定义镜像实现系统盘的扩容/缩容](/products/las/4-instance-disk-upgrade)
***
**Q7:全栈应用服务器LAS海外服务器中国大陆访问慢,或者连接超时?**
A:海外las服务器不推荐中国大陆使用,建议中国大陆服务选择中国大陆服务器。

***
**Q8:全栈应用服务器LAS购买的ip显示地区和服务器不一致,例如购买的是日本区域的,注册地在德国?**
A:是正常现象。比如您看到的IP注册地在德国(法兰克福),但该IP实际发布和路由在您购买的日本区域,服务器的实际部署位置和访问体验不受影响。网络延迟仍基于日本节点,无需担心。
***
**Q9:LAS全栈应用服务器有流量限制么?**
A:没有。
***
**Q10:LAS全栈应用服务器选错系统镜像,如何重置系统?**
`注意:重置系统会清理服务器数据,操作前请做好本地数据备份`
A:
1、进入LAS服务器,[实例列表](https://portal.qiniu.com/las/vm/instances) 先将对应服务器操作关机;
2、关机后,点击更多,可以找到:重置系统 重装系统即可。

**Q11:LAS全栈应用服务器是否支持windows镜像?**
A:目前暂时不支持windows系列镜像。
***
**Q12:全栈应用服务器需要更换ip**
A:全栈应用服务器**不支持**更换ip。
***
**Q13:与LAS服务器一起购买的系统盘可以挂载到另外一个LAS服务器使用吗?**
A:不支持;如果需要挂载磁盘,可以在七牛控制台 - [磁盘](https://portal.qiniu.com/las/vm/disks) 购买与服务器同区域的云盘,然后将其挂载到对应LAS服务器。
***
**Q14:共享IP的全栈应用服务器实例支持更换为独立IP吗?**
A:暂不支持,共享IP实例使用参考 [共享公网IP实例端口分配规则与业务端口开放指南](/faq/las/13426-shared-public-ip-port-allocation-guide) ;如需独立IP实例,建议在 [全栈应用服务器 LAS](https://portal.qiniu.com/las/vm/instances/create) 控制台购买公网访问方式为 `固定IPv4` 的实例。

***
**Q15:全栈应用服务器ssh登录卡顿,服务器内部操作响应慢,如何处理?**
A:如果是海外服务器,在中国大陆区域操作时,出现上述情况,是预期的,建议中国大陆服务选择中国大陆服务器;

如果只是在中国大陆区域管理海外服务器,可以通过七牛控制台的 [web命令行](/products/las/cloud-server/server-login/1-remote-to-linux-instance-via-remote-tool-in-browser) 方式登录管理
B:如果是海外服务器在海外操作或中国大陆服务器在中国大陆操作时,出现上述情况:
1、可以先检查下本地电脑网络情况,看下是不是本地网络不佳导致的?
2、确认本地网络正常后,可以通过七牛控制台的 [web命令行](/products/las/cloud-server/server-login/1-remote-to-linux-instance-via-remote-tool-in-browser) 方式登录服务器内部后,检查下服务器内部进程、cpu和网络带宽占用情况,看下是否是负载跑满或带宽跑满导致的?
```bash
1)、带宽占用情况
A、查看各网卡流量
sudo sar -n DEV 1 5
B、按进程查看带宽占用情况
sudo nethogs <网卡名> # 如 eth0
2)、查看整体负载与CPU使用率
top
说明:在 top 界面中按 Shift + P,按 CPU 使用率降序排列,定位高占用进程(关注 PID 和 COMMAND)
3)、或者使用htop命令查看
A、安装命令
sudo yum install -y htop # CentOS/RHEL
sudo apt install -y htop # Ubuntu/Debian
B、执行命令
htop
说明:按 F6 → 选择 PERCENT_CPU 排序
```
***
**Q16:是否提供测试IP,查看网络延迟情况?**
A:目前没有测试IP,需要测试网络延迟,可以根据自身业务需求购买对应区域低配置的按量付费服务器,再去测试验证
***
# 共享公网IP实例端口分配规则与业务端口开放指南 (/faq/las/13426-shared-public-ip-port-allocation-guide)
最近更新时间: 2026-04-10 15:46:47
## 1. 概述 [#1-概述]
目前只有**新人专享机型**使用共享公网IP实例,通过商城购买的实例为独立IP实例。
共享公网IP实例的公网IP未直接绑定至服务器网卡。因此,端口映射需由系统统一调度管理。本文档旨在帮助用户理解端口分配规则,并规范业务端口开放的操作流程。
## 2. 默认端口策略 [#2-默认端口策略]
| | **共享 IP 实例** | **独立 IP 实例** |
| ------------- | --------------------------------------------------------------------------------------- | -------------------------------- |
| **SSH登录端口** | 特定端口,查看IP:之后的 `<端口>`
登录命令: ssh root\@IP -p 特定端口 | 默认 22端口
登录命令:ssh root\@IP |
| **自定义外网访问端口** | 不支持自定义端口,需在控制台启用端口映射配置。
如将自定义的`8080`端口映射到随机分配的`公网端口`,
使用ip:公网端口访问主机内的8080端口服务 | 无需额外操作,直接ip:8080即可 |
| **公网端口数量限制** | 单实例**最多10个**映射端口 | 无限制 |
| **适用场景** | 轻量业务、测试环境、成本敏感型 | 生产环境、多端口服务、高灵活需求 |
## 3. 公网端口开放教程 [#3-公网端口开放教程]
### 3.1 自助添加端口映射 [#31-自助添加端口映射]
1. 登录[控制台](https://portal.qiniu.com/las/vm/instances),查看需要调整的共享 ip实例。

2. 点击进入端口映射配置界面。

3. 点击“添加映射规则”,在弹窗中填写需要转发的内网端口,然后点击“确定”。

### 3.2 工单申请 [#32-工单申请]
> 适用于超过 10 个映射规则,无法自助完成的情况。
1. 登录控制台,进入【[工单系统](https://support.qiniu.com/tickets/new-for-person/form?category=%E5%85%B6%E4%BB%96\&space=%E5%85%A8%E6%A0%88%E5%BA%94%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8)】
2. 填写申请信息,**务必注明**:
* 需开放的内网端口号(如 `8080`)
* 协议类型(TCP / UDP)
* 业务用途简述(便于审核)
3. 提交后,工单将流转至后台团队处理
4. 配置完成后,系统将通过工单回复告知公网端口号及访问方式
**示例工单内容**
```
【端口开放申请】
实例ID:xxxxxxxx
内网端口:8080
协议类型:TCP
业务说明:部署Web应用,需对外提供HTTP服务
```
# MTU 黑洞导致 Docker 容器网络异常处理 (/faq/las/13489-las-docker-pmtu-black-hole)
最近更新时间: 2026-05-29 10:33:29
标准网络下的虚拟机 MTU 上限通常为 1480,Docker 默认 1500 会导致大包被分片或丢弃。需要把 Docker daemon 与已创建网络的 MTU 都改成 1480。
## 常见现象 [#常见现象]
MTU 不匹配的典型表现是「小包通、大包挂」——三次握手正常,业务数据一上量就异常:
* `curl`、`wget` 拉小页面正常,拉大文件中途 hang 住或长时间无进度
* `apt update` / `apt install`、`yum`、`pip`、`npm` 拉到一半卡住、超时、`Connection reset`
* `git clone` 在 `Receiving objects` 阶段卡死或反复重试
* HTTPS 握手能完成,但加载页面长时间空白;HTTP 请求超时但 `ping` 正常
* 容器之间或容器到外网 SSH 能登录但执行 `ls` 大目录、`scp` 大文件就断
* 数据库连接能建立,但跑大结果集查询超时
## 问题确认 [#问题确认]
虚拟机内执行:
```sh
ip link show eno1 | grep mtu
# 期望看到 mtu 1480
# ip link show en0 | grep mtu # CentOS 系统
ip link show docker0 | grep mtu
# 看到 mtu 1500
```
或者通过容器执行:
```sh
docker run --rm nicolaka/netshoot ping -M do -s 1452 -c 3 8.8.8.8 # 应该通
docker run --rm nicolaka/netshoot ping -M do -s 1453 -c 3 8.8.8.8 # 应该失败:Message too long 或丢包
```
## 处理办法 [#处理办法]
### 1. 修改 Docker daemon 默认 MTU [#1-修改-docker-daemon-默认-mtu]
编辑 `/etc/docker/daemon.json`(不存在则新建):
```bash
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json > /dev/null <<'EOF'
{
"mtu": 1480
}
EOF
```
如果文件已存在其他配置,只需在 JSON 中加入 `"mtu": 1480` 字段,不要整体覆盖。
然后重启 Docker:
```bash
sudo systemctl restart docker
```
确认默认 `bridge` 网络配置:
```bash
docker network inspect bridge | grep -i mtu
# 期望看到 "com.docker.network.driver.mtu": "1480"
```
### 2. 已存在的自定义网络 [#2-已存在的自定义网络]
`daemon.json` 的 `mtu` 只对默认 `bridge` 网络生效。已经用 `docker network create` 创建的网络需要重建,或在创建时显式指定:
```bash
docker network create \
--opt com.docker.network.driver.mtu=1480 \
my-net
```
### 3. docker-compose 场景 [#3-docker-compose-场景]
在 `docker-compose.yml` 中为自定义网络指定 MTU:
```yaml
networks:
default:
driver: bridge
driver_opts:
com.docker.network.driver.mtu: 1480
```
## 验证 MTU 配置 [#验证-mtu-配置]
改完后先确认新容器的网卡 MTU 已生效:
```bash
docker run --rm nicolaka/netshoot ip link show eth0 | grep mtu
# 期望看到 mtu 1480
```
再跑一次不分片边界测试,确认 1480 的包能通过,超过 1480 的包会被拦住:
```bash
docker run --rm nicolaka/netshoot ping -M do -s 1452 -c 3 8.8.8.8
# -s 1452 = 1480 - 20 (IP头) - 8 (ICMP头),应该通
docker run --rm nicolaka/netshoot ping -M do -s 1453 -c 3 8.8.8.8
# -s 1453 会让 IP 包超过 1480,应该失败:Message too long 或丢包
```
# 绍兴地区全栈应用服务器80和443端口开放问题 (/faq/las/13496-las-shaoxing)
最近更新时间: 2026-06-02 15:34:50
绍兴 GPU 服务器的 80、443 端口默认不通、需要备案才能开,如果您需要开启,可以工单提供下这个资料,这边提交材料去做备案。材料没问题,顺利的话1~2周处理完成。
[绍兴联通网站备案所需资料及简单流程](https://dn-odum9helk.qbox.me/Fq1dJBcRX7k-xF-UFHyZL-JO8--8?attname=%E7%BB%8D%E5%85%B4%E8%81%94%E9%80%9A%E7%BD%91%E7%AB%99%E5%A4%87%E6%A1%88%E6%89%80%E9%9C%80%E8%B5%84%E6%96%99%E5%8F%8A%E7%AE%80%E5%8D%95%E6%B5%81%E7%A8%8B.wps)
# 全栈应用服务器 (/faq/las)
## 关于53端口默认关闭的说明 [#关于53端口默认关闭的说明]
[查看原文](/faq/las/12987-las-faq-port-53)
关于53端口关闭的说明
## 未备案域名访问被拦截 [#未备案域名访问被拦截]
[查看原文](/faq/las/12988-las-faq-domain-icp)
未备案域名访问被拦截的说明
## 资源栈常见问题排查 [#资源栈常见问题排查]
[查看原文](/faq/las/13334-faq-rsf-troubleshooting)
介绍资源栈常见问题的排查方法
## LAS全栈应用服务器常见问题 Q\&A [#las全栈应用服务器常见问题-qa]
[查看原文](/faq/las/13371-las-refund)
LAS 全栈应用服务器常见问题问答
## 共享公网IP实例端口分配规则与业务端口开放指南 [#共享公网ip实例端口分配规则与业务端口开放指南]
[查看原文](/faq/las/13426-shared-public-ip-port-allocation-guide)
本文档面向使用共享公网IP实例的用户,系统说明端口分配机制、默认开放策略、端口数量限制及业务端口申请流程。帮助用户理解为何部分端口无法直接访问,并指导完成端口映射配置,保障业务正常对外提供服务。
更多问题请查看 [官网 FAQ](/faq)。
# Miku常见问题FAQ (/faq/mikustream/13500-mikustream-live-record-create-api-httpurl)
最近更新时间: 2026-08-19 11:07:50
| Q1:回放录制httpurl返回的链接的域名不是指定的域名? |
| ------------------------------------------------------------------------------------------------- |
| httpurl返回是默认的,不能修改,所以不建议依赖这个 httpurl 返回的数据,留意参数 fname 即可,然后自行加一段逻辑拼接url,http(s)://自定义域名/fname 即可。 |
| Q2:miku直播推流生成在对象存储中的/recordings目录下的m3u8文件和/fragments目录下的ts文件是否会被自动删除? |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 会自动删除,文件保留时间取决于直播空间您设置的 **`存储过期时间`** ;如果要永久保存,需要您调用 [生成指定时间范围录制文件](/products/mikustream/mikustream-live-recording-api/0-mikustream-live-record-create-api) 接口通过设置 expireDays 参数去修改。 |
| Q3:miku直播空间绑定了域名,但无法拉流,为什么? |
| ---------------------------------------------------------------------------------------------------------------------------------------- |
| 一般是您绑定域名时选择的播放协议与拉流使用的协议不一致导致的,比如您绑定时选择了rtmp协议,拉流时使用了http协议。如果同一个域名需要同时支持rtmp、flv、HLS拉流,绑定域名时选择 **`通用`** 即可。 |
|  |
| Q4:miku直播空间的录制回放域名如何绑定? |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 录制回放域名是绑定在 **`存储空间`** 的,配置操作参考:[设置自定义CDN加速域名](/products/kodo/kodo-console-guide/bucket-management/kodo-domain-name-management/0-set-the-custom-cdn-to-accelerate-the-domain-name) |
| Q5:miku直播使用WHIP协议推流,flv、m3u8格式拉流失败,报500错误,怎么处理? |
| ---------------------------------------------------------------------- |
| WHIP协议推流,只支持使用WHEP低延迟方式拉流,不支持flv、m3u8拉流导致的。如需使用flv、m3u8拉流,请使用rtmp协议推流。 |
# Miku 快直播 (/faq/mikustream)
暂无已同步的 FAQ 条目。
更多问题请查看 [官网 FAQ](/faq)。
# 如何对空间内的文件进行多媒体处理 (/faq/kodo/12875-dora-kodo)
最近更新时间: 2026-08-07 11:48:43
## 一、创建多媒体任务 [#一创建多媒体任务]
### 1、创建转码需要使用的队列,可以点击这个链接进行创建:[队列](https://portal.qiniu.com/dora/media-gate/pipeline) [#1创建转码需要使用的队列可以点击这个链接进行创建队列]

### 2、在[空间管理](https://portal.qiniu.com/kodo/bucket)进入对应文件存储的空间 [#2在空间管理进入对应文件存储的空间]

### 3、创建转码需要使用的工作流模板,点击【工作流模板】,点击【新建工作流】 [#3创建转码需要使用的工作流模板点击工作流模板点击新建工作流]

### 进行工作流创建,点击红框内的“+”,添加对应的转码命令,再次点击“+”可以设置输出信息 [#进行工作流创建点击红框内的添加对应的转码命令再次点击可以设置输出信息]


### 4、点击【任务与工作流】下的【任务管理】 [#4点击任务与工作流下的任务管理]

### 5、点击【创建任务】 [#5点击创建任务]

### 6、选择对应的文件,工作流,队列,进行转码提交 [#6选择对应的文件工作流队列进行转码提交]

## 二、创建任务触发器(上传自动触发转码) [#二创建任务触发器上传自动触发转码]
### 1、参考上面的流程1-3创建好工作流模版 [#1参考上面的流程1-3创建好工作流模版]
### 2、点击【任务触发器】,并点击【新建任务触发器】 [#2点击任务触发器并点击新建任务触发器]

### 3、设置好需要触发的工作流,根据需要处理的文件设置好【规则策略】,跟进需要处理的文件类型(视频、图片等)设置好【输入过滤源】,上传自动触发转码一定要开启【强制执行数据处理】 [#3设置好需要触发的工作流根据需要处理的文件设置好规则策略跟进需要处理的文件类型视频图片等设置好输入过滤源上传自动触发转码一定要开启强制执行数据处理]

# 对象存储常见问题FAQ (/faq/kodo/13086-kodo-problem-faq)
最近更新时间: 2026-08-07 11:48:43
# **1. 为什么现在不支持创建文件夹或目录了?** [#1-为什么现在不支持创建文件夹或目录了]
【对象存储控制台】-【文件管理】界面支持【显示目录】或【隐藏目录】方式展示文件列表,可以在 文件管理 界面自主切换展示方式。文件管理操作说明文档:[/products/kodo/kodo-console-guide/file-management](/products/kodo/kodo-console-guide/file-management)
### **1) 切换为【显示目录】操作如下图,切换后可以在控制台创建文件夹或目录** [#1-切换为显示目录操作如下图切换后可以在控制台创建文件夹或目录]
### **2) 切换为【隐藏目录】操作如下图,切换后无法在控制台创建文件夹或目录** [#2-切换为隐藏目录操作如下图切换后无法在控制台创建文件夹或目录]
# **2. 如何把对象存储空间的部分文件或所有文件打包成一个压缩包?** [#2-如何把对象存储空间的部分文件或所有文件打包成一个压缩包]
可以使用 [多文件压缩(mkzip)](/products/dora/file-processing/4-mkzip) 接口对存储空间的资源进行打包压缩。
### **1) 接口调用示例如下** [#1-接口调用示例如下]
go SDK调用示例:[https://github.com/qiniu/go-sdk/blob/master/examples/video\_pfop.go](https://github.com/qiniu/go-sdk/blob/master/examples/video_pfop.go)
Nodejs SDK调用示例:[https://github.com/qiniu/nodejs-sdk/blob/master/examples/video\_pfop.js](https://github.com/qiniu/nodejs-sdk/blob/master/examples/video_pfop.js)
ruby SDK调用示例:[https://github.com/qiniu/ruby-sdk/blob/develop/examples/pfop\_watermark.rb](https://github.com/qiniu/ruby-sdk/blob/develop/examples/pfop_watermark.rb)
python SDK调用示例:[https://github.com/qiniu/python-sdk/blob/master/examples/pfop\_watermark.py](https://github.com/qiniu/python-sdk/blob/master/examples/pfop_watermark.py)
php SDK调用示例:[https://github.com/qiniu/php-sdk/blob/master/examples/pfop\_mkzip.php](https://github.com/qiniu/php-sdk/blob/master/examples/pfop_mkzip.php)
java SDK调用示例:[https://github.com/qiniu/java-sdk/blob/master/examples/pfop\_watermark.java](https://github.com/qiniu/java-sdk/blob/master/examples/pfop_watermark.java)
### **2) 注意:** [#2-注意]
上述示例只展示了异步pfop接口调用方式,示例代码中的处理命令需要参考 [多文件压缩(mkzip)](/products/dora/file-processing/4-mkzip) 文档说明自行调整修改。
# **3. 如何把静态文件迁移到其他云平台友商?** [#3-如何把静态文件迁移到其他云平台友商]
您好,这个我们这边暂时只有其他友商迁移到我们这边的方案:[数据迁移](/products/kodo/data-migration)
您这边可以将文件url拿到其他云平台友商的服务器下载一下看下或者友商侧寻找迁移文档。
# **4. 文件已经删除,但还是存在很多恶意流量,如何清除缓存?** [#4-文件已经删除但还是存在很多恶意流量如何清除缓存]
可以在存储侧或者CDN侧操作刷新缓存
1,存储刷新缓存的方法参考:[/products/kodo/kodo-console-guide/file-management/15-refresh-the-cdn-cache](/products/kodo/kodo-console-guide/file-management/15-refresh-the-cdn-cache)
2,CDN刷新缓存方法请参考:[/faq/cdn/refresh-the-cache-problem/1325-refresh-the-cache-and-the-effect-of-time](/faq/cdn/refresh-the-cache-problem/1325-refresh-the-cache-and-the-effect-of-time)
方法1: portal.qiniu.com 控制台刷新缓存,点击左侧 cdn => 刷新预取
方法2: api 接口地址:[https://developer.qiniu.com/fusion/api/1229/cache-refresh](https://developer.qiniu.com/fusion/api/1229/cache-refresh)
Tip : url 刷新,全网生效 10min 左右,目录刷新需要 30min 左右
# **5. 为什么外链域名无法选择?** [#5-为什么外链域名无法选择]
是因为您的存储空间未绑定自定义域名导致,需要您参考[文档](/products/kodo/kodo-console-guide/bucket-management/kodo-domain-name-management) 绑定自己的域名,然后才可以选择对应的外链域名进行访问下载。
# 密钥安全使用须知 (/faq/kodo/1334-the-access-key-secret-key-encryption-key-safe-use-instructions)
最近更新时间: 2026-08-07 11:48:43
# 安全机制 [#安全机制]
数据安全性是云存储服务的重中之重。云存储的安全机制主要需要考虑以下几个因素:
* 如何判断该请求方是否合法,且对目标空间有相应的访问权限。
* 因为服务的访问协议同时支持HTTP和HTTPS,服务端需要判断收到的请求是否经过篡改。
* 相比上传新资源,覆盖文件或删除已有资源拥有更高的风险。因此对上传或修改动作,需要确认请求方是否拥有修改或删除的权限。
在使用七牛云存储服务的过程中,需要考虑安全机制的场景主要有如下几种:
* 上传资源
* 访问资源
* 管理和修改资源
这三个场景需要考虑不同的安全因素,因此七牛针对性的提供了三种安全机制:[上传凭证](/faq/kodo/1334-the-access-key-secret-key-encryption-key-safe-use-instructions)、[下载凭证](/faq/kodo/1334-the-access-key-secret-key-encryption-key-safe-use-instructions)和[管理凭证](/faq/kodo/1334-the-access-key-secret-key-encryption-key-safe-use-instructions)。
因为凭证的生成需要用到[SecretKey](/faq/kodo/1334-the-access-key-secret-key-encryption-key-safe-use-instructions#aksk),因此该生成动作不应在不受信任的环境中进行。需要注意的是,开发者绝不能将密钥包含在分发给最终用户的程序中,无论是包含在配置文件中还是二进制文件中都会带来非常大的密钥泄漏风险。
SecretKey可在下面这地方获取:

# 密钥 [#密钥]
密钥(AccessKey/SecretKey)用于以上几种凭证的生成。以 SecretKey 为参数,配合适当的签名算法,可以得到原始信息的数字签名,防止内容在传递过程中被伪造或篡改。
密钥通常为成对创建和使用,包含一个AccessKey和一个SecretKey。其中AccessKey会在传输中包含,而用户必须保管好SecretKey不在网络上传输以防止被窃取。若SecretKey被恶意第三方窃取,可能导致非常严重的数据泄漏风险。因此,如发现SecretKey被非法使用,管理员应第一时间在[七牛开发者平台](https://portal.qiniu.com/)上更换密钥。
在具体描述各种凭证的详细生成过程中我们会看到AccessKey和SecretKey是如何被使用的。
**凭证的详细生成** 跳转链接: [/faq/kodo/1334-the-access-key-secret-key-encryption-key-safe-use-instructions](/faq/kodo/1334-the-access-key-secret-key-encryption-key-safe-use-instructions)
# 使用场景 [#使用场景]
七牛推荐客户将 AccessKey和一个SecretKey 放在服务端,由服务端生成令牌后颁发给客户端使用。
比如,上传文件的时候:
1. 业务服务器的服务端生成上传令牌(UploadToken)
2. 客户端程序(iOS、Android 以及 Web)拿到这个上传令牌之后就可以直接将文件上传到七牛
# 错误案例 [#错误案例]
把 AK/SK 放在客户端 SDK 中来做签名生成令牌,随 App 被发布出去。
这样做会被人家反编译之后拿到 AK/SK,之后他们就可以对你的账号进行操作。
实际上 Web 端 js 也是可以做签名的,只是你不可能把明文的 AK/SK 放在 Web 端,这样做更加危险。
将 AK/SK 加密后存放在客户端,等用户启动应用的时候再将 AK/SK 解密出来放在内存中,关闭应用后这对 AK/SK 即消失。
这样的做法也是不科学的,因为你的 AK/SK 在 后台 随时可以更改,特别是在被泄漏之后建议使用一对新的 AK/SK。如果你写死在 App 中将其发布,就只能通过发布新版本的 App 来更新这对 AK/SK。
# 最后建议 [#最后建议]
出于安全考虑,建议您根据自己的场景周期性地更换密钥。
# 对象存储空间同时绑定cdn域名和源站域名 (/faq/kodo/13495-kodo-cdn--domain-name)
最近更新时间: 2026-08-07 11:48:43
对象存储空间可以绑定[cdn域名](/products/cdn/0-fusion-quick-start)和[源站域名](/products/kodo/kodo-console-guide/bucket-management/kodo-domain-name-management/1-set-the-custom-source-domain-name),如果是使用同一个域名,建议**二者选其一**。
如果同一个域名同时绑定cdn和源站域名,可能会出现以下问题:
1、cname解析冲突,一个域名同时只能有一个解析生效,域名购买厂商可能无法重复添加两次cname解析,能够添加,同时也只有一个解析生效;
2、cdn域名和源站域名收费不同,cdn域名访问会产生cdn流量+cdn回源流量,源站域名会产生外网流出流量;
3、cdn域名和源站域名支持一些配置,如果配置错地方,可能导致配置不生效,比如域名是进行cdn域名解析,但是https是配置在源站域名这边,https会无法正常访问等
# 批量转换存储类型 (/faq/kodo/13502-batch-types)
最近更新时间: 2026-08-07 11:48:43
# 批量转换存储类型 [#批量转换存储类型]
您这边可以使用qhsell工具进行批量转存储类型的
###### 1:下载qshell工具 [#1下载qshell工具]
qshell工具:[/products/kodo/0-qshell#9](/products/kodo/0-qshell#9)
###### 2:通过listbucket2命令进行列举需要转换类型的文件,可根据时间、后缀等条件进行列举,列举后保存到本地txt文件下 [#2通过listbucket2命令进行列举需要转换类型的文件可根据时间后缀等条件进行列举列举后保存到本地txt文件下]
listbucket2命令:[https://github.com/qiniu/qshell/blob/master/docs/listbucket2.md](https://github.com/qiniu/qshell/blob/master/docs/listbucket2.md)
###### 3:通过第二步列举出来的txt文件进行batchchtype批量转换命令进行转换即可,具体命令参数参考下列文档(注意:归档与深度归档类型文件需要先解冻后才能操作转换,解冻命令参考4) [#3通过第二步列举出来的txt文件进行batchchtype批量转换命令进行转换即可具体命令参数参考下列文档注意归档与深度归档类型文件需要先解冻后才能操作转换解冻命令参考4]
batchchtype命令:[https://github.com/qiniu/qshell/blob/master/docs/batchchtype.md](https://github.com/qiniu/qshell/blob/master/docs/batchchtype.md)
###### 4:如果是归档与深度归档类型文件需要先解冻的文件,需要通过第二步列举出来的txt文件,先进行解冻,解冻后再执行第三步即可 [#4如果是归档与深度归档类型文件需要先解冻的文件需要通过第二步列举出来的txt文件先进行解冻解冻后再执行第三步即可]
batchrestorear命令:[http://github.com/qiniu/qshell/blob/master/docs/batchrestorear.md](http://github.com/qiniu/qshell/blob/master/docs/batchrestorear.md)
# 视频教程 - 图片样式 (/faq/kodo/1395-video-tutorials-pictures-style)
最近更新时间: 2019-01-04 17:50:46
图片样式处理
[http://dn-odum9helk.qbox.me/spjc/4.mp4](http://dn-odum9helk.qbox.me/spjc/4.mp4)
# 视频教程 - wp插件配置 (/faq/kodo/1397-wp-plugin-video-tutorial)
最近更新时间: 2019-01-07 17:08:15
wp 插件如何配置
[WP插件配置视频教程](http://dn-odum9helk.qbox.me/wjw/spjc/6.mp4)
# 视频教程 - 镜像加速 (/faq/kodo/1686-video-tutorials-image-acceleration)
最近更新时间: 2019-01-07 17:04:27
镜像加速
七牛只支持静态加速,建议登录等操作不要放在七牛
[镜像加速视频](http://dn-odum9helk.qbox.me/wjw/spjc/mirror-src.mp4)
# 批量获取下载外链的方法 (/faq/kodo/4072-batch-obtains-download-chain-method)
最近更新时间: 2026-08-07 11:48:43
**批量获取文件外链,用三种方式进行获取**
## 七牛提供如下解决方案: [#七牛提供如下解决方案]
* 使用[qshell](/products/kodo/0-qshell)的[listbucket2](https://github.com/qiniu/qshell/blob/master/docs/listbucket2.md)功能,先基于需求,抽取文件列表,然后对文件列表进行拼接,七牛的链接默认是 [http://空间域名/文件名的格式](http://空间域名/文件名的格式) ,如果是私有空间的链接,那么还需要在此基础上,额外调用 qshell的batchsign才可以
* 使用[kodo-browser](/products/kodo/1-kodo-browser)直接导出外链
* 使用[官方服务端SDK](/sdk-tools/sdk#official-sdk)已经封装集成的list接口,先去获取文件列表,然后再去拼接访问链接,如果私有空间,还需要额外调用生成私有链接方法,`不推荐使用`
### qshell获取列表 [#qshell获取列表]
`使用listbucket2前,必须先登录账号`,使用qshell account 进行登录,如果已经登陆过,那么无需重复登录。ak sk 空间名称如果不了解是什么,可以阅读[常见的关键参数](/faq/kodo/7450-the-third-party-plug-in-key-parameters)
1. 登录,抽取文件列表
```bash
qshell account 您的ak 您的sk 空间名称
qshell listbucket2 空间名称 --show-fields Key -o fileList.txt
```
2. 过滤出第一列的 key ,并拼接域名。实现方法有很多,下面介绍一种:
在 linux 或 macOS 终端,执行如下命令:
```
cat fileList.txt | awk -F ' ' ' {print "http://空间域名/"$1}' > urlList.txt
```
urlList.txt 的输出结果:
```
http://空间域名/hello.jpg
http://空间域名/hello.mp4
http://空间域名/hhh
http://空间域名/jemygraw.jpg
```
### 使用经验 [#使用经验]
* windows 也可以安装 awk 和 cat 工具,具体可以百度下,和qshell一样,awk 和 cat 也是通用的脚本命令行工具
* 由于qshell是一个脚本命令行工具,所以需要在cmd或者终端中运行,mac与linux系统会经常使用到终端,下载合适版本到本地解压,直接chmod +x qshell 即可执行命令行。
`但是如果您需要使用windows操作系统的话,可能您对cmd不是那么熟悉,强列推荐参考这里`
[**windows环境下安装qshell教程**](/faq/kodo/tools-common-problems/12960-windows-environment-installation-qshell-tutorial#2)
# 301重定向策略 (/faq/kodo/4117-301-redirect-strategy)
最近更新时间: 2026-08-07 11:48:43
七牛的存储源站设置了301重定向的策略,当访问的资源不存在,七牛源站会执行301重定向策略,尝试去掉文件名前缀的多出的 "/" 来获取资源,保证访问的稳定性。
例子:
假设存储空间中有 a.jpg ,访问 [http://url/a.jpg](http://url/a.jpg) 属于正常情况。如果访问 [http://url//a.jpg](http://url//a.jpg) ,七牛存储源站会先查找 /a.jpg ,如果不存在 /a.jpg ,七牛源站就会尝试查找 a.jpg 。如果存在,就返回给客户端;如果不存在就返回 Document not found。
**注意**:
1:如果存储空间设置了镜像存储,如果七牛源站查找 /a.jpg 不存在,会先去镜像源查找 /a.jpg 。如果镜像源存在资源,将资源同步到七牛,并且f返回到客户端;如果不存在,再执行七牛源站的 301 重定向策略。
2:如果存储空间存在 /a.jpg 资源,访问 [http://url/a.jpg](http://url/a.jpg) 不会重定向到 [http://url//a.jpg。](http://url//a.jpg。)
# python 异步 fetch demo (/faq/kodo/5710-python-asyncfetch-the-demo)
最近更新时间: 2026-08-07 11:48:43
python2 版本
```
# -*- coding: utf-8 -*-
# flake8: noqa
import requests
import json
import hmac
from hashlib import sha1
from base64 import urlsafe_b64encode
from urlparse import urlparse
"""
1. 该demo 是基于 python2.7 的
2. 客户需要依赖 requests 库,需要 install
3. 客户需要填写如下参数
a. 抓取到七牛空间的 URL
b. 抓取后保存到七牛空间的 key
c. 抓取的目标 bucket
d. 回调的 URL(必填项可以写一个无效 404 的地址)
e. 回调的 body(这个如果没有的话也可以写空串)
4. sohuvideo 是华东空间,zone 是 z0;sohumedia 是华北空间,zone 是 z1
"""
access_key = '...'
secret_key = '...'
def urlsafe_base64_encode(data):
"""urlsafe的base64编码:
对提供的数据进行urlsafe的base64编码。规格参考:
[/products/kodo/development-guidelines/0-appendix#1](/products/kodo/development-guidelines/0-appendix#1)
Args:
data: 待编码的数据,一般为字符串
Returns:
编码后的字符串
"""
ret = urlsafe_b64encode(bytes(data))
return bytes(ret)
def __token(data):
data = bytes(data)
hashed = hmac.new(bytes(secret_key), data, sha1)
return urlsafe_base64_encode(hashed.digest())
def token_of_request(url, body=None, content_type=None):
"""带请求体的签名(本质上是管理凭证的签名)
Args:
url: 待签名请求的url
body: 待签名请求的body
content_type: 待签名请求的body的Content-Type
Returns:
管理凭证
"""
parsed_url = urlparse(url)
query = parsed_url.query
path = parsed_url.path
data = path
if query != '':
data = ''.join([data, '?', query])
data = ''.join([data, "\n"])
if body:
mimes = [
'application/json'
]
if content_type in mimes:
data += body
return '{0}:{1}'.format(access_key, __token(data))
bucket_name = 'bucket_name'
fetch_url = 'http://xxx.abc.com/123.kpg'
key = '123.jpg'
callbackurl = 'https://xxx.xxx.cn/callback'
callbackbody = '$(bucket)'
# z0为华东存储区域,z1为华北存储区域,z2为华南存储区域,na0为北美存储区域
zone = 'z0'
token = token_of_request("http://api-{}.qiniu.com/sisyphus/fetch".format(zone))
url = 'http://api-{}.qiniu.com/sisyphus/fetch'.format(zone)
s = json.dumps({'bucket': bucket_name, 'url': fetch_url,
'key': key, 'callbackurl': callbackurl,
'callbackbody': callbackbody})
headers = {"Authorization": "QBox {}".format(token)}
r = requests.post(url, data=s, headers=headers)
print(r.headers)
print(r.status_code)
print(r.content)
print("finished")
```
python3版本
```
# -*- coding: utf-8 -*-
import requests
import json
import hmac
from hashlib import sha1
from base64 import urlsafe_b64encode
from urllib.parse import urlparse
access_key = '...'
secret_key = '...'
def urlsafe_base64_encode(data):
"""urlsafe的base64编码:
对提供的数据进行urlsafe的base64编码。规格参考:
[/products/kodo/development-guidelines/0-appendix#1](/products/kodo/development-guidelines/0-appendix#1)
Args:
data: 待编码的数据,一般为字符串
Returns:
编码后的字符串
"""
ret = urlsafe_b64encode(b(data))
return s(ret)
def s(data):
if isinstance(data, bytes):
data = data.decode('utf-8')
return data
def b(data):
if isinstance(data, str):
return data.encode('utf-8')
return data
def __token(data):
data = b(data)
hashed = hmac.new(b(secret_key), data, sha1)
return urlsafe_base64_encode(hashed.digest())
def token_of_request(url, body=None, content_type=None):
"""带请求体的签名(本质上是管理凭证的签名)
Args:
url: 待签名请求的url
body: 待签名请求的body
content_type: 待签名请求的body的Content-Type
Returns:
管理凭证
"""
parsed_url = urlparse(url)
query = parsed_url.query
path = parsed_url.path
data = path
if query != '':
data = ''.join([data, '?', query])
data = ''.join([data, "\n"])
if body:
mimes = [
'application/x-www-form-urlencoded'
]
if content_type in mimes:
data += body
return '{0}:{1}'.format(access_key, __token(data))
bucket_name = ''
fetch_url = 'http://xxx.xxx.com/123.jpg'
key = '123.jpg'
callbackurl = 'https://xxx.xxx.com/callback'
callbackbody = '$(bucket)'
callbackbodytype = None
file_type = None
md5 = None
# z0为华东存储区域,z1为华北存储区域,z2为华南存储区域,na0为北美存储区域
zone = 'z0'
token = token_of_request("http://api-{}.qiniu.com/sisyphus/fetch".format(zone))
url = 'http://api-{}.qiniu.com/sisyphus/fetch'.format(zone)
s = json.dumps({'bucket': bucket_name, 'url': fetch_url,
'key': key, 'callbackurl': callbackurl,
'callbackbody': callbackbody})
headers = {"Authorization": "QBox {}".format(token)}
r = requests.post(url, data=s, headers=headers)
print(r.headers)
print(r.content)
print(r.status_code)
print("finished")
```
# 存储上传下载域名 (/faq/kodo/5869-store-uploads-and-downloads-the-domain-name)
最近更新时间: 2026-08-07 11:48:43
参考文档[存储区域](/products/kodo/2-region-endpoint-fq)
# 常见的关键参数 (/faq/kodo/7450-the-third-party-plug-in-key-parameters)
最近更新时间: 2026-08-07 11:48:43
# 什么是 AccessKey/SecretKey ? [#什么是-accesskeysecretkey-]
`AccessKey/SecretKey`:是管理账号的一对密钥,您可以在【控制台】--【个人中心】--【密钥管理】查看。
或者您也可以访问链接查看您账号的`AccessKey/SecretKey`:[https://portal.qiniu.com/user/key](https://portal.qiniu.com/user/key)


# 什么是 Bucket ? [#什么是-bucket-]
`Bucket`:是您在七牛创建的存储空间的名称,您可以在【控制台】--【对象存储】--【空间管理】--【空间名称】进行查看。
或者您也可以访问链接查看:[https://portal.qiniu.com/kodo/bucket](https://portal.qiniu.com/kodo/bucket)

# 什么是 Domain/Url ? [#什么是-domainurl-]
`Domain`:是您存储空间绑定的域名,有些对接插件使用的`Url`,假如`domain` 是`a.com`,那么`url`就是 `http://a.com/`
您可以在【控制台】--【对象存储】--【空间管理】--【域名】,查看存储绑定的域名。


# 如何创建存储空间 [#如何创建存储空间]
创建存储空间参考[文档](/products/kodo/0-console-quickstart#step1)
**创建步骤**
您可以在【控制台】--【对象存储】--【空间管理】进行空间的创建。
或者您也可以访问链接进行创建:[https://portal.qiniu.com/kodo/bucket](https://portal.qiniu.com/kodo/bucket)

# 如何绑定自定义域名 [#如何绑定自定义域名]
绑定自定义域名参考[文档](/products/cdn/the-domain-name-management/0-the-domain-name-to-access)
**绑定步骤**
1.添加自定义域名
您可以在【控制台】--【CDN】--【域名管理】,点击【添加域名】进行域名绑定
或者您也可以访问链接进行绑定:[https://portal.qiniu.com/cdn/domain](https://portal.qiniu.com/cdn/domain)


2.在源站配置这里选择对应的存储空间进行绑定

3.CNAME解析配置
域名绑定好后,需要在域名厂商进行cname解析的配置,点击【如何配置CNAME】,可以查看具体配置的参考文档。

点击【复制CNAME】,可以复制域名cname解析的记录值,复制好记录值,可以去域名厂商进行配置。

点击【解析】,解析类型选择cname,主机记录为:cdn,记录值:就是在七牛控制台复制过来的数值,粘贴就好了,点【保存】。


4.解析添加完成后,进行验证
Windows系统可以通过Win+R 或 点击左下角的【开始】按钮打开【开始】菜单,打开【运行】,输入cmd回车。 在命令行模式下输入nslookup 您的加速域名,例如 nslookup cdn.qingxiaoyu.vip,在结果中可以看到您复制的cname值即可。

MAC和Linux系统您可以通过如图所示的命令 dig 您的加速域名 查看,例如 dig cdn.qingxiaoyu.vip,第一条是否解析到您配置的CNAME值。

# 对象存储 (/faq/kodo)
## 如何获取存储文件的外链接 [#如何获取存储文件的外链接]
[查看原文](/faq/kodo/basic-use-of/access-to-resources-common-problems/1321-how-to-acquire-the-outside-storage-file-links)
本文主要说明了针对公开空间和私有空间的访问方法。
## 七牛云上传下载操作指南 [#七牛云上传下载操作指南]
[查看原文](/products/kodo/rs/8-upload)
本文介绍如何上传文件到七牛云,以及下载文件的两种方式。
## 如何上传base64编码图片到七牛云 [#如何上传base64编码图片到七牛云]
[查看原文](/products/kodo/rs/shard-to-upload)
base64 编码图片的上传接口,以及 js, java 的上传示例代码
## 七牛镜像存储使用手册 [#七牛镜像存储使用手册]
[查看原文](/faq/kodo/image-storage-common-problems/1376-seven-cattle-image-storage-instruction-manuals)
镜像存储的业务模型、配置步骤及常见问题介绍
## 上传慢、上传失败等常见FAQ [#上传慢上传失败等常见faq]
[查看原文](/faq/kodo/13086-kodo-problem-faq)
对于上传慢、上传失败等上传常见问题的处理方法
## 空间属性maxAge实现对缓存控制 [#空间属性maxage实现对缓存控制]
[查看原文](/products/kodo/kodo-console-guide/bucket-management/space-settings/1-settings-file-the-client-cache)
通过配置 maxAge 实现在规定的时效内使客户端缓存更新的效果
## 什么是样式以及样式分隔符? [#什么是样式以及样式分隔符]
[查看原文](/products/kodo/development-guidelines/dev-the-data-processing/1-dev-the-picture-style)
样式、样式分隔符的含义及使用方法
## 什么是原图保护? [#什么是原图保护]
[查看原文](/products/kodo/kodo-console-guide/bucket-management/the-data-processing/media-styles/1-set-the-original-protection)
对象存储原图保护功能相关的常见问题
更多问题请查看 [官网 FAQ](/faq)。
# 负载均衡常见问题 (/faq/qvm/5144-the-common-problems-in-load-balancing)
最近更新时间: 2020-08-13 17:54:46
# 问题:负载均衡均衡的是什么? [#问题负载均衡均衡的是什么]
负载均衡是按特定调度算法把流量分发到后端服务器上,其中:
* 四层(TCP 和 UDP)是基于连接做流量调度。TCP 和 UDP 创建一个 socket 访问负载均衡实例,这个源和目的 IP 和端口就是一个连接。
* 七层(HTTP/HTTPS)是基于请求做调度。比如 http get 请求访问一个页面。
# 问题:为什么请求不均衡? [#问题为什么请求不均衡]
负载均衡请求不均衡的原因可能有以下几种:
* 开启了会话保持功能
配置了会话保持,当访问负载均衡实例的客户端又很少时,容易导致不均衡,尤其在使用少量客户端对负载均衡进行测试的时候。比如 TCP 监听,开启了会话保持(四层是基于来源地址做会话保持),使用一台客户端对负载均衡实例进行压测,就会导致不均衡。
* 健康检查异常
后端服务器的健康建状态异常会导致不均衡,尤其在压测的时候容易忽略后端服务器的健康检查状态,如果有后端服务器健康检查失败或者健康检查状态经常跳跃会导致不均衡。
* TCP Keepalive 保持长连接
后端服务器有些开启了 TCP Keepalive 保持长连接,有些没有开启,则连接会在保持长连接的后端服务器上堆积,造成不均衡。
排查和解决方法:
* 查看各台后端服务器的权重是否相同
* 在相关时间段内是否有健康检查失败或波动现象,查找波动的原因;或者健康检查没有配置正确的响应码2xx,3xx导致了健康检查显示正常,但后端服务有异常
* 是否同时使用了加权最小连接数(WLC)调度方式和会话保持,如果是,尝试改为加权加权轮询(WRR)算法和会话保持。
# 问题:负载均衡各监听连接超时时间是多少? [#问题负载均衡各监听连接超时时间是多少]
| 监听 | 超时时间 |
| -------- | ----- |
| TCP 监听 | 900 秒 |
| UDP 监听 | 90 秒 |
| HTTP 监听 | 60 秒 |
| HTTPS 监听 | 60 秒 |
# 迁移工具常见问题 (/faq/qvm/5145-the-common-problems-in-migration-tool)
最近更新时间: 2020-08-13 17:54:46
# 日志错误 [#日志错误]
| 问题 | 故障排查 |
| ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Linux 服务器日志错误提示`check rsync failed` | 请检查系统是否已安装 rsync 组件 |
| Linux 服务器日志错误提示`check virtio failed` | 请检查系统是否安装 virtio 驱动 |
| Linux 服务器日志错误提示`check selinux failed` | 请检查是否已禁用 SElinux。你可以运行 setenforce 0 临时关闭 SELinux |
| Linux 服务器日志错误提示`Do Grub Failed` | 请检查源服务器是否安装了系统引导程序 GRUB(GRand Unified Bootloader)。你可以[安装 1.9 以上版本的系统引导程序 GRUB ](/faq/qvm/the-remote-connection/5146-how-to-install-grub-for-linux-server)后重试 |
| 日志错误提示`TimeStamp` | 请检查系统时间是否为正确时间 |
| 日志错误提示`Unknown Error` | 请检查配置文件 user\_config.json 中参数 platform 取值是否正确 |
| 日志错误提示`Permission denied` | 日志文件提示如`rsync: send_files failed to open "…": Permission denied (13)`的错误信息时,表明迁云工具无权访问该目录或文件夹,导致 rsync 失败。此时你可以通过配置 rsync\_excludes\_linux.txt 或者 Rsync/etc/rsync\_excludes\_win.txt 过滤该目录或文件夹,然后重试 |
| 日志错误提示`NotEnoughBalance` | 中转实例的默认付费模式为按量付费,你的账号余额不足时,无法顺利迁云。你需要更新账户状态后重试。 |
| 日志错误提示`InvalidImageName.Duplicated` | 指定的参数 image\_name 不能与你已有的镜像名称重复 |
| 日志错误提示`Connect to Server Failed` | 该错误表示无法连接中转实例。你可以按以下步骤检查:(1)查看日志文件详细信息(2)中转实例状态是否正常(3)本地网络服务是否正常。迁云工具需要访问 80、443、8703 和 8080 通信端口,请确保你的服务器已经放行这些端口(4)问题解决后,再次运行主程序重试 |
| 日志错误提示`Do Rsync Disk x Failed` | 该错误表示文件传输中断。你可以按以下步骤检查:(1)查看错误日志文件详细信息。如果错误日志文件中多次出现\*\* return: 3072 **或** return: 7680 \*\*信息提示,请确认源服务器数据库服务或者容器服务是否未开启状态,如 Oracle、MySQL、MS SQL Server、MongoDB 和 Docker 等服务。你需要先暂停服务或者排除相关数据文件目录后再迁云(2)中转实例状态是否正常(3)本地网络服务是否正常。迁云工具需要访问 80、443、8703 和 8080 通信端口,请确保你的服务器已经放行这些端口。(4)问题解决后,再次运行主程序重试 |
说明:
* [迁云工具](/products/qvm/1-server-migration-qiniu)支持断点恢复,文件传输过程支持断点续传。一般情况下如果主程序异常中断或提示迁移不成功,故障排查处理完问题后,你可以再次运行主程序恢复迁云工作。
* 成功迁移 Windows Server 2008 及以上版本的 Windows 服务器,启动实例后你需要先使用 Reset File Permission 工具修复默认文件系统权限,以保证实例服务及组件正常。
# 问题:迁移 Windows 服务器后,启动实例发现数据盘缺失或者盘符错乱? [#问题迁移-windows-服务器后启动实例发现数据盘缺失或者盘符错乱]
情况一:如果数据盘盘符缺失,你可以打开磁盘管理器,重新添加即可。
**1. **打开**控制面板 > 系统与安全 > 管理工具 > 计算机管理**
**2. **单击左侧菜单栏中的**磁盘管理**,找到并右击盘符缺失的数据盘,选择**更改驱动器和路径**
**3. **单击**添加**并添加数据盘盘符
**4. **选择**装入以下空白 NTFS 文件夹中**,单击**确定**即可
情况二:如果数据盘盘符错乱,你可以打开磁盘管理器,重新更改即可。
**1. **打开**控制面板 > 系统与安全 > 管理工具 > 计算机管理**
**2. **单击左侧菜单栏中的**磁盘管理**,找到并右击盘符缺失的数据盘,选择**更改驱动器和路径**
**3. **单击**更改**并更改数据盘盘符
**4. **选择**分配以下驱动器号**,单击**确定**即可
# 问题:迁移 Linux 服务器后,启动实例发现原数据盘目录下没有数据? [#问题迁移-linux-服务器后启动实例发现原数据盘目录下没有数据]
迁移带数据盘的 Linux 服务器后,启动实例时默认不挂载数据盘。你可以在启动 QVM 实例后运行`ls /dev/vd*`命令查看数据盘设备,根据实际需要手动挂载,并编辑`/etc/fstab`配置开机自动挂载。
# 问题:迁移 Linux 服务器后,根据该自定义镜像创建的实例为何不能启动? [#问题迁移-linux-服务器后根据该自定义镜像创建的实例为何不能启动]
(1)检查驱动。创建 I/O 优化的实例时,请确保源服务器已经安装 virtio 驱动。
(2)检查源系统引导配置是否正确。
(3)如果你的源服务器系统是内核版本较低的 CentOS 5 或者 Debian 7,而且自带的 GRUB 程序版本低于 1.99,你可以[安装 1.9 以上版本的系统引导程序 GRUB ](/faq/qvm/the-remote-connection/5146-how-to-install-grub-for-linux-server)后重试。
# 问题:启动 Others Linux 实例后,网络服务不正常? [#问题启动-others-linux-实例后网络服务不正常]
导入 Others Linux 类型镜像时,QVM 不会对该自定义镜像所创建的实例做任何配置工作,包括相关的网络配置、SSH 配置等。此时,你需要自行修改系统相关网络配置。迁云工具生成的镜像网络配置有变化,默认以 DHCP(Dynamic Host Configuration Protocol)的方式获取 IP 地址。如果网络配置失败,请提交工单联系技术支持。
# 后端服务器常见问题 (/faq/qvm/5147-the-backend-server-common-problems)
最近更新时间: 2026-09-30 10:36:52
# 问题:负载均衡实例最多支持添加多少 QVM 实例? [#问题负载均衡实例最多支持添加多少-qvm-实例]
默认每个负载均衡实例可以添加 200 个 QVM 实例,一个 QVM 实例可以被 50 个负载均衡实例关联。**但是**如果你需要添加更多 QVM 实例,请提交工单申请。通过审核后,为你提升配额。
为了保证你对外服务的稳定与高效,建议你根据业务分类或应用服务的模块划分将提供不同服务或执行不同任务的应用服务器配置在不同的负载均衡实例上。
# 问题:负载均衡运行中是否可调整服务器数量? [#问题负载均衡运行中是否可调整服务器数量]
可以
你可以在任意时刻增加或减少负载均衡的后端服务器实例数量并且支持不同服务器实例之间的切换。但是为了保证你对外服务的稳定,确保在执行上述操作时,开启了负载均衡的健康检查功能并保证负载均衡后端至少有一台正常运行的服务器实例。
# 问题:后端服务器实例为什么访问不了负载均衡服务? [#问题后端服务器实例为什么访问不了负载均衡服务]
这和负载均衡 TCP 的实现机制有关。在四层 TCP 协议服务中,不支持后端服务器实例既作为 Real Server 又作为客户端向所在的负载均衡实例发送请求。因为返回的数据包只在云服务器内部转发,不经过负载均衡,所以在后端服务器实例上去访问负载均衡的服务地址是不通的。
# 问题:QVM 实例在接入负载均衡服务前添加了白名单,对负载均衡服务有影响么? [#问题qvm-实例在接入负载均衡服务前添加了白名单对负载均衡服务有影响么]
若 QVM 实例在接入负载均衡前设置了访问白名单,那么接入负载均衡后需要将负载均衡的白名单添加到 QVM 实例中,否则可能会引起网站`403`报错。
需要添加的负载均衡地址包括 100.64.0.0/10、10.158.0.0/16、10.159.0.0/16 和 10.49.0.0/16。
# 问题:为什么有 10 或 100 开头的 IP 在频繁访问 QVM 实例? [#问题为什么有-10-或-100-开头的-ip-在频繁访问-qvm-实例]
负载均衡系统除了会通过系统服务器的内网 IP 将来自外部的访问请求转到后端 QVM 实例之外,还会对 QVM 实例进行健康检查和可用性监控,这些访问的来源都是由负载均衡系统发起的。
负载均衡系统的地址段为 100.64.0.0/10、10.158.0.0/16、10.159.0.0/16 和 10.49.0.0/16,所以会有很多 10或 100 开头的 IP 地址访问 QVM 实例。
为了确保你对外服务的可用性,确保对上述地址的访问配置了放行规则。
# 问题:要使用负载均衡服务,QVM实例是否需要进行特殊配置? [#问题要使用负载均衡服务qvm实例是否需要进行特殊配置]
添加到负载均衡实例的后端 QVM 实例,一般不需要进行特别的配置。
但是,如果后端 QVM 实例的操作系统为 Linux 并且使用了 TCP 监听,确保系统配置文件`/etc/sysctl.conf`中以下三个配置的值为零:
```
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.eth0.rp_filter = 0
```
如果部署在同一内网网段下的 QVM 实例之间有通信需求,需要检查如下参数的配置是否正确:
```
net.ipv4.conf.default.arp_announce =2
net.ipv4.conf.all.arp_announce =2
```
更改配置后,执行 sysctl -p 更新配置。
# 问题:QVM 实例设置权重的作用是什么? [#问题qvm-实例设置权重的作用是什么]
权重比越高的 QVM 实例将被分配到更多的访问请求,你可以根据后端 QVM 实例的对外服务能力和需求来区别设定。
假设负载均衡池中的 A 和 B 两台 QVM 实例的权重均配置成 100 和均配置成 50 都是一样的,在 A 和 B 两台 QVM 实例健康检查状态均正常的情况下,QVM 实例 A 和 B 均分前端请求的流量。但是如果 A 和 B 的权重分别设置为 10 和 100,在 A 和 B 两台 QVM 实例健康检查状态均正常的情况下,A 承担 10/(10+100) 的流量,B 承担 100/(10+100) 的流量。
如果你同时开启了会话保持功能,有可能会造成后端 QVM 实例访问不均衡,建议你暂时关闭会话保持功能再观察一下是否依然存在这种情况。
当负载均衡分发到后端 QVM 实例的请求不均匀时,参考以下方法检查处理:
* 统计一个时间段内后端 QVM 实例的 Web 服务访问日志的数据量。访问日志查看方法:
* Nginx 和 Apache:打开日志目录`/access.log`
* IIS:打开 IIS 管理界面,鼠标放在需要设置开启日志的站点上,单击右键,选择**属性**,选择**网站**选项卡,单击**启用日志记录**
* 按照负载均衡的配置,对比多个 QVM 实例日志的数量是否有差距。
如果设置了会话保持,需要剥离相同 IP 的访问日志。如果负载均衡配置了权重,要根据权重比例计算日志中访问比例是否正常。
# 问题:服务器状态异常,如何回退到异常之前的状态? [#问题服务器状态异常如何回退到异常之前的状态]
无法回退
如果您之前有创建过系统快照或者镜像,基于镜像重新创建实例即可。
# 问题:突发型机器能不能升级到经济型 [#问题突发型机器能不能升级到经济型]
不可以,建议主机生成镜像,然后基于镜像重新生成主机实例,原按量主机可以控制台直接释放,包年包月的主机需要提交工单申请释放退款
# 云主机反向解析的申请流程 (/faq/qvm/5390-cloud-host-reverse-dns-application-process)
最近更新时间: 2020-08-13 17:54:46
qvm 反向解析需要提交工单由售后工程师操作,提交工单时请注明 主机所在区域(北京、上海等)和 ip 对应的解析域名。
FAQ:
Q: 1个IP地址是否允许指向多个反解域名 ?
A: 一个IP只允许对应一个反解域名
Q: 设置提交后,如何测试是否生效?
A: 提交后2分钟后会在权威DNS上生效, 可以使用 dig 命令查看
\`
dig -x 47.254.32.63 +short
gw8.4cun.com.
\`
# Linux上NFS性能只有几MB速度 (/faq/qvm/5608-linux-on-nfs-performance-are-only-a-few-mb-speed)
最近更新时间: 2020-08-13 17:54:46
Linux nfs客户端对于同时发起的NFS请求数量进行了控制,若该参数配置较小会导致IO性能较差,请查看该参数:
```bash
cat /proc/sys/sunrpc/tcp_slot_table_entries
```
默认编译的内核该参数最大值为256,可适当提高该参数的值来取得较好的性能,请以root身份执行以下命令:
```bash
echo "options sunrpc tcp_slot_table_entries=128" >> /etc/modprobe.d/sunrpc.conf
echo "options sunrpc tcp_max_slot_table_entries=128" >> /etc/modprobe.d/sunrpc.conf
sysctl -w sunrpc.tcp_slot_table_entries=128
```
修改完成后,您需要重新挂载文件系统或重启机器。
# 安全组常用端口和特殊端口解封 (/faq/qvm/6656-security-group-common-ports-and-special-unsealed)
最近更新时间: 2020-08-13 17:54:46
通过了解典型应用的默认端口,您可以更准确地添加或修改安全组规则。
# **使用背景** [#使用背景]
添加安全组规则时,您必须指定通信端口或端口范围,然后安全组根据允许或拒绝策略决定是否转发数据到ECS实例。例如,使用Xshell客户端远程连接QVM实例时,当安全组检测到从公网或内网有SSH请求,会同时检查入方向上发送请求的设备的IP地址是否在允许放行的安全组规则中、22端口是否开启,只有匹配到的安全组规则允许放行该请求时,方才建立数据通信。
另外部分运营商判断\*\*端口25、135、139、444、445、5800、5900等为高危端口,并默认屏蔽。\*\*即使您添加的安全组规则放行了这些端口,在受限地区仍无法访问。建议您修改为其它非高危端口承载业务。
# **常用端口** [#常用端口]
参见下表查看常用端口的使用说明。
| 端口 | 服务 | 说明 |
| ----------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| 21 | FTP | FTP服务所开放的端口,用于上传、下载文件。 |
| 22 | SSH | SSH端口,用于通过命令行模式或远程连接软件(例如PuTTY、Xshell、SecureCRT等)连接Linux实例。 |
| 23 | Telnet | Telnet端口,用于Telnet远程登录ECS实例。 |
| 25 | SMTP | SMTP服务所开放的端口,用于发送邮件。基于安全考虑,QVM实例25端口默认受限,如需解封,[**请参见TCP 25端口控制台解封申请**](#info)。 |
| 80 | HTTP | 用于HTTP服务提供访问功能,例如,IIS、Apache、Nginx等服务。 |
| 110 | POP3 | 用于POP3协议,POP3是电子邮件收发的协议。 |
| 143 | IMAP | 用于IMAP(Internet Message Access Protocol)协议,IMAP是用于电子邮件的接收的协议。 |
| 443 | HTTPS | 用于HTTPS服务提供访问功能。HTTPS是一种能提供加密和通过安全端口传输的一种协议。 |
| 1433 | SQL Server | SQL Server的TCP端口,用于供SQL Server对外提供服务。 |
| 1434 | SQL Server | SQL Server的UDP端口,用于返回SQL Server使用了哪个TCP/IP端口。 |
| 1521 | Oracle | Oracle通信端口,ECS实例上部署了Oracle SQL需要放行的端口。 |
| 3306 | MySQL | MySQL数据库对外提供服务的端口。 |
| 3389 | Windows Server Remote Desktop Services | Windows Server Remote Desktop Services(远程桌面服务)端口,可以通过这个端口使用软件连接Windows实例。 |
| 8080 | 代理端口 | 同80端口一样,8080端口常用于WWW代理服务,实现网页浏览。如果您使用了8080端口,访问网站或使用代理服务器时,需要在IP地址后面加上:8080。安装Apache Tomcat服务后,默认服务端口为8080。 |
| 137、138、139 | NetBIOS协议 |
- 137、138为UDP端口,通过网上邻居传输文件时使用的端口。
- 139通过这个端口进入的连接试图获得NetBIOS/SMB服务。
NetBIOS协议常被用于Windows文件、打印机共享和Samba。 |
# **特殊端口——TCP25端口解封申请** [#特殊端口tcp25端口解封申请]
TCP 25端口的出方向封禁可能影响您通过TCP 25 端口连接第三方邮件服务商的SMTP服务器对外部发送邮件。如需解封,请按照以下模板[提交工单](https://support.qiniu.com/tickets/new/form?category=%E5%85%B6%E4%BB%96%E7%B1%BB%E5%92%A8%E8%AF%A2\&space=%E4%BA%91%E4%B8%BB%E6%9C%BA)。
```
模板:
您好:
希望解封服务器邮件通信端口:
解封原因及理由(下面仅为示例,请按照您的详细情况说明):
1. 产品是邮箱客户端产品,须要用到25和110号端口,否则邮件系统不能使用,同时服务器会通过邮件,为我们的用户发送一些版本更新等通知性邮件
2. 服务器端通过邮件将我们用户反馈的意见,转发到技术人员邮箱,方便技术人员及时处理问题;
解封服务器ID及IP:
实例ID: xxx
对应IP:xxx
我们同意并承诺:不发送垃圾邮件,如果其IP被国际反垃圾组织列黑,七牛云有权立即停止其服务。
这些端口不会做其他用途,请放心开通这些邮箱端口,谢谢!
```
说明:
1. 一般情况下,在您提交解封申请一个工作日后,七牛云会根据您提交的申请理由进行审核,并将审核结果以邮件的方式通知您。
# noresvport挂载参数问题检查及整改步骤 (/faq/qvm/6912-inspection-and-rectification-steps-noresvport-mount-parameters-problem)
最近更新时间: 2020-08-13 17:54:46
本文介绍如何检查并修复 noresvport 挂载参数问题。
> 说明:只适用于Linux系统的用户,Windows用户请忽略。
# **第一步:检查是否使用 noresvport 挂载参数** [#第一步检查是否使用-noresvport-挂载参数]
1. 在 QVM 实例上下载check\_noresvport.py检查脚本。
```
wget -N https://code.aliyun.com/nas_team/nas-client-tools/raw/master/linux_client/check_noresvport.py -P /tmp/
```
2. 使用python执行检查脚本。
```
python2.7 /tmp/check_noresvport.py
```
如果脚本输出:本台 ECS 无须处理 noresvport 问题,则无须处理。否则请执行第二步: noresvport 参数修复方法。
# **第二步:noresvport参数修复方法** [#第二步noresvport参数修复方法]
建议在业务低峰进行修复。
1. 如果使用 QVM 直接挂载NAS,请使用参数-r再次执行检查脚本。
```
python2.7 /tmp/check_noresvport.py -r
```
# **第三步:更新自动挂载配置** [#第三步更新自动挂载配置]
* 如果配置过自动挂载,请更新自动挂载参数,加入 noresvport 挂载参数。详情请参见[Linux自动挂载NFS文件系统](/products/qvm/nas/section-2djvgu/6-automatically-mount-nfs-file-systems)。
* 如果没有配置过自动挂载,跳过此步骤。
修复完成后,**请再次执行第一步:检查是否使用 noresvport 挂载参数**,确认修复生效。如果仍有问题请及时[提交工单](https://support.qiniu.com/tickets/new/form?category=%E5%85%B6%E4%BB%96%E7%B1%BB%E5%92%A8%E8%AF%A2\&space=%E4%BA%91%E4%B8%BB%E6%9C%BA)。
# **常见问题** [#常见问题]
1.为什么要使用 noresvport 参数挂载 NAS?不重新挂载会有什么后果?
答:如果发生网络切换或者后端服务的 HA 倒换,小概率会造成 NFS 文件系统阻塞,则可能需要几分钟时间连接才会自动恢复,极端情况下甚至需要重启 QVM 才能恢复。使用 noresvport 参数后,恢复几秒即可自动完成恢复。
2.什么情况会引发网络切换或者后端服务的 HA 倒换?
答:NAS 服务是稳定的,网络切换或者后端服务的HA倒换都是罕见情况。后端服务升级会触发上述切换,但导致客户端阻塞的概率很低,并且在升级之前我们会提前通知相关集群的用户,留出充足时间使用 noresvport 参数。其他可能引发切换的场景,还有负载均衡调整、服务端硬件故障等情况,有一定的不可预测性,所以即使服务端没有升级安排,也请尽快使用 noresvport 参数避免这样的风险。
3.为什么需要重新挂载?还有没有其他的方案?
答。需要重新挂载的原因是要把之前没有使用 noresvport 参数的 TCP 连接断掉,然后使用 noresvport 参数挂载时,会建立新的 TCP 连接。为了把旧的 TCP 连接断掉,就必须把 NAS 相关的业务都停掉,然后执行umount卸载。如果不希望重新挂载,可以考虑新建NAS挂载点,使用 noresvport 参数挂载到新的本地路径,然后把业务进程逐步迁移过去,最后废弃老的挂载路径和挂载点。
# 云主机 (/faq/qvm)
## 迁移工具常见问题 [#迁移工具常见问题]
[查看原文](/faq/qvm/5145-the-common-problems-in-migration-tool)
迁移工具常见问题
## 负载均衡常见问题 [#负载均衡常见问题]
[查看原文](/faq/qvm/5144-the-common-problems-in-load-balancing)
负载均衡常见问题
## 后端服务器常见问题 [#后端服务器常见问题]
[查看原文](/faq/qvm/5147-the-backend-server-common-problems)
后端服务器常见问题
## 为什么云主机连接不上 Redis? [#为什么云主机连接不上-redis]
[查看原文](/faq/qvm/the-remote-connection/5099-connection-on-redis)
为什么云主机连接不上 Redis?
## 云主机反向解析的申请流程 [#云主机反向解析的申请流程]
[查看原文](/faq/qvm/5390-cloud-host-reverse-dns-application-process)
云主机反向解析的申请流程
## 七牛主机礼品卡使用介绍 [#七牛主机礼品卡使用介绍]
[查看原文](/faq/qvm/qvm-other-faq/5675-seven-niuyun-host-gift-card-use-is-introduced)
本文主要介绍七牛云主机礼品卡的使用.
## 如何为 Linux 服务器安装 GRUB [#如何为-linux-服务器安装-grub]
[查看原文](/faq/qvm/the-remote-connection/5146-how-to-install-grub-for-linux-server)
如何为 Linux 服务器安装 GRUB
## Linux上NFS性能只有几MB速度 [#linux上nfs性能只有几mb速度]
[查看原文](/faq/qvm/5608-linux-on-nfs-performance-are-only-a-few-mb-speed)
本文将介绍如何优化NFS挂在NAS速度慢的问题
更多问题请查看 [官网 FAQ](/faq)。
# 视频监控常见问题 (/faq/qvs/13577-video-surveillance-faqs)
最近更新时间: 2026-09-14 18:39:30
Q: 定向流量卡、物联网卡、摄像头、监控设备需要添加定性的白名单IP,这些IP是什么?
A: 国内空间:SIP 可添加 `121.41.37.111 、47.98.160.100`
流媒体&对讲服务器IP(主要是拉流观看和语音对讲):
* 华东视频监控空间:`114.230.92.187、61.160.198.6、223.112.202.242、223.111.129.148`
* 华南视频监控空间:`183.60.220.78、183.60.150.21`
* 华北视频监控空间:`111.62.101.178、124.236.65.35、121.29.19.51`
# 视频监控-时间防盗链 (/faq/qvs/6819-preventing-hotlinking)
最近更新时间: 2026-08-18 11:57:15
时间戳防盗链通过使用约定的加密字符串来对具有访问有效期的资源链接进行一些加密计算得到一个 token 值,然后访问外链里面带上这个 token 和截止时间戳去访问七牛qvs节点,七牛qvs节点会用同样的算法来计算访问链接是否合法,如果不合法则返回403 Forbidden,否则返回所要访问的资源。
# **签算token说明** [#签算token说明]
**操作步骤:**
1. 获取鉴权 key
操作说明:请参考[域名管理](/products/qvs/user-guide/0-namespace-management#2)
开启时间防盗链开关,设置key即可,可自动生成亦可手动输入。

2. 设置过期时间(unixtimestamp)
3. 签名token生成过程: 通过上面两步生成中间串 s = key+url\_base64\_encode(path)+e key为第一个步获取的key, path为为请求流的播放path,e为第二步中unix 时间戳的十六进制表示, 然后
token = md5(s).to\_lower(), 其中 to\_lower() 表示生成的 md5 字符串用小写字母表示
**签名参数传递方式:**
例如播放地址是:
[http://qvs-live-hdl.qiniu.com:2045/3k5ndkiqvggnz/stream1.flv](http://qvs-live-hdl.qiniu.com:2045/3k5ndkiqvggnz/stream1.flv)
最终形成的播放地址是:
[http://qvs-live-hdl.qiniu.com:2045/3k5ndkiqvggnz/stream1.flv?token=xxxx\&e=xxxx](http://qvs-live-hdl.qiniu.com:2045/3k5ndkiqvggnz/stream1.flv?token=xxxx\&e=xxxx)
**参考实例:**
需要获取一个当前时间5分钟后过期的防盗链签名 url.
播放地址为: [http://qvs-live-hdl.qiniu.com:2045/3k5ndkiqvggnz/stream1.flv](http://qvs-live-hdl.qiniu.com:2045/3k5ndkiqvggnz/stream1.flv)
portal上已经开启了时间戳防盗链, 设置了主密钥key为123
假设当前时间的时间戳为: 1590468504
过期时间是5分钟后, 所以过期时间戳为: 1590468504 + 5 \* 60 = 1590468804
换算为16进制: 5ecca0c4 (一定要全小写)
即参数 e=5ecca0c4
中间字符串的生成规则是: S= key + url\_base64\_encode(path) + t
key 是设置时输入的密钥, 这里是 key=123
path 是 URL 中的 path 部分, URL是[http://qvs-live-hdl.qiniu.com:2045/3k5ndkiqvggnz/stream1.flv](http://qvs-live-hdl.qiniu.com:2045/3k5ndkiqvggnz/stream1.flv), 则 path=/3k5ndkiqvggnz/stream1.flv
所以 S=123LzNrNW5ka2lxdmdnbnovc3RyZWFtMS5mbHY=5ecca0c4
\*\* 注:本文提到的 url\_base64\_encode 算法,都是base64安全编码,下同\*\*
再用 md5算法 token = md5(S).to\_lower()
得到:
token=74e0b06fce024b4743bca95bd62b2fe0
e=1590468804
所以最终生成的5分钟后过期的播放地址是: [http://qvs-live-hdl.qiniu.com:2045/3k5ndkiqvggnz/stream1.flv?token=74e0b06fce024b4743bca95bd62b2fe0\&e=1590468804](http://qvs-live-hdl.qiniu.com:2045/3k5ndkiqvggnz/stream1.flv?token=74e0b06fce024b4743bca95bd62b2fe0\&e=1590468804)
# **快速接入** [#快速接入]
为了方便用户可以快速的接入测试,视频监控portal中提供了地址生成器,可以快速生成带时间戳的防盗链的推拉流地址。
**说明:** 需要保证的选择的域名已经开启了时间防盗链功能,否则生成的地址为不带时间防盗链的地址。

# 如何进行视频流的录制和截图 (/faq/qvs/6873-how-to-make-recording-and-screenshots)
最近更新时间: 2020-07-28 19:26:03
本文主要是讲述如何进行视频流的录制和截图
## **准备工作:** [#准备工作]
**已注册七牛开发者平台**
若尚无七牛开发者平台账号,需要先进行注册;访问[七牛官网](https://www.qiniu.com/),点击右上角的[注册](https://portal.qiniu.com/signup),进行七牛帐号注册。
**开通存储服务**
如果需要对监控视频流进行录制或者截图,需要使用存储服务,用于存储回看录制的视频和截图。故需要开通存储服务,创建对应的bucket,详情请参照[创建存储空间](/products/kodo/0-console-quickstart#step1)
**已创建空间**
若尚未创建空间,需要先完成空间的创建,通过portal方式创建请参考[【创建空间】](/products/qvs/user-guide/0-namespace-management#1);通过API创建请参考[【创建空间API】](/products/qvs/space-management/0-create-namespace)
## **方式一:** [#方式一]
通过portal配置。
**操作步骤:**
1.登录[七牛开发者平台](https://sso.qiniu.com/?client_id=PIapUKqa3u6S24H868BelwrG0OFu8dS7AxVQ8oz8HznLXhgrl2BnjaO9cs9LzxK2\&redirect_url=https:%2F%2Fportal.qiniu.com%2Fapi%2Fgaea%2Fsso%2Fsignin%3Fredirect%3D%252Fcreate)。
2.模板管理->添加录制模板->配置模板,详情可参考[【创建录制模板】](/products/qvs/user-guide/template-management/0-recording-the-template)或[【创建截图模板】](/products/qvs/user-guide/template-management/1-screenshot-of-the-template)
3.空间管理->配置->模板配置->编辑->配置对应的录制和截图模板
4.使用获取到的推流地址进行测试
5.推流一段时间后可在“视频流管理”的“录制回放”中查看已录制文件
## **方式二:** [#方式二]
通过API进行配置。
**操作步骤:**
1.创建模板并获取模板id,模板类型可为录制或截图,请参考[【创建模板API】](/products/qvs/template-management/0-create-template)
2.给空间绑定模板,请参考[【更新空间API】](/products/qvs/space-management/2-update-namespace)
参考请求示例:
```
curl --request PATCH \
--url http://qvs.qiniuapi.com/v1/namespaces/2akrars3vpsxa \
--header 'authorization: Qiniu j853F3bLkWl59I5BOkWm6q1Z1mZClpr9Z9CLfDE0:u372aQV0359mzwTVGxn22sRgFYc=' \
--header 'content-type: application/json' \
--data '{"operations":[{"key":"recordTemplateId","op":"replace","value":"p2cxr0r8ydxj"}]
}'
```
3.使用获取到的推流地址进行测试
4.推流一段时间后可查询录制记录,请参考[【查询录制记录API】](/products/qvs/recording/2-query-recordhistories)
*注:截图步骤和录制操作步骤类似*
# 视频监控-流状态回调使用说明 (/faq/qvs/7022-about-the-back-flow-state)
最近更新时间: 2020-12-09 11:29:12
1.如何触发流状态回调?
空间中需要配置回调地址,这是前提条件。具体操作如下
* 通过api创建或者更新空间的客户,可以填充callBack字段,该字段就是回调地址,例如该字段形式为 [www.qiniu.com/callback](http://www.qiniu.com/callback) 或者 11.11.11.11:8888/callback
* 用户也可以通过视频监控(qvs)的官方控制台,在portal中,添加回调地址(后续的portal版本会添加对流状态回调的支持)
2.触发回调的时机和格式?
* 在流连接和断开时,会分别触发回调
* 回调的格式,采用http post请求。body采用json编码,并固定以下几个字段,根据实际情况会调整,并保持兼容。
```
{
"type": "stream" // 回调类型
"nsId": "xx", // 空间id, (字符串类型)
"streamId": "xx", // 流id, (字符串类型)
"streamState": 1, // 0:流断开 1:流连接, (整型)
"timeSec": xx, // streamState为0,代表流断开的时间戳;streamState为1,代表流连接的时间戳,(整型)
"reqId": "xx" //唯一标示,(字符串类型)
}
```
* 视频监控(qvs)回调,需要客户侧具备接受http post请求和解析的能力。
* 视频监控(qvs)回调的http post示例如下
```
curl -X POST \
--url http://11.11.11.11:8888/callback \
-H "Content-Type:application/json" \
--data '{"type": "stream", "nsId": "xxx","streamId": "xxx", "streamState": xxx, "timeSec": xxx, "reqId": "xxx"}'
其中url"11.11.11.11:8888/callback"就是客户在空间中已配置好的回调地址
```
# 视频监控-国标ID命名规范 (/faq/qvs/7027-gb-id-naming-conventions)
最近更新时间: 2026-05-06 17:51:01
国标ID由中心编码(8位)、行业编码(2位)、类型编码(3位)和序号(7位)四个码段共20位十进制数字字符构成,即系统编码 =中心编码 + 行业编码 + 类型编码 + 序号。
国标ID命名的详细说明见**详细编码规则**。其中:
* 中心编码:指用户或设备所归属的监控中心的编码,按照监控中心所在地的行政区划代码确定,当不是基层单位时空余位为0。行政区划代码采用GB/T 2260-2007规定的行政区划代码表示。
* 行业编码:是指用户或设备所归属的行业,行业编码对照详见**行业编码规范**。
* 类型编码指定了设备或用户的具体类型,其中的前端设备包含公安系统和非公安系统的前端设备,终端用户包含公安系统和非公安系统的终端用户。
# **详细编码规则** [#详细编码规则]



# **行业编码规范** [#行业编码规范]

# 视频监控 (/faq/qvs)
## 视频监控-时间防盗链 [#视频监控-时间防盗链]
[查看原文](/faq/qvs/6819-preventing-hotlinking)
视频监控(qvs)时间戳防盗链
## 如何进行视频流的录制和截图 [#如何进行视频流的录制和截图]
[查看原文](/faq/qvs/6873-how-to-make-recording-and-screenshots)
如何进行视频流的录制和截图
## 视频监控-流状态回调使用说明 [#视频监控-流状态回调使用说明]
[查看原文](/faq/qvs/7022-about-the-back-flow-state)
关于流状态回调的说明
## 视频监控-国标ID命名规范 [#视频监控-国标id命名规范]
[查看原文](/faq/qvs/7027-gb-id-naming-conventions)
视频监控-国标ID命名规范
更多问题请查看 [官网 FAQ](/faq)。
# SSL常见问题FAQ (/faq/ssl/13476-Q&A)
最近更新时间: 2026-09-15 13:21:21
# SSL 证书常见问题与解决方案 [#ssl-证书常见问题与解决方案]
## 问题 1:域名高风险导致证书签发失败 [#问题-1域名高风险导致证书签发失败]
**原因**:域名存在高风险,需要自行处理好安全风险后,才能重新申请提交。
***
## 常见问题解答 [#常见问题解答]
### Q1:SSL 证书订单是否支持删除? [#q1ssl-证书订单是否支持删除]
> **不支持**。
***
### Q2:SSL 证书是否支持延期? [#q2ssl-证书是否支持延期]
> 购买的证书不是续期证书,**证书有效期无法进行延长**。
***
### Q3:SSL 免费证书续费报错,是否支持续费? [#q3ssl-免费证书续费报错是否支持续费]
> 免费证书**目前不支持续费**,需要重新申请新的免费证书进行使用。
***
### Q4:域名配置了防盗链且无法关闭,如何申请 SSL 证书? [#q4域名配置了防盗链且无法关闭如何申请-ssl-证书]
> 域名配置了防盗链,一般无法使用 `一键升级 HTTPS`,此时只能使用**手动申请 SSL 证书**,且选择 **DNS 验证类型**的证书。
**手动申请并使用免费 SSL 证书步骤如下:**
| 步骤 | 操作说明 | 参考链接 |
| -------------- | --------------------------------- | ------------------------------------------------------------------------------------ |
| 1. 免费证书申请 | 证书品牌:TrustAsia 限免
证书种类:DV 限免 | [立即申请](https://portal.qiniu.com/certificate/apply) |
| 2. 补全信息 | 按页面提示填写相关信息 | — |
| 3. 免费证书验证 | 完成 DNS 验证流程 | [验证指南](/products/ssl/operation-guide/1-ssl-certificate-of-free-dns-validation-guide) |
| 4. 升级 HTTPS 配置 | 配置 HTTPS 加速 | [配置指南](/products/cdn/configuration-management-fusion/4-https-configuration) |
***
### Q5:SSL 证书申请卡在验证环节怎么办? [#q5ssl-证书申请卡在验证环节怎么办]
> 如果证书申请卡在**文件验证**环节,可能是 CA 无法检测到验证文件。
**解决方案:**
**方案一:放开海外访问限制,或加白 CA 验证服务 IP**
将以下 IP 加入白名单:
| 区域 | IP 地址 |
| -- | -------------- |
| 国内 | 101.89.87.34 |
| 国内 | 180.167.86.3 |
| 国内 | 8.146.209.70 |
| 国内 | 101.43.128.119 |
| 国内 | 8.137.56.95 |
| 国内 | 43.136.173.110 |
| 国内 | 8.162.2.5 |
| 国内 | 8.148.67.87 |
| 海外 | 54.241.185.53 |
| 海外 | 54.241.96.97 |
| 海外 | 52.28.224.233 |
| 海外 | 3.126.196.126 |
| 海外 | 52.82.97.93 |
| 海外 | 69.235.167.224 |
| 海外 | 54.189.196.217 |
**方案二:重新申请证书并改用 DNS 解析验证方式**
1. 登录控制台 → 申请免费 SSL 证书
2. 选择 **DNS 验证**
3. 按指引配置 DNS 解析记录
***
# SSL 证书服务 (/faq/ssl)
## SSL常见问题FAQ [#ssl常见问题faq]
[查看原文](/faq/ssl/13476-Q\&A)
SSL证书、常见问题、签发
更多问题请查看 [官网 FAQ](/faq)。
# 常见问题 (/faq/tutugo/13075-tutugo-FAQ)
最近更新时间: 2025-08-27 14:22:30
# 常见问题 [#常见问题]
## 商品图品类可定制吗 [#商品图品类可定制吗]
目前控制台暂时不支持商品图品类定制的自助操作,如您需要定制化服务,请联系客服人员
## 商品图品类定制需要多久 [#商品图品类定制需要多久]
具体的定制时间与商品品类和印花提取精度相关,通常3个工作日即可完成
## 一次任务的时长是多久 [#一次任务的时长是多久]
单张图片的处理时长大约是50秒左右,一个任务的时长根据待处理图片的数量决定,待处理的图片数量越多,处理所需时长越长
# 拓图 AI (/faq/tutugo)
## 常见问题 [#常见问题]
[查看原文](/faq/tutugo/13075-tutugo-FAQ)
FAQ
更多问题请查看 [官网 FAQ](/faq)。
# 社区生态 (/sdk-tools/community)
社区 SDK 与插件通常由第三方维护,适合作为历史项目、特定框架或迁移阶段的补充参考。生产环境接入前请确认仓库活跃度、许可证和兼容版本。
## 社区 SDK [#社区-sdk]
| SDK | 维护者 | 链接 |
| ---------------- | --------- | -------------------------------------------------------------------------------- |
| PHP SDK | zither | [GitHub](https://github.com/zither/simple-qiniu-sdk) |
| PHP SDK | hfcorriez | [GitHub](https://github.com/hfcorriez/php-qiniu) |
| PHP SDK | guoking | [GitHub](https://github.com/guoking/qiniu-php-sdk) |
| Python SDK | yueyoum | [GitHub](https://github.com/yueyoum/seven-cow) |
| Python SDK | shell | [GitHub](https://github.com/shell909090/python-qiniu) |
| Scala SDK | livehl | [Git 仓库](http://git.oschina.net/livehl/qiniu-scala-sdk) |
| fibjs SDK | Rube | [GitHub](https://github.com/Hi-Rube/qn-fibjs) |
| React Native SDK | buhe | [GitHub](https://github.com/qiniu/react-native-sdk) |
| Node.js SDK | 小问 | [GitHub](https://github.com/iwillwen/node-qiniu) |
| Node.js SDK | fengmk2 | [GitHub](https://github.com/fengmk2/qn) |
| Javascript SDK | 小问 | [GitHub](https://github.com/iwillwen/qiniu.js/tree/develop) |
| Csharp SDK | 王明 | [GitHub](https://github.com/icattlecoder/qiniu-csharp-sdk/blob/master/README.md) |
| Qiniu-wxapp-SDK | 柳橙汁 | [GitHub](https://github.com/gpake/qiniu-wxapp-sdk/blob/master/README.md) |
## 社区插件 [#社区插件]
| 插件 | 适用场景 | 链接 |
| ------------------- | ----------- | -------------------------------------------------------- |
| AutoScaleDnspodTool | CDN 自动切量 | [GitHub](https://github.com/dagedaniao/AutoDnsPodScript) |
| HadSky 插件 | 轻论坛附件存储 | [文档](http://www.hadsky.com/read-306-1.html) |
| qnupload | 多 bucket 上传 | [GitHub](https://github.com/cheneydc/qnupload) |
| Drupal 插件 | 内容管理系统 | [文档](https://groups.drupal.org/node/354683) |
| Opoopress 插件 | 静态博客部署 | [文档](http://opoo.org/deploy-opoopress-to-qiniu/) |
| Django 插件 | Django 存储后端 | [GitHub](https://github.com/piglei/django-qiniu) |
| Ueditor 插件 | 编辑器图片上传 | [文档](http://my.oschina.net/duoduo3369/blog/174655) |
| Solo 插件 | Java 博客系统 | [文档](http://symphony.b3log.org/article/1385649507137) |
| PaperClip (Ruby) | Ruby 附件上传 | [GitHub](https://github.com/lidaobing/paperclip-qiniu) |
| Backup to Qiniu | 数据备份 | [GitHub](https://github.com/lidaobing/backup2qiniu) |
| Ueditor(php) | PHP 编辑器图片上传 | [GitHub](https://github.com/widuu/qiniu_ueditor_1.4.3) |
| React Qiniu | React 上传组件 | [GitHub](https://github.com/lenage/react-qiniu) |
| Joomla 插件 | 图片视频媒体管理 | [文档](http://www.zmax99.com/doc/com-zmaxcdn/peizhi-qiniu) |
| WordPress 插件 | KODO 附件存储 | [文档](https://qq52o.me/2741.html) |
# 官方 SDK (/sdk-tools/sdk)
# 官方 SDK [#官方-sdk]
## 对象存储 SDK [#对象存储-sdk]
### 服务端 [#服务端]
| SDK | 安装 | 文档 |
| ------- | ---------------------------------------------------------------- | ----------------------------- |
| Java | [java-sdk](https://github.com/qiniu/java-sdk/releases) | [文档](/products/kodo/0-java) |
| Go | [go-sdk](https://github.com/qiniu/go-sdk) | [文档](/products/kodo/go) |
| Node.js | [nodejs-sdk.v6](https://github.com/qiniu/nodejs-sdk.v6/releases) | [文档](/products/kodo/nodejs) |
| Python | [python-sdk](https://github.com/qiniu/python-sdk/releases) | [文档](/products/kodo/2-python) |
| PHP | [php-sdk](https://github.com/qiniu/php-sdk/releases) | [文档](/products/kodo/php) |
| C# | [csharp-sdk](https://github.com/qiniu/csharp-sdk/releases) | 文档 |
| C/C++ | [c-sdk](https://github.com/qiniu/c-sdk/releases) | [文档](/products/kodo/3-cpp) |
| Ruby | [ruby-sdk](https://github.com/qiniu/ruby-sdk/releases) | [文档](/products/kodo/4-ruby) |
| Rust | [rust-sdk](https://github.com/qiniu/rust-sdk) | [文档](/products/kodo/6-rust) |
### 客户端 [#客户端]
| SDK | 安装 | 文档 |
| --------------------- | ------------------------------------------------------------ | --------------------------------------- |
| JavaScript | [js-sdk](https://github.com/qiniu/js-sdk/releases) | [文档](/products/kodo/javascript) |
| Android | [android-sdk](https://github.com/qiniu/android-sdk/releases) | [文档](/products/kodo/android) |
| Objective-C (iOS/Mac) | [objc-sdk](https://github.com/qiniu/objc-sdk/releases) | [文档](/products/kodo/1-objc) |
| Flutter | [dart-sdk](https://github.com/qiniu/dart-sdk) | [文档](/products/kodo/5-flutter-sdk) |
| 鸿蒙 | [js-sdk](https://github.com/qiniu/js-sdk) | [文档](/products/kodo/8-kodo-harmony-sdk) |
## 音视频 SDK [#音视频-sdk]
| 场景 | 平台 | 安装 | 文档 |
| --- | ------- | ------------------------------------------------------------------------------------------- | ---------------- |
| 推流 | iOS | [PLMediaStreamingKit](https://github.com/pili-engineering/PLMediaStreamingKit/releases) | [文档](/sdk-tools) |
| 推流 | Android | [PLDroidMediaStreaming](https://github.com/pili-engineering/PLDroidMediaStreaming/releases) | [文档](/sdk-tools) |
| 连麦 | iOS | [QNRTC-iOS](https://github.com/pili-engineering/QNRTC-iOS) | [文档](/sdk-tools) |
| 连麦 | Android | [QNRTC-Android](https://github.com/pili-engineering/QNRTC-Android) | [文档](/sdk-tools) |
| 短视频 | iOS | [PLShortVideoKit](https://github.com/pili-engineering/PLShortVideoKit/releases) | [文档](/sdk-tools) |
| 短视频 | Android | [PLDroidShortVideo](https://github.com/pili-engineering/PLDroidShortVideo/releases) | [文档](/sdk-tools) |
移动端和音视频 SDK 接入前,建议同时查看 [SDK 隐私声明](/products/mikustream/2-privacy-policy) 与 [SDK 合规说明](/products/mikustream/1-compliance-instructions)。
# 开发者工具 (/sdk-tools/tools)
基于七牛 API 服务的命令行工具,适合批量上传、下载、同步和资源管理。
对象存储图形化管理工具,适合人工管理 bucket 和对象资源。
用于排查上传慢、上传失败和网络连通性问题。
自定义数据处理命令行工具。
## 使用建议 [#使用建议]
| 场景 | 推荐工具 |
| ----------- | ------------------------------------------------------------------------- |
| 批量上传、下载、同步 | [qshell](/products/kodo/0-qshell) |
| 图形化查看和管理对象 | [Kodo Browser](/products/kodo/1-kodo-browser) |
| 上传失败、上传慢排查 | [上传诊断工具](/products/kodo/diagnostic-tools/0-upload-webtest) |
| 自定义数据处理任务管理 | [qdoractl](/products/dora/processing-mechanism/1-directions-for-use-pfop) |
# API 说明 (/account/access-management/0-iam-api-introduction)
最近更新时间: 2026-05-06 17:55:34
# 请求说明 [#请求说明]
## 域名 [#域名]
请求域名为 api.qiniu.com
## 鉴权 [#鉴权]
IAM 接口鉴权同七牛其他服务一样,使用 Authorization 头鉴权,用于验证请求合法性的认证信息。该头部应严格按照[管理凭证](/products/kodo/development-guidelines/security/access-token)进行填充,否则会返回 401 错误码。例如 `Authorization: Qiniu j853F3bLkWl59I5BOkWm6q1Z1 ...` 或 `Authorization: UpToken QNJi_bYJlmO5LeY08FfoNj9w_r...`。
## 接口规格 [#接口规格]
请参考 [IAM go-SDK API](https://github.com/qiniu/go-sdk/tree/master/iam)
## 示例请求 [#示例请求]
```shell
curl https://api.qiniu.com/iam/v1/users -H "Authorization: Qbox j853F3bLkWl59I5BOkWm6q1Z1 ..."
```
# IAM 简介 (/account/access-management/0-iam-introduction)
最近更新时间: 2026-05-06 17:12:21
# 综述 [#综述]
**权限管理系统(Identity & Access Management,IAM)** 为用户提供了管理账号下资源访问控制的能力。
在系统中,根用户通过创建和分配虚拟账号(IAM User)来将自己对资源的访问权限共享给其他用户,通过配置策略(Policy)并应用到用户(User)/ 用户组(User Group)实现对资源访问的管理。
# 主要概念 [#主要概念]
## 根用户(Root User) [#根用户root-user]
根用户是在七牛开发者管理平台(portal.qiniu.com)注册的用户,拥有 UID,是七牛云服务各产品都能识别的用户。
## IAM 用户 [#iam-用户]
IAM 用户是由根用户创建的虚拟账户,IAM 用户的身份根据被赋予的权限以其对应的根用户的身份来操作资源。
## 用户组(User Group) [#用户组user-group]
用户组用于组织拥有相同权限的用户,降低权限管理的维护难度。
## 权限(Permission) [#权限permission]
权限决定了被授权的用户是否拥有对某个(些)资源执行某个操作的权力。
> 权限 = 效果(Effect) + 动作(Action) + 资源(Resource)
所有虚拟账号在未被授权时没有对任何资源执行任何操作的权利。
### 效果(Effect) [#效果effect]
效果决定了一条权限所描述内容的是肯定(Allow)语义还是否定(Deny)语义。
例如:
* Effect = Allow: 显式授予用户某个权限
* Effect = Deny: 显式拒绝用户某个权限
### 动作(Action) [#动作action]
动作描述了对特定资源的一个操作。
例如:
* Action = ListDomains: 列举域名列表
* Action = CreateDomain: 创建一个新的域名
* Action = \*: 所有操作
### 资源(Resource) [#资源resource]
资源是用户在七牛使用的具体云服务产品。
资源由七牛资源名称(Qiniu Resource Names, QRN)表示,格式为:
> qrn:product:zone:uid:resource
各部分含义是:
* qrn: 统一标识前缀
* product: 七牛产品
* zone: 七牛可用区
* uid: 七牛用户 uid
* resource: 具体资源定义,由各产品线规定(AWS ARN的参考)
例如:
* Resource = qrn:cdn::123456789:domain/iamtest.cn: 用户 123456789 在 cdn 上配置的对应唯一 id 为 iamtest.cn 的域名
* Resource = qrn:kodo:nb:123456789:my\_bucket/path/to/example.jpg: 用户 123456789 在 kodo 上名为 my\_bucket 的空间下的文件 path/to/example.jpg
* Resource = \*: 所有资源
* 实际请求中,为了简化,一般会省略 zone 和 uid,资源 QRN 定义一般为 qrn:product:::resource(如 qrn:cdn:::domain/iamtest.cn),表示用户在产品 cdn 上配置的域名 iamtest.cn
### 策略(Policy) [#策略policy]
策略是定义权限的载体,通过策略可以声明一个或多个权限,并应用到用户/用户组上。
权限不能以孤立于策略之外的形式存在。
以下是一个策略的示例:
```
{
"data": {
"Statement": [{
"Effect": "Allow",
"Action": [
"cdn/CreateDomain",
"cdn/UpdateDomain"
],
"Resource": [
"qrn:cdn:::domain/www.qiniu.com",
"qrn:cdn:::domain/www.qiniu.io"
]
}]
}
}
```
# 支持审计日志的云服务事件 (/account/audit-log/0-audit-log-events)
最近更新时间: 2023-05-09 15:05:28
本文为您介绍支持审计日志的云服务事件。
# 日志结构定义 (/account/audit-log/0-audit-log-object)
最近更新时间: 2023-05-09 15:05:33
本文为您介绍审计日志的关键字段解释。
## 关键字段 [#关键字段]
| 名称 | 类型 | 描述 |
| ----------------------- | --------------- | -------------------------------------------------------------- |
| event\_id | String | 日志 ID |
| event\_type | String | 事件类型:
- UNKNOWN:未知
- CONSOLE:控制台事件
- API:API 事件 |
| event\_time | String | 事件发生时间(UTC 格式) |
| user\_identity | UserIdentity | 请求者的身份信息 |
| event\_rw | String | 读写类型:
- UNKNOWN:未知
- READ:读
- WRITE:写 |
| service\_name | String | 服务名称 |
| event\_name | String | 事件名称 |
| source\_ip | String | 源 IP 地址 |
| user\_agent | String | 客户端代理 |
| resource\_names | Array of String | 操作的资源名称列表 |
| request\_id | String | 请求 ID |
| request\_url | String | 请求 URL |
| request\_params | String | 请求的输入参数 |
| response\_data | String | 请求的返回数据 |
| response\_code | Integer | 请求的返回码 |
| response\_message | String | 请求的返回信息 |
| additional\_event\_data | String | 额外备注信息 |
**UserIdentity**
| 名称 | 类型 | 描述 |
| --------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------- |
| account\_id | String | 当前请求所属的七牛云账号 ID |
| principal\_id | String | 当前请求者的 ID,需结合 principal\_type 来确认请求者身份 |
| principal\_type | String | 请求者身份类型:
- UNKNOWN:未知
- ROOT\_USER:七牛云账号 ID
- IAM\_USER:IAM 子账号 ID
- QINIU\_ACCOUNT:当七牛云账号跨账号操作时,记录七牛云账号 ID |
| access\_key\_id | String | 当前请求身份所属的 AccessKey ID |
# 下载账单 (/account/bill-management/0-bill-download)
最近更新时间: 2026-05-08 17:20:20
### (1)下载多月账单汇总金额与支付情况 [#1下载多月账单汇总金额与支付情况]

### (2)下载账单详情 [#2下载账单详情]
支持下载 PDF 或 XLSX

### (3)下载账单列表与按账号汇总账单 [#3下载账单列表与按账号汇总账单]
仅支持财务管理主账号或管理员账号下载按账号汇总账单

# 查看账单 (/account/bill-management/0-bill-review)
最近更新时间: 2024-11-27 16:17:57
## 账单范围 [#账单范围]
账单包含按量计费产品和包年包月(订单)产品费用。
## 出账时间 [#出账时间]
每月第四个自然日出上月账单,请在每月出账后查看完整账单。如 8 月账单,请在 9 月 4 日后查看
## 扣费时间 [#扣费时间]
出账后立即触发扣费,您可在收支明细查看扣费详情。
## 账单查看 [#账单查看]
位置:财务中心-账单管理-账单
账单概览:查看汇总账单金额,总体支付情况,点击「查看详情」按钮可查看账单更细粒度信息。

账单列表:支持按产品、账号(若财务管理主账号或管理员账号)汇总。

还款明细:支持查看某笔充值支付的对应月份账单

# 按量计费预估明细 (/account/bill-management/0-real-spending-detail)
最近更新时间: 2026-04-30 17:45:37
目前按量付费资源采取月结算模式,对于还未出账结算的资源,系统每天将根据用户已使用的用量进行计费,生成按量计费预估明细,用户可以通过该明细来了解按量付费(后付费)资源的消耗情况。并且,在账户内会暂时冻结实时消费金额,冻结的金额并未实际消耗,月账单出账扣费后,按量计费预估金额将重新调整。
# 一 管理页面 [#一-管理页面]
登录七牛云管理控制台,进入 财务中心 > [按量计费预估](https://portal.qiniu.com/financial/bills/estimated-consume)。

# 二 计费说明 [#二-计费说明]
**1.计费对象。**
已使用未出账结算的按量付费资源。
**2.计费周期。**
计费周期是从未出账月份1号0:00至当天0:00。可根据上月账单是否出账,分为两种情况:
上月账单已出账时:计费周期是从本月1号0:00至当天0:00。
上月账单未出账时:计费周期是从上月1号0:00至当天0:00。
**3.计费算法。**
* 流量:本月累计到当天的流量乘以阶梯价格计费。
* 标准存储空间、低频存储空间:当月平均存储量按阶梯价格计费,再乘当月已发生天数除以当月总天数得出的费用。
示例:
截止至2019-09-14 的存储空间费用,假设存储空间的单价为 P元/GB/月。
9月平均存储空间量=(9月1号存储空间量+9月2号存储空间量+…+9月13号存储空间量)/13
9月已发生天数13天,9月总天数30天。
已产生的费用为:9月平均存储空间量\*P\*13/30 元。
* 带宽计费。
日带宽:每天的每5分钟打点取带宽计费点再按阶梯价格计费,再累加每天的计费。
月带宽:按当月已发生天数的每五分钟打点取带宽计费点,再按阶梯价格计费,再按当月天数折算。
示例:
客户按月峰值计费,截止至2019-09-14 9月份的月峰值为 X Mbps,单价为 P 元/Mbps。
9月已发生天数13天,9月总天数30天。
已产生的费用为:X\*P\*13/30 元。
**4.流量抵扣说明。**
抵扣顺序:免费额度→资源包。
产生计量后,系统会优先抵扣符合条件的免费额度和资源包,超出部分的计量再按阶梯价格计费。
# 三 更新时间和频率 [#三-更新时间和频率]
**1.更新时间。**
每天更新:每天凌晨系统会开始更新预估实时消费明细,一般上午8点更新完毕,请您以上午8点后的数据为准。
出账后立即更新:当实时消费明细包含的计费月份正式出账后,实时消费明细会立即更新为本月实时消费。
**2.更新频率。**
每天更新一次。
# 四 特别说明 [#四-特别说明]
**1.按量计费预估不是最终账单费用。**
遇到计费周期不足整月、用户购买资源包、供应商日志延迟等情况,按量计费预估明细可能会和最终账单金额有些出入,因此按量计费预估明细仅做参考。
**2.按量计费预估明细的计费算法与账单的计费算法不完全一致。**
# 分账账单 (/account/cost-center/0-separate-bill)
最近更新时间: 2023-02-08 20:46:12
# 介绍 [#介绍]
### 概述 [#概述]
分账账单将账单金额分拆至资源粒度,目前支持将存储、CDN 账单金额分别分拆至存储空间、域名粒度。
### 应用场景 [#应用场景]
可用于财务成本核算,项目 / 部门单独计算成本,为您企业内部成本分摊提供参考(不作为对账依据)。
### 分账账单三种展示形式 [#分账账单三种展示形式]
1、分账明细
将账单中计费项金额按照组成该计费项的存储空间 / 域名用量分摊。

2、按资源汇总
将分账明细分别按照存储空间、域名汇总。

3、按标签汇总
将分账明细按预先设置好的分账标签汇总。

# 操作流程 [#操作流程]
### 1、开启分账账单 [#1开启分账账单]
联系商务或提交工单,开启分账功能。开启分账功能后才能看到分账账单页面。
### 2、生成分账账单 [#2生成分账账单]
每月出账后系统自动生成分账账单,推荐每月第 5 日起查看。
### 3、查看 / 下载分账账单 [#3查看--下载分账账单]
您可在分账账单页面自助查看 / 下载相应的分账账单。



# 分账标签 (/account/cost-center/0-separate-tag)
最近更新时间: 2026-05-08 17:43:52
# 介绍 [#介绍]
### 概述 [#概述]
分账标签作为分账账单的辅助功能,方便您将分拆后的账单按分账标签汇总。目前仅支持将存储标签设置为分账标签。
### 应用场景 [#应用场景]
用户域名 / 存储空间数量较多,并且希望按不同层级分摊账单金额。如按照“项目 - 部门 - 分公司”分别分摊账单金额。
### 使用方式 [#使用方式]
1、【按标签汇总】页面可查看 / 下载按分账标签汇总后的金额。

2、分账标签会作为单独一列展示在【分账明细】、【按资源汇总】页面中,可下载后按分账标签筛选汇总。

# 操作流程 [#操作流程]
### 1、开启分账功能 [#1开启分账功能]
联系商务或提交工单,开启分账功能。开启分账功能后才能看到分账标签页面。
### 2、查看详情 [#2查看详情]
点击【详情】按钮,可查看标签与资源绑定情况。


### 3、设置分账标签 [#3设置分账标签]
设置时间:每月月末 24:00 前设置的分账标签才能在当月分账账单中展示,例如 6月30日 24:00 前设置的分账标签才能在 6 月分账账单中展示。
设置数量:最多可设置 15 个分账标签。

### 4、新增 / 修改 / 删除标签 [#4新增--修改--删除标签]
新增 / 修改标签请前往相应的产品线页面设置,设置后会自动同步到分账标签页面。
若在产品线页面删除标签,则在分账标签页面也会自动删除该标签,无论该标签是否设置为分账标签。
### 5、查看/下载分账账单 [#5查看下载分账账单]
【按标签汇总】页面可查看 / 下载按分账标签汇总后的金额。
分账标签也会作为单独一列展示在【分账明细】、【按资源汇总】页面中,可下载后按分账标签筛选汇总。

# 产品简介 (/account/enterprise-account-management/0-product-description)
最近更新时间: 2024-08-15 19:11:34
七牛云企业账号管理是为企业用户提供的多账号集中管理服务。企业用户可以创建组织并邀请其他账号加入组织,集中管理组织内账号的账单、转账支付等财务功能,更好地满足企业管理便捷性、安全性和合规性需求。

### **管理员账号** [#管理员账号]
指对组织中所有成员账号拥有最高管理权限的账号,创建组织的账号自动成为管理员,且管理员角色不能移交给其他账号。管理员账号具有成员账号管理和成员财务管理的权限。
### **成员账号** [#成员账号]
除管理员账号之前,其余账号均为成员账号,由管理员邀请进入组织,接受管理员统一管理。
### **成员账号管理** [#成员账号管理]
邀请成员账号加入组织:只有管理员账号可以邀请其他账号加入组织,成为成员账号。若邀请财务主账号,需对方接受邀请。若邀请财务从账号则需要主账号和从账号都接受邀请。
移除成员账号:在成员账号符合删除条件的情况下,管理员账号可以移除成员账号。
### **成员财务管理** [#成员财务管理]
查看成员账号月结算单:管理员账号可查看成员账号月结算单。(暂时不支持查看“实时消费明细”。)
查看成员账号可用额度:管理员账号可查看成员账号的现金余额、赠送金余额、信用额度、欠费金额、实时消费金额。
划拨资金:管理账号可为成员账号划拨资金。应用:因财务主账号会为从账号自动支付欠费,当组织内有多个主账号时,可统一充值给管理员账号,再为其他主账号统一划拨。
回收资金:划拨资金未使用时,管理员账号可将其回收。
设置汇总可用额度预警:汇总可用额度是针对一组主从账号整体计算的。管理员账号可设置某组主从账号的汇总可用额度阈值,当额度低于该阈值时,为管理员发送通知,提醒管理员为其他主账号划拨资金。
### **财务主/从账号&财务模式** [#财务主从账号财务模式]
财务管理主从账号:主账号和从账号分别出各自账单,主账号可查看从账号账单。从账号支付订单或按量计费产品时,优先使用从账号自己资金抵扣,当从账号余额不足时系统自动划拨主账号的资金为从账号支付。
财务托管主从账号:从账号本身无账单,用量自动合并到主账号上统一出账。从账号支付订单时用主账号余额支付,不能使用自己钱包支付。
# 提现 (/account/fund-management/0-withdrawal-instructions)
最近更新时间: 2026-09-18 17:58:32
### 重要提示:为保障您的资金安全,所有充值只能退回到原充值账号。 [#重要提示为保障您的资金安全所有充值只能退回到原充值账号]
# 提现方式 [#提现方式]
### 原路提现 [#原路提现]
* 微信充值(充值时间小于 330 天)
* 支付宝充值(充值时间小于 330 天)
* 网上银行充值(充值时间小于 80 天)
### 线下提现 [#线下提现]
* 银行转账
* 超出线上渠道退款时间导致无法原路提现的充值
### 商务申请 [#商务申请]
* 转账金额请提交工单或联系商务为您申请
# 到账时效 [#到账时效]
* 原路提现:预计需要3\~15个工作日,遇节假日顺延
* 线下提现:预计需要5\~15个工作日,七牛打款后具体到账时间以银行为准
# 特别说明 [#特别说明]
* 若充值金额已经开票,请您先[申请退票](/account/invoice-management/0-invoice-refund)再申请提现
* 申请提现前请先清理资源,并在申请时自行扣除实时消费金额
* 因存在实时消费,审核人员会根据实时消费情况调整提现金额,因而最终打款金额和申请金额有不一致的可能性
* 因账号违法违规触发冻结,无法直接申请提现,请先进行账号申诉,在[申诉平台](https://www.qiniu.com/appeal)申诉解冻,解冻完成后才可以提现
# 提现操作指引 [#提现操作指引]
### 位置:财务中心-财务概览-提现 [点击前往](https://portal.qiniu.com/financial/withdraw) [#位置财务中心-财务概览-提现-点击前往]
1、根据充值特征选择提现方式

2、选择充值流水并填写提现金额

3、请填写原因方便我们提供更好的服务,线下提现需要填写银行收款账户
未认证用户可申请原路提现,但不可自助申请线下提现,请先认证或联系商务为您申请

4、点击【提交】等待内部人员为您审核

注:海外账号如需提现需要提交工单联系技术支持或联系商务经理进行处理
# 如何进行企业认证? (/account/identity-verification/0-enterprise-certification-started-quickly)
最近更新时间: 2026-07-08 10:24:02
企业账号认证有两种认证方式:企业银行卡打款认证、企业法人/被授权人扫脸验证。
注:目前暂不支持事业单位和律师事务所进行法人认证,如需认证请选择银行转账验证方式;工商变更或注册时间不超过 14 天的企业请选择银行转账验证方式
**在七牛控制台进入 [实名认证](https://portal.qiniu.com/developer/user/identity) 界面提交认证资料即可。**
# 银行转账验证 [#银行转账验证]
## 第一步 [#第一步]
**填写企业信息和财务信息**
* 请确保证件照清晰。
* 请填写开户银行与支行。
* 可使用社会信用码、营业执照、非营利组织的证件进行认证。
* 企业名称需和营业执照及银行对公账号的企业名称保持一致。
* 若所提供的证件是复印件需要加盖公司公章。



## 第二步 [#第二步]
**待审核**
七牛云将在 3 个工作日内完成基本信息的审核,审核结果会以短信的方式通知。
## 第三步 [#第三步]
**待汇款**
七牛云将在 3 个工作日内向您所填写的银行卡里面打一笔0.01~0.99 元之间的小额款项,请在收到款项后,回填打款金额完成认证。
## 第四步 [#第四步]
**待验证收款**
## 第五步 [#第五步]
**认证完成**
# 法人/被授权人扫脸验证 [#法人被授权人扫脸验证]
## 第一步 [#第一步-1]
**填写企业信息和认证人信息**
* 请准备好企业营业执照等企业证件,目前支持社会信用码、营业执照、非营利组织的证件进行认证。
* 若所提供的证件是复印件需要加盖公司公章。
* 上传营业执照扫描件,系统会识别证件自动填写企业名称和证件号,检查系统识别的名称和证件号,可手动更正。
* 填写产品和行业信息
* 选择您的身份是法人或被授权人,若选择被授权人需要填写法人信息并上传授权书
* 提交表单

## 第二步 [#第二步-1]
**点击“立即提交”,弹出用于人脸认证的二维码**

## 第三步 [#第三步-1]
**用手机微信扫描二维码进行人脸认证**
* 营业执照和人脸认证没问题直接认证成功
* 营业执照或用户信息不匹配会进入人工审核,三个工作日内审核完成

# 如何进行企业认证变更? (/account/identity-verification/0-how-to-make-enterprise-certification-changes)
最近更新时间: 2026-09-18 17:46:44
企业账号认证变更有两种方式:变更企业认证名称;变更企业认证主体。
# 变更企业认证名称 [#变更企业认证名称]
企业名称变更认证仅公司名称发生了变更。企业账号变更企业名称,需要上传变更后的企业证件扫描件。
## 第一步 [#第一步]
进入“个人中心”页面,选择“[实名认证](https://portal.qiniu.com/developer/user/identity)”,选择“变更企业名称”。

## 第二步 [#第二步]
进入“变更企业名称”页面。填写变更后的企业信息,并上传企业名称变更认证的材料。

## 第三步 [#第三步]
单击“提交认证”,进入认证审核页面。您的企业认证变更申请已提交,七牛将在 3 个工作日内完成审核。请耐心等待审核结果,审核成功,变更即可生效。
# 变更企业认证主体 [#变更企业认证主体]
企业主体变更是指变更前与变更后的企业不是同一主体,资源与资金的归属主体发生了变更。企业账号变更企业主体,需要填写企业认证变更申请表,并上传已实名认证的材料和新认证的材料。
## 第一步 [#第一步-1]
进入“个人中心”页面,选择“[实名认证](https://portal.qiniu.com/developer/user/identity)”,选择“变更企业实体”。

## 第二步 [#第二步-1]
进入“变更企业实体”页面。根据页面提示,填写变更后的企业信息并上传已实名认证的材料和新认证的材料。
变更申请表模板为word文件格式,上传的附件格式不支持word,上传时需转换为照片。

## 第三步 [#第三步-1]
单击“提交认证”,进入认证审核页面。您的企业认证变更申请已提交,七牛将在 3 个工作日内完成审核。请耐心等待审核结果,审核成功,变更即可生效。
# 原企业注销变更申请需要提交工单沟通 [#原企业注销变更申请需要提交工单沟通]
# 如何进行个人认证? (/account/identity-verification/0-quick-start-personal-authentication)
最近更新时间: 2026-07-08 10:23:43
个人认证有三种认证方式:个人扫码认证;个人银行卡转账认证;个人银行卡认证
**在七牛控制台进入 [实名认证](https://portal.qiniu.com/developer/user/identity) 界面提交认证资料即可。**
# **扫码认证** [#扫码认证]
扫码实名认证是通过现场对着真实本人录制视频。
视频录制成功后,系统进行活体检测及人证核身校验,校验通过立即完成认证。
# 第一步 [#第一步]
使用手机微信扫描二维码。

# 第二步 [#第二步]
手机端根据页面提示,手动输入个人身份信息。
# 第三步 [#第三步]
根据界面引导进行人脸核验。人脸识别成功,系统会提示您认证成功,人脸识别失败,系统会提示您认证失败。
PC端会同步您在手机端的认证结果。
# **银行转账验证** [#银行转账验证]
**该认证方式需填写个人信息及财务信息**
若个人信息审核无误后,七牛云会向您所填写的银行卡里面打一笔0.01~0.99 元之间的小额款项,请在收到款项后,回填打款金额完成认证。
# 第一步 [#第一步-1]
**填写个人信息和财务信息**
* 请确保持证件照清晰。
* 请填写开户银行及支行信息。
* 银行开户名需要与认证填写的身份证信息一致。


# 第二步 [#第二步-1]
**基本信息审核**
七牛云将在 3 个工作日内完成基本信息的审核,审核结果会以短信的方式通知。
# 第三步 [#第三步-1]
**待汇款**
七牛云将在 3 个工作日内向您所填写的银行卡里面打一笔0.01~0.99 元之间的小额款项,请在收到款项后,回填打款金额完成认证。
# 第四步 [#第四步]
**待验证收款**
请输入附言对应的打款金额进行认证。
注意:输错 3 次后会自动认证失败,需发起重新认证。
# 第五步 [#第五步]
**认证完成**
# **银行卡认证** [#银行卡认证]
银行卡认证是以个人客户的银行卡进行实名认证,支持个人借记卡和信用卡。个人客户可以输入银行卡信息进行实名认证。
# 第一步 [#第一步-2]
使用手机微信扫描二维码。


# 第二步 [#第二步-2]
手机端根据页面提示,拍摄完整面部照片,完成上传。
# 第三步 [#第三步-2]
返回PC端继续操作。填写完整相关信息,点击“立即提交”按钮完成认证。
# 认证说明 (/account/identity-verification/0-the-identity-authentication)
最近更新时间: 2025-06-10 10:31:21
# 简介 [#简介]
实名认证即认证使用主体身份。据《网络安全法》规定,用户必须进行实名认证,否则不得使用相关服务。
个人客户可进行个人认证或企业认证,企业客户只可进行企业认证。个人认证成功后也可升级成企业认证。企业认证成功后不可降级为个人认证。
如账号为企业使用,请务必进行企业认证。因为个人认证与企业认证在账号归属上有极大不同,同时遇到人员变更或账号财务纠纷,错误的账号属性可能对个人/企业产生不良影响或带来经济损失。
# 注意事项 [#注意事项]
| 实名认证细则须知 |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 银行转账认证需先审核基本信息,所有银行信息请务必填写正确并精确到具体支行。审核通过后七牛将往填写的银行信息中汇入一笔小额认证款项,您在收到款项后在七牛认证界面回填正确的收款金额即可完成认证。如银行汇款失败或回填金额不正确,认证将自动失败。(该认证如在工作日15:00之前提交,可当天处理完成。15:00点之后提交则需隔天处理完成,如遇周末或法定节假日将自动顺延。) |
| 目前仅支持使用中国大陆身份证及营业执照进行认证,海外用户或其它需求客户请[提交工单](https://support.qiniu.com/tickets/category)或联系您专属销售经理。 |
***
# 快速入门 [#快速入门]
* **[如何进行个人认证](/account/identity-verification/0-quick-start-personal-authentication)**
* **[如何进行企业认证](/account/identity-verification/0-enterprise-certification-started-quickly)**
# 发票申请 (/account/invoice-management/0-invoice-application)
最近更新时间: 2026-05-08 17:12:52
## 相关提示 [#相关提示]
1、开票金额为 1000 元以上时才可申请开具增值税专用发票。
2、申请发票金额小于 100 元需支付快递费 5 元,快递费将在现金账户中扣除;超过 100 元免收快递费。
3、每月前 3 个工作日为账期,在此期间的开票申请需等到当月第 4 个工作日方可开票。
4、申请开票前请先设置默认开票信息。普通发票填写后即可开票,专用发票需审核后才可开票。审核需要 1\~3 个工作日。
5、企业索取增值税普通发票时,应提供纳税人识别号或统一社会信用代码,否则不得作为税收凭证。
6、增值税专用发票抬头需要和企业实名认证抬头一致。[增值税专用发票抬头说明](/faq/account-finance/6434-special-invoices-for-value-added-tax-payable-to-illustrate)
7、[退票说明](/account/invoice-management/0-invoice-refund)。
8、响应税务机关要求,支持您申请开具电子(数电)专票/普票,其法律效力、基本用途、基本使用规定等与纸质发票相同。若您需要纸质发票请联系商务或提交工单为您处理。
## 操作地址 [#操作地址]
控制台 > 财务中心 >发票管理 [点击前往](https://portal.qiniu.com/financial/invoice)
## 操作步骤 [#操作步骤]
### 第一步 添加开票信息 [#第一步-添加开票信息]
点击【开票信息管理】,添加开票信息。增值税普通发票的开票信息填写后无需审核,专用发票开票信息需要人工审核通过后才能使用。

### 第二步 设置默认开票信息 [#第二步-设置默认开票信息]
将本次开票需要使用的开票信息设为默认开票信息。(增值税专用发票只有通过审核后才可设为默认开票信息)

### 第三步 申请开票 [#第三步-申请开票]
返回发票管理页面,点击【申请开票】按钮进入发票申请页面,勾选 6 个月之内的充值流水。

### 第四步 填写交付邮箱 [#第四步-填写交付邮箱]
开票后将开出的电子发票发送至该邮箱,支持下载 PDF、OFD、XML 格式。

### 第五步 提交申请 [#第五步-提交申请]
等待相关业务人员为您审核、开票,约 1~3 个工作日。
# 发票获取 (/account/invoice-management/0-invoice-obtained)
最近更新时间: 2023-11-02 11:01:33
### 电子发票 [#电子发票]
* 平台下载:发票开出后,您可在发票列表下载电子发票,支持下载 PDF 格式。

* 邮箱交付:若您申请时填写了交付邮箱,电子发票开出后会发送至该邮箱,支持下载 PDF、OFD、XML 格式。
### 纸质发票 [#纸质发票]
通过快递邮寄到您申请开票时填写的地址,可通过快递编号查看快递信息。
# 退票说明 (/account/invoice-management/0-invoice-refund)
最近更新时间: 2023-11-13 17:30:15
## 一 电子(数电)发票 [#一-电子数电发票]
### 1.1 专票 [#11-专票]
填写的《增值税专用发票退票说明(数电)》([点击下载](https://static.qiniu.com/invoice_electric/%E5%A2%9E%E5%80%BC%E7%A8%8E%E4%B8%93%E7%94%A8%E5%8F%91%E7%A5%A8%E9%80%80%E7%A5%A8%E8%AF%B4%E6%98%8E%EF%BC%88%E6%95%B0%E7%94%B5%EF%BC%89.doc)),联系商务或创建工单提交退票申请。
【注】使用增值税发票综合服务平台开票的客户,要特别注意,申请专票(已抵扣)退票时,需由我司发起红冲,客户方系统确认后,才能开负数发票。

### 1.2 普票 [#12-普票]
填写的《增值税普通发票退票说明(数电)》([点击下载](https://static.qiniu.com/invoice_electric/%E5%A2%9E%E5%80%BC%E7%A8%8E%E6%99%AE%E9%80%9A%E5%8F%91%E7%A5%A8%E9%80%80%E7%A5%A8%E8%AF%B4%E6%98%8E%EF%BC%88%E6%95%B0%E7%94%B5%EF%BC%89.docx)),联系商务或创建工单提交退票申请。
## 二 纸质发票 [#二-纸质发票]
### 2.1 专票 [#21-专票]
填写《增值税专用发票退票说明(纸质)》([点击下载](https://static.qiniu.com/invoice_electric/%E5%A2%9E%E5%80%BC%E7%A8%8E%E4%B8%93%E7%94%A8%E5%8F%91%E7%A5%A8%E9%80%80%E7%A5%A8%E8%AF%B4%E6%98%8E%EF%BC%88%E7%BA%B8%E8%B4%A8%EF%BC%89.doc)),并同发票一起回寄。
收件信息
* 地址:上海浦东新区张江亮秀路81号浦东软件园Q座
* 收件人: 销售运营部
* 联系电话:18017393053
### 2.2 普票 [#22-普票]
填写《普通发票退票说明》([点击下载](https://dn-odum9helk.qbox.me/%E6%99%AE%E9%80%9A%E5%8F%91%E7%A5%A8%E9%80%80%E7%A5%A8%E8%AF%B4%E6%98%8E%E6%A8%A1%E7%89%88.pdf?attname=)),并同发票一起回寄。
收件信息
* 地址:上海浦东新区张江亮秀路81号浦东软件园Q座
* 收件人: 销售运营部
* 联系电话:18017393053
# 取消订单 (/account/order-management/0-cancel-the-order)
最近更新时间: 2022-07-27 16:18:24
1.当您下错订单且未支付时,可以通过点击【取消】按钮,对订单进行取消。
2.点击取消后会弹出本次要取消的商品订单信息,请确认无误后点击【确定】。
**注意:**
1.一但取消后,不可恢复订单。若取消错误,请重新购买;
2.通过购物车合并下单的订单,取消时会一并取消,请注意弹出的商品信息。
# 导出订单 (/account/order-management/0-export-orders)
最近更新时间: 2026-05-06 12:51:36
支持客户导出订单列表中所有订单信息,用于公司归档、分析等使用。
可前往[订单列表](https://portal.qiniu.com/financial/orders/list),筛选需要的订单点击【导出】
# 订单退款 (/account/order-management/0-order-a-refund)
最近更新时间: 2026-10-09 19:13:32
退款仅指用户以现金方式支付的订单金额,不包含代金券抵扣的部分,退订成功后退款金额将退还至账户余额或原路退还。
## 退款规则 [#退款规则]
| 退款商品类型 | 退款条件 | 退款操作 |
| ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| 资源包商品 | 1.资源包未使用:未使用指没有已出账的用量(若资源包一次性买了多个,需保证整体都没有使用,部分使用也无法退款)2.资源包未过期:资源包未到结束时间以上两个条件需同时满足,方可申请 | 联系 [工单沟通界面左下角的专属商务微信](https://support.qiniu.com/tickets) 或提交 [工单](https://support.qiniu.com/tickets) 申请 |
| 云主机 | 见[参考文档](/products/qvm/1-five-days-have-no-reason-to-refund) | 见[参考文档](/products/qvm/1-five-days-have-no-reason-to-refund) |
| 证书 | 免费域名型(DV) SSL 证书无法申请退款;已经由CA机构成功颁发的 SSL 证书,签发不超过30天的可以取消、申请退款;已完成订单支付、审核流程中非客户缘故所导致的未成功颁发的 SSL 证书可申请退款。详情见[参考文档](/products/ssl/section-i4zv20/2-ssl-a-refund-service) | 前往[证书管理列表](https://portal.qiniu.com/certificate/ssl)自助申请退款 |
| 短视频SDK | 一但授权发出,不支持退款。若有特殊情况,可咨询销售 | 联系销售或提工单咨询 |
## 退款资金流向 [#退款资金流向]
以下情况**全部满足**的情况下,退款金额会直接回到您的原支付渠道:
1. 使用通过支付宝、微信或网银支付等三方支付渠道**预付费**购买的订单(先用三方支付渠道充值余额后,用余额支付的订单不在此例);
2. 付款成功后 330 天内产生的退款;
3. 退订的订单未开过发票;
4. 用户当前可用余额大于等于 0(不包含信用额度)。
除了上述情况以外,退款金额会退至您的七牛云账户余额。您可以通过账户余额提现的方式将账户余额提现到原支付渠道。提现相关操作和规则见[提现](https://developer-doc.qiniu.com/account/fund-management/0-withdrawal-instructions)。
# 支付订单 (/account/order-management/0-payment-order)
最近更新时间: 2022-07-27 16:18:17
1.云商城/产品页/活动页面选品下单或者已经有订单的可前往[订单列表](https://portal.qiniu.com/financial/orders/list),找到需要支付的订单点击【去支付】
2.确认商品明细,若有可用抵用券可选择券后核对最终需要支付的金额,选择支付方式后点击【确认支付】
**注意:**
通过购物车合并下单或者组合售卖的多商品,支付时会自动合并,需要一并完成支付。
# 订单状态说明 (/account/order-management/0-the-order-status-shows)
最近更新时间: 2022-07-27 16:18:26
|订单状态|说明|
\|-|-|-|
|未支付|客户提交订单之后,还未支付的状态|
|已过期|客户未在支付过期时间内完成支付,订单过期,无法再进行支付|
|作废|客户自己取消或者系统自动取消的订单所处的状态|
|已支付|客户对订单进行了付款|
|后付费|客户用信用额度或者与销售申请,商品可先使用后付钱|
# 查看订单详情 (/account/order-management/0-to-view-the-order-details)
最近更新时间: 2026-05-08 17:52:23
订单详情包含订单信息、商品信息、订单金额信息等。
1.进入“订单管理”页面
2.可根据您的查询需求,通过订单列表筛选器找到目标订单,并点击【详情】
***
**注意:**
1.QVM(云主机)产品订单在上述订单管理页面可以查到,但详细的订单信息建议前往[云主机订单管理](https://portal.qiniu.com/qvm/vm/instance)界面查看,主机的订单管理会包含更多主机商品信息;
2.SSL(证书)产品订单在上述订单管理页面可以查到,但详细的订单信息及证书颁发建议前往[证书订单管理](https://portal.qiniu.com/certificate/ssl)界面查看;
3.短视频SDK产品订单在上述订单管理页面可以查到,但详细的授权信息建议前往[SDK授权管理](https://portal.qiniu.com/sdk/licenses)界面查看。
# 购买资源包 (/account/resource-package-management/0-buy-the-resource-bundle)
最近更新时间: 2026-05-06 13:57:58
主要购买方式:
* 自助下单:可通过云商城自助选择资源包进行购买[前往云商城](https://qmall.qiniu.com/?develop)
* 销售代您下单:联系您的销售经理帮您进行下单
| 资源包分类 | 资源包细分 | 购买地址 |
| ------- | --------------------------- | -------------------------------------------------------------------------------------- |
| 存储 | 国内标准存储空间(华东、华北、华南) | [去购买](https://qmall.qiniu.com/template/MTEy?spec_combo=MzA0Ng) |
| | 国内低频存储空间(华东、华北、华南) | [去购买](https://qmall.qiniu.com/template/MTEy?spec_combo=MzA3OQ) |
| | 国内归档存储空间(华东、华北、华南) | [去购买](https://qmall.qiniu.com/template/MTEy?spec_combo=MzExMg) |
| | 归档直读存储空间(华东、华北、华南) | [去购买](https://qmall.qiniu.com/template/MTEy?spec_combo=MzUxNg) |
| | 智能分层存储空间(华东、华北、华南) | [去购买](https://qmall.qiniu.com/template/MTEy?spec_combo=MzU0Mw) |
| | 外网流出流量 | [去购买](https://qmall.qiniu.com/template/MTEy?spec_combo=MzE0Mg\&ref=develop) |
| | 回源流量 | [去购买](https://qmall.qiniu.com/template/MTEy?spec_combo=MzE3NQ\&ref=develop) |
| CDN | 国内CDN加速流量 | [去购买](https://qmall.qiniu.com/template/NTI?ref=develop\&spec_combo=MTk0OA) |
| | 海外CDN加速流量 | [去购买](https://qmall.qiniu.com/template/NTU?ref=develop\&spec_combo=MjEzNA) |
| 直播、音视频类 | 标准协议直播 | [去购买](https://qmall.qiniu.com/template/MTMw?spec_combo=MzU2Mg) |
| | 超低延时协议直播 | [去购买](https://qmall.qiniu.com/template/MTMw?spec_combo=MzU3OA) |
| | 极速直播转码 | [去购买](https://qmall.qiniu.com/template/MzE?spec_combo=MTUyMg) |
| | 智能直播鉴黄 | [去购买](https://qmall.qiniu.com/template/MzQ?ref=develop\&spec_combo=MTU2Nw) |
| | 视频监控 | [去购买](https://qmall.qiniu.com/template/NDY=?ref=develop\&spec_combo=MTgxMw) |
| 视频转码 | H.264 普通转码、H.265 普通转码 | [去购买](https://qmall.qiniu.com/template/NjQ?ref=develop\&spec_combo=MjQwNw) |
| | 锐智转码 | [去购买](https://qmall.qiniu.com/template/NzA=?spec_combo=MjU4Nw) |
| | 实时转码 | [去购买](https://qmall.qiniu.com/template/MTI5?spec_combo=MzU0MA) |
| AI内容审核 | 鉴黄、鉴暴恐、鉴政、图片广告识别等 | [去购买](https://qmall.qiniu.com/template/MTA5?ref=develop\&ref=index\&spec_combo=MjkzNQ) |
| | 人脸核验(权威人脸比对、动作活体检测、防翻拍活体检测) | [去购买](https://qmall.qiniu.com/template/MTI1?spec_combo=MzQ5OQ) |
| | 票证自动识别 OCR(身份证、营业执照) | [去购买](https://qmall.qiniu.com/template/MTIy?spec_combo=MzQ2Nw) |
| | 语音识别 | [去购买](https://qmall.qiniu.com/template/MTE2?spec_combo=MzI5OA) |
| AI大模型推理 | AI 国产模型系列 | [去购买](https://qmall.qiniu.com/template/MTMx?spec_combo=MzU4NQ) |
| | AI 全球模型系列 | [去购买](https://qmall.qiniu.com/template/MTM2?spec_combo=MzYxNw) |
# 管理资源包 (/account/resource-package-management/0-manage-the-resource-bundle)
最近更新时间: 2026-05-08 18:08:12
购买了资源包以后,可以通过资源包管理页来查看资源包的详情,包括资源包名称、总量、剩余量、生效时间、失效时间、导出每月数据等。若想通过API查询资源包信息,请参见“资源包管理API”
## 1.当月概览([前往查看](https://portal.qiniu.com/financial/orders/respack-mgr/current)) [#1当月概览前往查看]
展示当月生效中的资源包在当月的用量情况,按类型汇总展示。如华东存储有2个生效中的资源包,则合并展示为存储空间-华东地区-不限时段

## 2.设置余量预警 [#2设置余量预警]
默认预警线为70%,当各个资源包类型的当月已使用量/当月总可用量>=70%时,会触发预警通知(短信、邮件),告知用户使用情况,提醒用户及时补包。同时这里也支持客户自定义预警线,自定义后会按照客户的预警线值发送信息。
## 3.导出当月明细 [#3导出当月明细]
点击导出后,自动下载当月所有可用资源包的使用数据excel文件。(注意:每月月初1\~3日出账期间,数据可能更新不及时,仅数据展示上延迟,实际计量及抵扣准确)
## 4.所有资源包([前往查看](https://portal.qiniu.com/financial/orders/respack-mgr/all)) [#4所有资源包前往查看]
这里展示用户账号下的所有购买的资源包(不包含已经退款的资源包)。可通过筛选器,快速查找目标资源包。

## 5.导出历史抵扣明细 [#5导出历史抵扣明细]
点击【所有资源包】筛选器下方的导出,即可导出历史月份资源包抵扣明细。
## 6.查看资源包详情 [#6查看资源包详情]
点击对应的资源包【详情】,即可查看该资源包的使用情况,不仅展示历史已出账的抵扣用量,当月未出账的抵扣量也会显示出来.
# 资源包常见问题 (/account/resource-package-management/0-the-resource-bundle-common-problems)
最近更新时间: 2026-07-02 10:21:37
# 简介 [#简介]
Q1、购买后,为什么实时消费产生的计费用量没有抵扣?
Q2、抵扣的量为何与购买的量不一致?
Q3、为什么我查看资源包管理显示资源包有剩余,但是却没有继续抵扣我的计费项用量?
Q4、我购买了直播流量包或视频监控流量包或海外CDN加速包,为何不能抵扣当月实时账单金额?
Q5、为什么当月实际使用CDN产品0.6GB,资源包却抵扣了1GB?
Q6、为什么新买的miku直播流量资源包无法抵扣直播云流量?
Q7、如何查询资源包抵扣规则和支持的模型或计费项?
Q8、资源包生效时间选错了,如何处理?
Q9、如何查看资源包 **适用范围和抵扣规则** ?
**Q1、购买后,为什么实时消费产生的计费用量没有抵扣?**
请先确保资源包类型与计费项是否一致,若一致,购买后数据非实时更新,一般次日查看即可。若不一致,则无法抵扣,可申请退款重买正确的资源包。
**Q2、抵扣的量为何与购买的量不一致?**
请先查看资源包详情,判断该包类型是否为融合资源包,若为融合包,需要按抵扣系数去推算是否抵扣完毕。

**具体示例**:
您购买了AI的融合包,在当月计量上产生了deepseek-r1模型输入100token、输出100toekn,则该融合包按抵扣系数,输出的抵扣系数是4,一共使用资源包500token。
**Q3、为什么我查看资源包管理显示资源包有剩余,但是却没有继续抵扣我的计费项用量?**
请您先核对下该资源包的结转方式,若为按月分配的资源包,在资源包管理中会展示结束时间为止全部用量总和,实际每月最多可抵扣的还是有固定限额,超过每月分配的限额,不能预支后面月份的容量。
**具体示例**:
购买了国内存储资源包100GB按月分配不可结转,有效期6个月,则该资源包展示总容量是100\*6=600GB,实际是按每个月分配100GB,当月最多只能用100GB。
**Q4、我购买了直播流量包或视频监控流量包或海外CDN加速包,为何不能抵扣当月实时账单金额?**
1)直播流量包:若您开通并使用了直播产品,直播产品默认是带宽计费,流量包只能抵扣流量计费,请检查您的计费方式是否为流量计费[去切换](https://portal.qiniu.com/financial/price?product=mikustream);若不是,可手动切换或联系销售、提工单更改。(注意:切换后从切换操作日当天开始走流量计费,切换前的仍按带宽计费。)

2)视频监控流量包:若您开通并使用该产品,该产品默认是带宽计费,流量包只能抵扣流量计费,请检查您的计费方式是否为流量计费[去查看](https://portal.qiniu.com/financial/price?product=qvs)。
若不是,可手动切换或联系销售、提工单更改。(注意:切换后从切换操作日当天开始走流量计费,切换前的仍按带宽计费。)

3)海外CDN通用加速包:海外通用加速包虽然是各个海外地区通用,本质上还是融合资源包,按一定抵扣系数实现多地区可用。若您的海外CDN计费项为“海外未分区”,则不可以使用该包。需要联系销售或提工单,改成海外分区计费才可以使用。
**Q5、为什么当月实际使用CDN产品0.6GB,资源包却抵扣了1GB?**
资源包最小抵扣单位为对应产品计费项的最小计量单位向上取整,各计费项的最小计量单位具体可参考官网价格页面。
**Q6、为什么新买的miku直播流量资源包无法抵扣直播云流量?**
直播云产品和miku直播是2个不同的产品,无法使用miku直播流量资源包抵扣直播云产品产生的流量费用。
**Q7、如何查询资源包抵扣规则和支持的模型或计费项?**
可以在 [资源包管理](https://portal.qiniu.com/financial/orders/respack-mgr/all) 点击 所有资源包,然后点击对应资源包的 `详情`,进去后点击 `适用范围和抵扣规则` 查看


**Q8、新购且未抵扣使用的资源包生效时间选错了,如何处理?**
可以在 [订单列表](https://portal.qiniu.com/financial/orders/list) 找到对应资源包订单号,然后添加 [工单](https://support.qiniu.com/tickets) 界面左下角的专属商务微信,联系商务沟通处理。
**Q9、如何查看资源包 **适用范围和抵扣规则** ??**
1、购买前:可以在 [云商城](https://qmall.qiniu.com/) 商品分类 - 选择对应产品后,在购买界面点击 `适用范围和抵扣规则` 查看


2、购买后:可以在 [资源包管理](https://portal.qiniu.com/financial/orders/respack-mgr) 界面找到对应资源包后,点击 `详情` - `适用范围和抵扣规则` 查看

# 资源包介绍 (/account/resource-package-management/0-the-resource-bundle-is-introduced)
最近更新时间: 2026-08-18 11:53:05
## 资源包介绍 [#资源包介绍]
资源包(预付费)是七牛针对部分云服务计费项推出的优惠产品,您可以通过购买不同的资源包来抵扣对应的计费项用量,如国内CDN中国大陆资源包可以抵扣CDN-HTTP-中国大陆、CDN-HTTPS-中国大陆、动态加速-动态请求(HTTP 协议)-中国大陆、动态加速-动态请求(HTTPS 协议)-中国大陆这四种计费项产生的用量。相较于按月付费,资源包产品在一定程度上可以节省云服务成本,享受比按月计费较低的优惠价格。
## 资源包基本类型 [#资源包基本类型]
资源包当前分为两种类型:单资源包、融合资源包,区别如下:
* 单资源包:仅能抵扣唯一一种计费项,如智能直播鉴黄资源包,仅能抵扣直播鉴黄计费项产生的用量;
* 融合资源包:购买后,可以按抵扣比例抵扣多种计费项,如国内CDN中国大陆资源包。
***
## 资源包结转方式 [#资源包结转方式]
|结转方式类型|举例|
\|-|-|-|
|一次性分配|资源包容量为100GB。客户购买后一次性下发100GB,在有效期内可使用,过期后未用完的作废。|
|按月分配可结转|资源包容量为100GB/月 1年有效期,客户购买后,每月下发100GB,当月未用完的量会结转到次月,共发12个月。|
|按月分配不可结转|资源包容量为100GB/月 1年有效期,客户购买后,每月下发100GB,共发12个月。当月未用完的量,月底清零,次月继续下发100GB。|
***
## 资源包有效期 [#资源包有效期]
资源包下单时需要客户选择:当月1日生效或次月1日生效。
| 选项 | 说明 | 举例 |
| ------ | ------------------------------------- | ------------------------------------------------------------------------------ |
| 当月1日生效 | 无论在当月中的哪一天购买,均可抵扣当月1日0点开始以后产生的对应计费项用量 | 购买时间为2022年8月13日,选择当月1日生效,1年有效期。则该资源包有效期为\[2022年8月1日0点\~2023年8月1日 0点)注意:左闭右开区间。 |
| 次月1日生效 | 无论在当月中的哪一天购买,均可抵扣次月1日0点开始以后产生的对应计费项用量 | 购买时间为2022年8月13日,选择次月1日生效,1年有效期。则该资源包有效期为\[2022年9月1日0点\~2023年9月1日 0点)注意:左闭右开区间。 |
**注意:**
资源包未到开始时间或者超过结束时间均不可用于抵扣计费项用量。超过结束时间后,该资源包将过期,即使剩余也不再可用。
***
## 特殊时段资源包 [#特殊时段资源包]
部分资源包,如CDN、直播产品提供选择【闲时段】、【日间时段】、【忙时段】等特殊时间段的资源包,购买时请注意:特殊时段的资源包仅能抵扣标注时段区间的对应计费项用量。
**具体示例**:
如购买CDN日间时段包,则仅能抵扣CDN对应计费项在9:00~18:00期间产生的用量。当您购买多种时段包时,具体的抵扣顺序可见:[资源包抵扣逻辑](/account/resource-package-management/0-the-resource-bundle-logic-deduction)
# 资源包抵扣逻辑 (/account/resource-package-management/0-the-resource-bundle-logic-deduction)
最近更新时间: 2024-08-29 18:00:55
资源包支持叠加购买,若您有多个相同类型的资源包以及免费额度,则抵扣顺序为:
**免费额度 > 特殊时段(日间、闲时) > 全时段 > 过期时间 > 资源包类型(非融合/融合)**
即同类型的资源包抵扣顺序先后为:
1. 抵扣实名认证用户每月享有的免费流量额度
2. 根据流量的时间判断产生的流量类型为 闲时/日间/全时段 流量,优先抵扣 闲时/日间 流量包,后抵扣 全时段 流量包
3. 抵扣全时段资源包
4. 按资源包到期时间,优先抵扣快到期月份的资源包
5. 按照资源包类型, 优先抵扣【非融合资源包】再抵扣【融合资源包】
***
**具体示例**:
【CDN示例】
客户A买了2个CDN资源包,一个国内CDN闲时段流量10TB,有效期到2020年12月底,另一个是国内CDN全时段流量100TB,且客户有10GB免费额度,则抵扣顺序为:免费额度>国内CDN闲时段流量10TB(优先抵扣符合闲时段期间的用量)>国内CDN全时段流量100TB。
# 添加银行卡相关操作手册 (/account/overseas-payment-methods/0-payment-management)
最近更新时间: 2026-05-08 18:43:26
# 操作流程 [#操作流程]
### 1、添加银行卡 [#1添加银行卡]
前往【[支付方式管理](https://portal.qiniu.com/financial/payments)】页面,点击【添加支付方式】按钮,填写银行卡信息。
* 支持带有 Visa、Mastercard 标志的信用卡/借记卡。
* 添加银行卡过程中,会进行 3D 验证,若认证不通过请联系您的发卡行核对。
* 3D 校验后会冻结 $ 5 以验证您的身份,验证通过后会立即取消冻结(此操作并不会真正扣费)。


### 2、设置为默认支付方式 [#2设置为默认支付方式]
* 添加首张银行卡会自动设置为默认支付方式,非首张银行卡可添加时设置也可添加后自助设置;

### 3、删除银行卡 [#3删除银行卡]
* 非默认支付方式您可自助删除;
* 默认支付方式暂时不支持删除,您可更换默认支付方式再进行删除。如有任何需求请联系商务哦~

# 系统授信&自动付款 (/account/overseas-payment-methods/0-system-credits)
最近更新时间: 2024-03-07 15:09:16
# 概述 [#概述]
系统授信和自动付款是为您(海外用户)提供的一种后付费方式。添加银行卡后系统会自动授予您 $ 10 的初始信用额度,当您的消费金额超过当前信用额度时,系统将对您添加的银行卡自动扣费。扣费成功后,系统根据您的付款金额调整信用额度。当您的消费金额再次超过当前信用额度时重复上述操作。出账后,系统优先使用账户余额支付账单,余额不足时,差额部分从您银行卡中扣费。出账后系统根据您的消费情况再次调整信用额度。
# 详情 [#详情]
## 系统授信条件 [#系统授信条件]
添加银行卡,添加后系统会自动授予您信用额度。
## 银行卡扣费时点 [#银行卡扣费时点]
月中扣费:一般在上午 9:00 左右。
出账扣费:每月出账后(一般在每月 1~4 号)。
## 银行卡扣费金额 [#银行卡扣费金额]
月中:扣费金额=现金+赠送金-未支付金额-实时消费金额
出账后:系统优先使用账户余额支付账单,余额不足时,差额部分从您银行卡中扣费。
## 系统授信金额调整 [#系统授信金额调整]
月中:月中付款金额\*2
出账后:Min(近三个月账单金额最大值,当前信用额度)
## 系统授信金额上限 [#系统授信金额上限]
系统授信金额上限为 $ 200,当您的消费金额超过该上限则会触发自动付款。
## 银行卡扣费失败 [#银行卡扣费失败]
扣费失败后将进入账号冻结流程,为避免账号冻结影响您的使用,请保证银行卡状态正常。
## 更换默认支付方式 [#更换默认支付方式]
更换默认支付方式后,系统授信金额将恢复为初始授信金额 $ 10。
# 控制台操作安全保护说明 (/account/security-settings/0-identity-verification)
最近更新时间: 2023-09-14 15:25:59
# 功能说明 [#功能说明]
在进行一些敏感操作(修改邮箱、修改密码等)时,需要先进行身份验证,完成验证后,才可以继续进行操作,**验证后验证状态持续5分钟有效**(5分钟内无需再次验证)
未开启安全保护时,系统会使用默认的可选验证方式验证,开启安全保护后,验证时则需要使用用户开启的验证方式来进行身份验证
# 开启安全保护 [#开启安全保护]
在安全设置中开启两步验证来开启安全保护,当开启两步验证后,验证时可选的验证方式将会限定在开启两步验证时选择的身份验证方式中


# 身份验证使用说明 [#身份验证使用说明]
在点击一些需要验证的操作后,系统会自动弹出验证模态框,可以看到可选的验证方式,同时可以点击切换到对应验证方式

验证方式:
* 密码验证
输入密码进行验证

* 手机短信验证
发送验证码到手机后,填写验证码进行验证

* 邮箱验证
发送验证码到邮箱后,填写验证码进行验证

* MFA验证器验证
填写MFA验证器中对应的验证码进行验证

如果所有可选的验证方式都无法验证,请提交工单

# 注册收不到手机短信验证码和邮箱激活邮件怎么办? (/faq/account-finance/account-problem/1215-don-t-get-message-authentication-code)
最近更新时间: 2026-08-27 16:16:09
## 手机收不到短信验证码怎么办? [#手机收不到短信验证码怎么办]
正常的话一般会在 1 分钟内会收到手机验证码。
有下面这几种解决方案
* 看下拦截短信,是否被拦截。
* 重新发送,或者换一个手机号试试(可重新注册账号)。
* 目前暂时不支持海外手机号注册。
## 邮件收不到激活邮件怎么办? [#邮件收不到激活邮件怎么办]
正常的话一般会在 1 分钟内收到邮件验证码。
有下面这几种解决方案
* 检查你输入的邮件箱是否填写正确,激活邮件确保没有在垃圾邮箱和删除邮箱中。
* 接收方也有可能服务器拒绝了或者延迟。请等10分钟后查看下是否收到验证码邮件。
* 换一个邮件箱试试(可重新注册账号)。
* 发份邮件给自己这邮件箱试试是否能接受到。
* 若是QQ邮箱没有收到验证码邮件或者底层使用QQ邮件服务器的邮箱,请读“QQ邮箱收不到怎么办” [http://kf.qq.com/faq/120322fu63YV130805rYRFzu.html](http://kf.qq.com/faq/120322fu63YV130805rYRFzu.html)
* 当其他方式都不行,请联系技术支持 400-101-8589 转 2 号线来激活。
# 如何修改解绑MFA (/faq/account-finance/account-problem/13534-MFA)
最近更新时间: 2026-07-21 18:14:12
关闭两部步验证,可以通过人工申诉提供相关资料进行修改,将材料发送邮件到 [support@qiniu.com](mailto:support@qiniu.com)
需要提供的信息如下:
a、个人实名认证:请提供注册邮箱、注册手机号码、手持与实名认证一致的身份证正面图片、关闭两步验证的原因;
b、企业实名认证:请提供注册邮箱、实名认证的营业执照图片、申请人手持正面身份证图片(如果申请人不是法人的话,需要额外提供公司盖章的说明文件)、关闭两步验证的原因。将资料以扫描件的形式发送到[support@qiniu.com](mailto:support@qiniu.com)邮箱
邮件发送后请工单上告知我们(麻烦提供下发送邮件的邮箱账号),提供发件邮箱和联系电话。这边同步给商务为您审核处理
邮件内麻烦备注上原账号邮箱和手机号码
# 七牛实名认证细则须知 (/faq/account-finance/account-problem/1465-seven-cattle-real-name-authentication-details-information)
最近更新时间: 2026-07-02 15:45:49
| 七牛实名认证细则须知 |
| --------------------------------------------------------- |
| 一个身份证号能认证两个账号 |
| 一个企业执照号码只能认证三个 **企业用户** |
| 人工审核方式身份认证提交后,在审核阶段以及认证通过后,不能修改认证信息。如审核被拒绝, **可重新发起身份认证** |
| 人脸认证失败 |
| ------------------------------------------------------------------ |
| 人脸认证失败的话,可以试试使用身份证 + 银行卡的方式认证,看看是否可以,人脸验证次数如果用完了可以提交工单进行人工反馈新增认证次数 |
# 如何修改手机号码 (/faq/account-finance/account-problem/1469-change-the-phone-number)
最近更新时间: 2026-05-07 14:31:59
# 方法一 [#方法一]
点击官网右上角的管理控制台——个人面板——个人中心的安全设置更改手机,发送验证码,验证之后就可以对手机号进行修改。单击进入[修改地址](https://portal.qiniu.com/developer/user/security)。

# 方法二 [#方法二]
[提交工单](https://support.qiniu.com/tickets/new-for-person)通过人工申诉提供相关资料进行修改,将材料发送邮件到 [support@qiniu.com](mailto:support@qiniu.com),需要提供的信息如下:
1. 个人实名认证,请提供注册邮箱、修改原因、手持与实名认证一致的身份证正面图片、新手机号码;
2. 企业实名认证,请提供注册邮箱、修改原因、与实名认证一致的证件图片、申请人手持正面身份证图片(如果申请人不是法人的话,需要额外提供公司盖章的说明文件)、新手机号码。
我们后台操作完毕后,重新登录系统会提示您短信验证新的手机号,验证完毕后手机号即修改完成。
# 怎么获取或者找到 Access Key 和 Secret Key (/faq/account-finance/account-problem/1479-how-to-access-or-locate-the-access-key-and-secret-key)
最近更新时间: 2026-05-07 12:19:46
获取或者找到你的Access Key和Secret Key,可以先登录进入你的帐号,点击“个人面板”,面板中点击“[密钥管理](https://portal.qiniu.com/developer/user/key)”,之后你会看到你的Access key 和 Secret Key。如下图。

如果AK SK 泄露,需要更换AK SK ,必须先创建一组新的AK / SK , 然后将老 AK / SK 停用删除


# 账户冻结与解冻 (/faq/account-finance/account-problem/1489-freeze-and-thaw)
最近更新时间: 2026-05-07 12:04:27
# 1.冻结条件 [#1冻结条件]
当前账户余额小于当前消费金额时,且没有欠费保护期或者超过欠费保护期,系统自动对账户执行冻结操作:
* 七牛云服务将不可用。
* 账户冻结期间,因保存数据而使用的存储空间仍将计算费用。
# 2.冻结前后的通知 [#2冻结前后的通知]
通知渠道:邮件 + 短信 + 站内通知
## 通知内容以邮件为例 [#通知内容以邮件为例]
冻结前提醒
> *备注:*
>
> *这个例子中的账号这时候至少充值50元才不会被冻结。*
>
> *但是为了您的服务正常使用,建议您账户余额足够支付到本月结束;否则还会收到余额不足提醒。*
subject:\[七牛云]24 小时冻结告知邮件
截至 07-14 01:39,您的账户 [sales@qiniu.com](mailto:sales@qiniu.com) 余额为 800 元,当前已产生消费 850 元。
您的账户余额已不足支付当前消费,依照冻结用户政策,您的账户将在 24 小时后被冻结!
为了保证您能正常使用我们的服务,建议您尽快充值。
如有其他问题,请联系我们。
此致
七牛云团队
冻结后
subject:\[七牛云]冻结告知邮件
截至 07-15 01:39,您的账户 [sales@qiniu.com](mailto:sales@qiniu.com) 余额为 800 元,当前已产生消费 900 元。
依照冻结用户政策,您的账户因余额不足以支付当前消费已被冻结。
自冻结起您将无法使用七牛云服务。您的账户数据将被保留 30 个自然日,若超过 30 个自然日仍未解冻此账户,系统会默认您已放弃此账户的所有权。
建议您尽快充值。充值后若余额大于实时使用量,账户将在 10 分钟内解冻。
如有其他问题,请联系我们。
此致
七牛云团队
# 3.解冻方法 [#3解冻方法]
请前往[帐号充值](https://portal.qiniu.com/financial/recharge)及时完成现金充值。 用户可参考账户过去使用量数据,计算未来三个月的预估费用,用户可选择一次性充入等额现金,以便享受稳定的服务。

# 4.账户冻结后的影响 [#4账户冻结后的影响]
* 当账号冻结时,七牛云服务不可用。
* 账户被冻结后,七牛云将保留账户中的所有数据连续 30 个自然日(自冻结之日起计算)。
* 账户被冻结超过连续 30 个自然日后,视同用户默认放弃数据所有权,七牛云之后将有权定期删除账户中的所有数据,并且不可恢复。
* 在账户冻结、且保留数据期间,如用户想要取回数据,请先完成现金充值缴清账户欠费款项,然后联系七牛云技术支持进行后续沟通。
* 冻结帐号期间,因保存数据而使用的服务仍在计算费用,例如:存储服务。自服务欠费冻结日起,该服务所占用的存储空间资源仍会继续按日计费。
* 七牛云不鼓励客户拖欠费用和账单。若账号因欠费而被冻结,您仍应将欠缴的费用付清,同时支付因冻结期间存储文件和任何资源所造成的额外费用。否则,七牛云将保留按照您未付费用的万分之五的标准,按日向您收取滞纳金的权利。按照规范制度和法律,七牛云有权力采取法律途径追回欠款。
# 5.账户被冻结后,充入抵用券/现金券为何不能解冻? [#5账户被冻结后充入抵用券现金券为何不能解冻]
* 抵用券/现金券不等同于现金充值,无法解除账户的冻结状态,账户欠费冻结期间,请充入现金进行解冻。
* 已充入现金会立刻用于缴清账户欠费款项,并重新判断是否继续冻结;不满足继续冻结条件的,账户将10分钟后解冻。解冻完成后,后续扣费将会优先扣除抵用券/现金券。
* 欠费期间所充值的抵用券余额仅用在下月消费时抵扣,并且不能抵消现金余额的欠费。
# 个人升级企业账户 (/faq/account-finance/account-problem/1730-personal-upgrade-corporate-account)
最近更新时间: 2026-05-07 12:59:43
个人升级企业账户,请到portal的右上角`个人面板` > `个人中心`,点击[实名认证](https://portal.qiniu.com/developer/user/identity/choice),点击`升级至企业用户`。见下图

企业账户更换信息也可以在这修改。
# 企业认证说明 (/faq/account-finance/account-problem/3819-enterprise-certification)
最近更新时间: 2026-05-07 13:48:26
企业账号认证有两种认证方式:企业银行卡打款认证、企业法人/被授权人扫脸验证

1、社会信用代码认证
统一社会信用代码由18位数字或大写拉丁字母组成,包括登记管理部门代码(1位)、机构类别代码(1位)、登记管理机关行政区划码(6位)、主体标识码(9位全国组织机构代
码)、验码(1位)五个部分组成。

2、营业执照号认证
营业执照号代码号由15位数字组成,包含14位数字本体码和1位数字校验码组成,其中本体
码从左至右依次为:6位首次登记机关码、8位顺序码,1位数字校验码组成。

3、非盈利组织认证
非盈利组织认证需要提供公司名称和组织机构代码。组织机构代码是对中华人民共和国内依法
注册、依法登记的机关、企、事业单位、社会团体,以及其他组织机构颁发一个在全国范
围内唯一的、始终不变的代码标识。全国组织机构代码由八位数字(或大写拉丁字母)本体代码和
一位数字(或大写拉丁字母)校验码组成。组织机构代码查询地址[http://www.nacao.org.cn/portal/](http://www.nacao.org.cn/portal/)

# 重置密码 (/faq/account-finance/account-problem/3965-reset-password)
最近更新时间: 2026-05-08 15:33:38
如果您忘记了您的登录密码,可以通过以下步骤重置您的密码:
# 步骤一 [#步骤一]
登录页面点击『忘记密码?』按钮
# 步骤二 [#步骤二]
## 通过【邮箱】找回 [#通过邮箱找回]
1. 输入忘记密码的注册邮箱,点击『找回密码』按钮,系统会发送一封重置密码的邮件到您的邮箱。
如果没有收到邮件,重置密码邮件可能被您的邮件服务商错误标记为垃圾邮件,您可以检查一下垃圾邮件中是否有重置密码邮件。
2. 点击邮件中的『重置密码』按钮(如果按钮无法点击,您也可以根据邮件下方提示进行操作)
3. 进入重置密码页面,重新设置您的登录密码。设置完成后,点击『重置密码』按钮。
## 通过【手机号】找回 [#通过手机号找回]
1. 输入忘记密码的注册账号绑定手机号,点击『发送』按钮,系统会弹出图形验证码,图形验证码操作成功后,系统会发送一条重置密码的短信到您的手机号。
2. 收到后输入短信验证码,然后点击『找回密码』,进入重置密码页面,重新设置您的登录密码。设置完成后,点击『重置密码』按钮。
# 步骤三 [#步骤三]
提示成功后,密码修改完毕。您可以使用新设置的密码进行登录。
# 支付宝认证失败 (/faq/account-finance/account-problem/4073-pay-treasure-authentication-failed)
最近更新时间: 2017-09-27 09:13:57
# 问题描述 [#问题描述]
支付宝认证失败,提示支付宝账号已被认证,或者提示授权不成功。
(支付宝认证请参考:[/account/identity-verification/0-quick-start-personal-authentication](/account/identity-verification/0-quick-start-personal-authentication) )
# 问题原因 [#问题原因]
这样的报错原因基本有两种:
## 原因一 [#原因一]
您之前有其他的七牛账号绑定过该支付宝账号。你可以登录你的支付宝账号,点击 我的->设置->账号管理->账号授权 查看你的认证产品。详情如下:

如果你支付宝账号已经认证过,请您使用银行转账验证方式进行验证。
## 原因二 [#原因二]
授权失败可能是支付宝账号的某些不可抗拒原因,详情您可以咨询支付宝客服电话:95188 ,或者你提交工单,将您的授权失败的页面截图以及支付宝账号通过提交工单的方式提交给我们,这边会帮您查看授权失败的原因。
# 新版欠费流程 (/faq/account-finance/account-problem/5996-new-owe-the-process-description)
最近更新时间: 2026-08-07 16:49:51
# 一、欠费规则 [#一欠费规则]
当账户的可用额度小于0时,将进入欠费流程。
关于可用额度的更多说明请参考 [新版财务概况](/account/0-the-new-financial-situation)
# 二、欠费流程 [#二欠费流程]
**1.欠费通知。**
* 欠费当天七牛云会向您发送欠费的邮件和短信通知。
**2.欠费保护期。**
* 欠费后立即进入保护期,保护期内七牛云会**每天**向您推送一次提醒。
* \*\*保护期时长:\*\*保护期时长根据您的认证状态有所不同,未认证用户保护期1天,个人认证用户保护期3天,企业认证用户保护期5天。
* \*\*保护期内限制:\*\*保护期内,您使用的服务/功能将受到一定的限制,包括无法使用余额购买预付费产品,无法新增和修改CDN域名,无法开启云主机按量付费资源,对象存储内无法新建存储空间、绑定域名、跨区域同步等操作,详情参考文档[欠费状态下各产品的限制功能](/account/0-owe-the-protection-limit-function)。
* \*\*解除保护期:\*\*保护期内充值达到充值要求后,您的账号将自动恢复正常。
**3.欠费冻结。**
* 保护期结束后,七牛云会向您发送冻结的邮件和短信通知,您的账号将直接被冻结。
* 冻结期间,因保存数据而使用的服务仍在计算费用,例如:存储服务。自服务欠费冻结日起,该服务所占用的存储空间资源仍会继续按日计费。
* 当您的充值金额达到最低充值要求后,您的账号将自动解冻,恢复正常。
* 冻结期间,如果您想要取回数据,请先完成现金充值缴清账户欠费款项,然后联系七牛云技术支持进行后续沟通。
* 若账号因欠费而被冻结,您仍需付清欠缴的费用,同时支付因冻结期间存储文件和任何资源所造成的额外费用。否则,七牛云将保留按照您未付费用的万分之五的标准,按日向您收取滞纳金的权利。按照规范制度和法律,七牛云有权力采取法律途径追回欠款。
**4.资源清空。**
* 账户被冻结超过连续 30 个自然日后,视同您默认放弃数据所有权,七牛云将有权定期删除账户中的所有数据,并且不可恢复。
# 三、欠费后如何处理 [#三欠费后如何处理]
* 欠费后请尽快进行充值,充值入口:财务中心->[账户充值](https://portal.qiniu.com/financial/recharge)。
* 充值金额:不得低于当前账户的可用额度,建议适当多充值,避免继续欠费。

# 四、常见问题 [#四常见问题]
1.账户被冻结后,充入抵用券/现金券为何不能解冻?
* 抵用券/现金券不等同于现金充值,无法解除账户的冻结状态,账户欠费冻结期间,请充入现金进行解冻。
* 已充入现金会立刻用于缴清账户欠费款项,并重新判断是否继续冻结;不满足继续冻结条件的,账户将10分钟后解冻。解冻完成后,后续扣费将会优先扣除抵用券/现金券。
* 欠费期间所充值的抵用券余额仅用在下月消费时抵扣,并且不能抵消现金余额的欠费。
2.欠费保护怎么关闭?
账号处于欠费保护期内,无法关闭,需要充值补齐欠费解除欠费保护期状态后,在 [https://portal.qiniu.com/financial/overview](https://portal.qiniu.com/financial/overview) 这个界面会有关闭按钮

# 企业认证提示需加盖企业红章 (/faq/account-finance/account-problem-faq/4084-enterprises-certification-tip-without-red-chapter)
最近更新时间: 2018-08-08 12:01:47
# 企业认证提示需加盖企业红章 [#企业认证提示需加盖企业红章]
问题描述:在进行企业认证时,人工审核经常会显示审核失败,失败原因是:需加盖企业红色公章
如图所示:

解决方案:现在企业认证的方式除了需要登记机关提供的签章,还需要企业的红章作为认证依据(可使用复印件)
标准如图所示:

# 账户与账单问题 FAQ (/faq/account-finance/account-problem-faq)
最近更新时间: 2026-09-18 18:24:40
| Q1: 账户被冻结,充值并确认到账后为何还未解冻? |
| ---------------------------------------------------------------------------------------- |
| 充值并确认到账后,一般 10 分钟内可以解冻(CDN 服务会在20分钟内逐渐恢复)。如充值后 10 分钟仍未解冻,可以联系 400-101-8589 转 1 号线联系销售处理。 |
| Q2: 实名认证已申请,需要等多久审核通过? |
| ---------------------- |
| 一般在 1 个工作日内。 |
| Q3: 我的账户有余额,为什么会被冻结? |
| ---------------------------------------------------------------------------------------------------------------- |
| 当账户实时消费大于账户内的余额时,七牛会给您的注册邮箱和手机号发送邮件和短信提醒,并在 24 小时内执行冻结。
另外如果我们有证据显示您的账号涉及黄赌毒、VPN、非法后门等非法业务,七牛保留拒绝给您提供服务的权利。 |
| Q4: 对公转账时的备注账号问题?是否一定需要备注,忘记写了怎么办 |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 对公转账时请备注您需要充值的七牛账号邮箱(如银行不支持"@"符号输入,请使用中文“艾特”替代。eg:[mail@163.com](mailto:mail@163.com);mail艾特163.com)或([对公汇款界面](https://portal.qiniu.com/financial/recharge) 显示的充值账户ID(一般为100开头的数字)。 |
| 对公转账的目标账号如果是[对公汇款界面](https://portal.qiniu.com/financial/recharge)获取的专属账号,那么可以不需要备注
如果是直接汇款转入七牛公共的账号
`开户行:上海浦东发展银行杨浦支行`
`户名:上海七牛信息技术有限公司`
`账号:98120154740008821`
那么必须填写备注,否则无法入账,需要您[提交工单](https://support.qiniu.com/question),提供对公转账凭证,申请协助入账。 |
| Q5: 如何获取合同? |
| ---------------------------------------------------------------------------------------------------------------- |
| 电子合同:参考([电子合同说明及操作手册](/account/0-electronic-contract-documentation-and-operation-manuals)) |
| 纸质合同:由商务为您提交申请,如您已有商务联系方式可直接与商务沟通处理;如您没有商务联系方式,您可以在工单中提供您的联系方式,然后 [提交工单](https://support.qiniu.com/question) 来申请 |
| Q6: 对公转账时网银方式,提示系统繁忙,是否有其他对公转账方式? |
| ---------------------------------------------------------------------------------------- |
| 对公转账目前只能通过网银方式支付,您也可以使用 [微信或支付宝在线充值方式](https://portal.qiniu.com/financial/recharge) 进行充值 |
| Q7: 如何查看账号消费明细?并购买对应的资源包? |
| -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 账单明细查看方式参考 [查看账单](/account/bill-management/0-bill-review) 说明文档,资源包购买入口 [云商城](https://qmall.qiniu.com/) ,如果您不清楚应该购买哪些资源包,您可以联系 400-101-8589 转 1 号线联系销售咨询。 |
| Q8: 6个月以上的历史充值发票或1000元以下的专票,如何申请开具? |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 6个月以上的历史充值发票或1000元以下的专票,无法自主提交申请,您可以先在 [发票管理](https://portal.qiniu.com/financial/invoice-contract/invoice/setting?from=invoice) 界面添加开票信息,审核通过后,联系商务或 [提交工单](https://support.qiniu.com/tickets/new-for-person) 为您提交申请 |
| Q9: 银行转账的实名认证加急审核 |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 财务打款实名认证审核通过后,系统会在每个工作日的11:30和16:30自动安排对公打款。整个认证过程通常在1-2个工作日内完成,无法申请加急处理。请留意您的对公账户到账信息,如超过3个工作日未收到打款,可 [提交工单](https://support.qiniu.com/tickets/new-for-person) 联系我们查询进度。 |
| Q10: 银行转账的实名认证加急审核 |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 财务打款实名认证审核通过后,系统会在每个工作日的11:30和16:30自动安排对公打款。整个认证过程通常在1-2个工作日内完成,无法申请加急处理。请留意您的对公账户到账信息,如超过3个工作日未收到打款,可 [提交工单](https://support.qiniu.com/tickets/new-for-person) 联系我们查询进度。 |
| Q11: 账号欠费后会提醒么? |
| -------------------------------------------------------------------------------------------------------------------- |
| 是的,欠费当天七牛云会向您发送欠费的邮件和短信通知。欠费说明参考 [新版欠费流程](/faq/account-finance/account-problem/5996-new-owe-the-process-description) |
| Q12: 为什么有可用余额,但可提现金额为0? |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 因为充值时间在2020年3月之前导致的,2020年3月之前的充值流水暂不支持自助申请提现,请添加 [工单系统](https://support.qiniu.com/tickets) 界面左下角的专属商务微信,联系商务为您处理 或 [提交工单](https://support.qiniu.com/tickets/new-for-person) 为您处理。 |
| Q13: 为什么账号显示欠费?且很早就被冻结了? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 这种是因为有历史未支付账单导致的,您可以参考 [查看账单](/account/bill-management/0-bill-review) 查看历史账单明细,里面有详细的计费项信息,如果您对某个计费项有疑问,您可以 [提交工单](https://support.qiniu.com/tickets/new-for-person) 咨询。 |
| Q14: 账号欠费时可以通知多个手机号和邮箱,如何实现? |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 可以在控制台 [接收人](https://portal.qiniu.com/notification/recipient/user) 中添加手机号和邮箱信息,然后在 [基础接收设置](https://portal.qiniu.com/notification/user-setting/basic/finance) 中添加多个接收人来实现。 |
| Q15: 为什么AI推广页面和CPS推广页面的邀请人数不一致? |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| AI推广和CPS推广是不同的活动,两个页面数据互不相关。AI推广活动说明参考 [AI 推理邀请活动规则详细说明](/faq/account-finance/account-problem-faq),CPS推广活动说明参考 [推广奖励规则](/products/mkt/manual/7261-cps-promotion-rules) |
| Q16: 如何注销账号? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 可以在 [注销账号](https://portal.qiniu.com/developer/user/security/cancellation) 界面提交,提交后账号会进入注销静默期,静默期结束后,账号将自动完成注销;注销相关说明参考:[七牛云账号注销协议](https://www.qiniu.com/agreements/unregister) |
| Q17: 账号注销静默期,能不能加快注销? |
| ------------------------------------------------------------------------------------- |
| 不能,静默期结束后,账号将自动完成注销;注销相关说明参考:[七牛云账号注销协议](https://www.qiniu.com/agreements/unregister) |
| Q18: 为什么无法注册绑定192或170开头的手机号? |
| ----------------------------------- |
| 目前禁止注册绑定192或170开头手机号,建议使用其他手机号注册或绑定 |
| Q19: 账号或CDN域名为什么被冻结封禁了? |
| ------------------------------------------------------------------------------------- |
| 一般是账号或CDN域名资源违规导致封禁的,如果您对处置结果有异议,可以通过 [账号冻结解冻申诉](https://www.qiniu.com/appeal) 平台提交申诉 |
| Q20: 账号有资源包,为啥欠费了? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 一般是资源包无法抵扣产生扣费的计费项或资源包过期导致的;
1、您可以在 [按量计费预估](https://portal.qiniu.com/financial/bills/estimated-consume) 查询扣费详情,里面有详细的计费项信息;
2、如果是资源包类型购买错误,您可以添加 [工单](https://support.qiniu.com/tickets) 界面左下角的专属商务企业微信,联系商务为您走退款流程,退款后您重新购买正确的资源包。
3、资源包是否过期可以在 [资源包管理](https://portal.qiniu.com/financial/orders/respack-mgr) 界面查询确认。 |
| Q21: 为什么会有2个账号? |
| ----------------------------------------------------------------------------- |
| 一般一个手机号可以注册认证三个账号,使用手机号登录的时候会选择登录哪个账号,这个时候需要指定选择登录哪个账号的,或者使用邮箱登录即可,邮箱是每个账号唯一的 |
| Q22: 账号认证主体变更影响产品使用吗? |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 不会,账号主体变更只是变更账号实名认证主体信息,不会影响产品使用和数据;主体变更操作参考:[如何进行企业认证变更?](/account/identity-verification/0-how-to-make-enterprise-certification-changes)
`注意:仅支持企业实名认证账号进行主体变更,个人实名认证账号不支持变更认证信息` |
| Q23: 账号对公充值或进行企业认证银行转账认证没有对应的支行? |
| -------------------------------- |
| `支行信息缺少需填写对应上级分行即可` |
| Q24: 支持设置欠费超出多少金额后,自动关停账号吗? |
| ----------------------------------- |
| 不支持,七牛是后付费计费模式,根据实际使用量计费,且计费更新延迟一天。 |
| Q25: 如何查询历史充值明细? |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 可以在七牛控制台 - 财务中心 - [收支明细](https://portal.qiniu.com/financial/cost/income-expenses) 选择流水类型为 `充值` 进行查询。 |
| Q26: 不记得原来的账号了怎么办? |
| -------------------------------------------------------- |
| 可以看下是否有原账号的相关资源信息、如手机号、邮箱、空间名称、域名、域名解析、资源访问链接等都可以用于账号查询。 |
| Q27: 海外账号是否可以购买中国大陆服务器、CDN或对象存储? |
| --------------------------------------------- |
| 暂不支持;如需使用中国大陆服务器、CDN或对象存储,需要您注册中国大陆账号并完成实名认证。 |
| Q28: 退款提现审核已通过,但一直未收到打款? |
| ---------------------------------- |
| 财务预计每周四左右会统一处理打款,节假日顺延,辛苦耐心等待打款即可。 |
| Q29: 对公转账时,收款账号输入错误,如何处理? |
| ----------------------------------------------------------------------- |
| 账号输入错误,银行会原路退回,充值失败,您那边重新使用正确的收款账号打款即可。之前的充值打款状态可在您的银行账号 - 收支明细中自行查询确认。 |
| Q30: 有2个七牛账号,如何将A账号的余额转移至B账号? |
| ------------------------------------------------- |
| 2个七牛账号的实名认证主体一致,且打款主体一致(都是打款到上海七牛或嘉兴七牛),才可进行余额转移。 |
| Q31: 有微信或支付宝充值记录,但在提现时找不到对应充值记录,是什么原因? |
| ----------------------------------------------------------------------------------------------------------------------- |
| 一般是您的这笔充值费用已经被账户消费占用,只能提现剩余金额导致的,可在 [提现](https://portal.qiniu.com/financial/withdraw) 界面点击 `系统自动提现` 按钮后选择对应充值记录进行提现。 |
|  |
| Q32: 如何联系账号专属商务? |
| ----------------------------------------------------------------------------------------------------------------------------- |
| 在 [工单系统](https://support.qiniu.com/tickets) 左下角可以看到您的七牛账号专属商务企业微信,账单、资源包购买、资源包订单退款、充值到账、价格和计费、发票申请或退票等可以直接添加专属商务微信,与商务沟通为您处理。 |
| Q33: 如何开启`资源包到期提醒`的短信通知? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 在 [消息中心 - 财务消息](https://portal.qiniu.com/notification/user-setting/basic/finance) 选择 **资源包到期提醒** 勾选短信即可。 |
| Q34: 实名认证失败,没有认证次数了,如何处理? |
| ------------------------------------------------------------------------ |
| 可以提交 [工单](https://support.qiniu.com/tickets) 反馈技术支持为您增加认证次数后,重新提交实名认证申请。 |
| Q35: 需要获取七牛产品资质,比如等保证书、CDN牌照、体系认证、营业执照、等保三级测评、数据安全合规认证等,在哪里获取 |
| -------------------------------------------------------------- |
| 可以在 [工单平台](https://support.qiniu.com/tickets) 左下角添加您的专属商务进行申请。 |
| Q36: 海外账户绑定 Visa 或 Mastercard 后,是否会给账户钱包充值?如何使用信用卡支付? |
| ------------------------------------------------------------------------------------------------------------------------------------- |
| 不会。绑定 Visa 或 Mastercard 只是用于后付费按量计费账单的自动扣款,不会向账户钱包预存资金,也不会产生充值到账金额。若页面仅显示银行转账,说明账户钱包充值不支持通过该信用卡直接加款;请确保已成功绑定信用卡且额度充足,系统会在次日账单更新后自动扣费。 |
| Q37: 验证码发送超限了,限制是多少呢? |
| --------------------- |
| 目前限制次数是5次,超限后禁15分钟 |
| Q38: 海外账号绑定+86手机号失败? |
| ------------------------------------------ |
| 目前暂不支持海外账号绑定国内手机号,可以与商务经理或工单技术支持沟通确认具体使用姿势 |
# 常用单位换算 (/faq/account-finance/traffic-stats/1592-commonly-used-unit-conversion)
最近更新时间: 2017-08-31 17:30:58
# 七牛的带宽和流量单位之间是如何转换的? [#七牛的带宽和流量单位之间是如何转换的]
以 1M 带宽为例,每天的流量为: `1Mbps = (1Mbpsx24x3600)/8 = 10800MB = 10.546875GB`
# 七牛的存储和流量单位之间是如何转换的? [#七牛的存储和流量单位之间是如何转换的]
| 以此类推 |
| -------------- |
| 1 PB = 1024 TB |
| 1 TB = 1024 GB |
| 1 GB = 1024 MB |
| 1 MB = 1024 KB |
| 1 KB = 1024 B |
# Chrome 浏览器打印账单出现丢页 (/faq/account-finance/bill/1501-print)
最近更新时间: 2026-05-07 14:39:42
chrome 浏览器的打印功能,保存为 pdf 会有丢页的情况,如果发现打印出的账单有问题时,解决方案如下:
1,更换浏览器,如:火狐浏览器等
2,打印时边距设置为 无

参考链接:
[stackoverflow:https://stackoverflow.com/questions/22744141/printing-from-chrome-missing-lines](https://stackoverflow.com/questions/22744141/printing-from-chrome-missing-lines)
# 欠费须知 (/faq/account-finance/bill/1543-lack-of-information)
最近更新时间: 2026-05-07 13:08:51
> 欠费后对账户有哪些影响?
* 欠费后,用户将会收到七牛云存储发送的欠费通知邮件。
* 收到欠费通知后请及时完成现金充值。
* 自冻结之日起的第 31 个自然日,如现金账户仍然欠费,视作您默认放弃数据,七牛云存储将删除账户中的数据,并且不可恢复。
* 在冻结帐号期间,因保存数据而使用的存储功能仍将计算费用,每逢扣费日相应的存储费用会被扣除。
可在个人面板 > 财务中心查看[财务概览](https://portal.qiniu.com/financial/overview):

用户可在[收支明细](https://portal.qiniu.com/financial/cost/income-expenses)知道自己的付款和消费情况。在[按量计费预估](https://portal.qiniu.com/financial/bills/estimated-consume)查看当月的消费情况。
# 免费额度须知 (/faq/account-finance/bill/1574-free-credit-information)
最近更新时间: 2026-05-07 12:10:04
七牛的实名认证用户享有的免费额度如下:
## 一、对象存储 [#一对象存储]
| 计费项目 | 免费额度 |
| -------------------- | ------------- |
| 标准存储免费空间 | 0-10 GB |
| 标准存储数据读取 | 无上限 |
| 标准存储 GET 请求 | 第 0 次至 100 万次 |
| 标准存储 Put / Delete 请求 | 0-10 万次 |
| 标准存储 CDN 回源流出流量 | 0GB - 10GB |
| 上传流量 | 无上限 |
## 二、融合CDN [#二融合cdn]
| 访问区域 | 计费项目 | 额度 |
| ---- | --------- | -------------- |
| 中国大陆 | HTTP 下载流量 | 第 0 GB 至 10 GB |
| 其他地区 | HTTP 下载流量 | 第 0 GB 至 10 GB |
注:中国大陆和其他区域独立享有 10G HTTP 免费额度,共 20 G。
## 三、智能多媒体服务 [#三智能多媒体服务]
计费项目 免费额度 音视频处理 20元 C1M1 自定义数据处理服务 750 小时 部分图片处理服务 imageView2(图片基本处理)
每月共享 10TB 免费额度imageMogr2(图片高级处理) imageInfo(图片基本信息) exif(图片 EXIF 信息) watermark(图片水印处理) roundPic(图片圆角)
## Q:使用量超出免费额度怎么办? [#q使用量超出免费额度怎么办]
\*\*A:\*\*超过免费额度的流量,进入标准阶梯计费模式,按照价格表计费。
如本月的存储量为 5GB,下载流量为 15GB,请求 PUT 1 万次,GET10 万次。那么本月 5GB 存储为免费,下载流量中 0-10GB(小于等于 10GB)为免费,10GB-15GB(大于 10GB)按照 10GB-1TB 的标准阶梯计费进行计费,PUT 和 GET 的请求均为免费额度。
七牛的计费模式为当月使用,下月初扣费,例如,在存储达到 10G 后无需额外开通,您可以直接使用无上限的存储空间,建议您的账户预留足够余额,防止因账户余额不足以抵扣本月消费而被提前冻结。
# 七牛发出账单的时间 (/faq/account-finance/bill/1580-seven-cattle-issue-invoice)
最近更新时间: 2026-08-27 16:14:14
# 什么时候可以收到账单? [#什么时候可以收到账单]
* 七牛云存储在每月的 3日至 5日,发出上月的账单。如:2012 年 4 月的账单,你将在 2012 年 5 月 3 日至5日之间收到。
* 友情提示:账单邮件使用 [billing@qiniu.com](mailto:billing@qiniu.com) 进行发送,为保证账单接收正常,请将此邮件地址添加为联系人。
* 如遇到账单问题请联系销售 400-101-8589转 1 号线。
# 抵用券使用和扣费须知 (/faq/account-finance/bill/1633-the-vouchers-deduction-notice)
最近更新时间: 2017-08-31 16:52:09
## 抵用券使用: [#抵用券使用]
* 取得七牛云存储的抵用券/体验券的号码,在财务 -> 抵用券 中进行激活操作。
* 抵用券的充值计入抵用券账户,显示为抵用券余额。
* 每个账户仅可进行一次使用 抵用券/体验券 号码进行充值。
* 其他形式获得的抵用券将会由系统自动充值到您的账户中。
## 抵用券如何扣费? [#抵用券如何扣费]
* 除快递费外,我们将会优先扣除您的抵用券账户中的金额,并且优先扣除近期将会过
期的抵用券。
* 月度账单开具时,在扣费时间点之前过期的抵用券仍有效。如抵用券 7 月 18 日过期,
7 月账单发出后,8 月 5 日完成扣费,此时 7 月 18 日过期的抵用券仍然为有效抵用
券,可参与账单的扣费。
* 月度账单开具时,在账单月过期的抵用券仍有效。如抵用券 7 月 18 日过期,7 月账单发出后,8 月 10 日完成扣费,此时 7 月 18 日过期的抵用券仍然视为有效抵用券,可参与 7 月账单的扣费。
# 七牛kodo计量方法 (/faq/account-finance/bill/1634-seven-cattle-billing-method)
最近更新时间: 2026-05-07 11:24:15
> 七牛的存储费用是怎么计算的?
* 七牛对存储、下载流量、请求次数分别计费。最终支付款项为三项之和。
* 存储量取月度日均值,进行费用的结算。如存储量每日的绝对值为 D1、D2、D3...D31 ,则最终月度结算费用时为 (D1+D2+...+D31)/31。
* 下载流量和请求次数以新增的数量进行累积计算。
# 音视频处理收费标准 (/faq/account-finance/bill/2654-audio-and-video)
最近更新时间: 2026-05-07 12:13:55
#### 转码单价 [#转码单价]
音视频转码的收费标准可以参考[转码官网价格](https://www.qiniu.com/prices/dora),计费时长以转码后文件播放时长为准,而非转码过程消耗的时间。
#### 转码后的视频分辨率如果介于两个规格之间,那么收费按照分辨率为左开右闭空间阶梯状。 [#转码后的视频分辨率如果介于两个规格之间那么收费按照分辨率为左开右闭空间阶梯状]
例:转码后分辨率为750x700
长边:640 \<750 \<=1080
短边:480 \< 700 \< =720
所以按照sd(1080x720)的收费标准收费
# 订阅管理积分相关FAQ (/faq/aitokenapi/aitoken-sub-mgmt/13459-sub-mgmt-faq)
最近更新时间: 2026-04-30 17:39:26
**Q1:我可以同时购买多个订阅吗?**
A1:单个用户当前仅支持同时拥有一个有效的 AI 订阅。如需提升服务,可以升级当前订阅等级。
**Q2:订阅内的模型是否会随时变动?**
A2:订阅内模型会根据市场与技术动态适时优化,重大调整将提前通知,保障用户体验连续性。
**Q3:如果我的积分用完了怎么办?**
A3:如果仅是当前每周窗口内的额度已耗尽,建议您耐心等待下一个刷新周期,届时额度将自动恢复;若当月订阅的全部额度均已用完,建议您通过按量付费模式的 API Key 继续使用服务,确保您的使用不受影响。
**Q4:API 访问权限如何保障安全?**
A4:订阅仅能通过订阅 API Key 访问,可以前往[【API Key 管理】](https://portal.qiniu.com/ai-inference/api-key)管理你的订阅访问。
**Q5:可以随时升级或取消计划吗?**
A5:可以,升级订阅计划,权益**立即生效(例如从包月升级到包季或包年)**;取消订阅后,当前订阅周期内服务不变,到期后自动终止。目前暂不支持降级。
**Q6:订阅的积分额度没用完会不会过期?**
A6:所有订阅计划的月度额度遵循"**订阅周期清零**"规则,不累计至下一周期。订阅周期分别为:一个月30天,一个季度90天,一年365天。请您合理规划用量。
**Q7:"每周刷新额度"具体是什么意思?如果我每周额度不够用怎么办?**
A7:这意味着系统**每周**为您补充一次可用额度。如果您在某个刷新周期内提前用完额度,则需要等待下一个刷新周期开始才能获得新额度。建议您合理规划使用;或者您也可以随时用"按量模式"应急。且固定时间内,订阅范围中所有模型**共享同一额度限制**,不单独计算。
**Q8:升级订阅时费用如何计算?**
A8:升级时,系统会自动计算当前订阅剩余天数对应的差价,您只需支付差额即可。升级后新计划立即生效,下次续费将按新计划价格扣费。例如:您在包月计划使用一半时升级到包季,只需按照剩余天数补缴差价,无需重新支付全额。
**Q9:我该如何选择订阅计划?**
A9:您可以根据贵司主要的使用场景来预估大致的需求量。如果仍难以决定,欢迎随时联系我们的客服,将竭诚为您提供个性化的选择建议。
**Q10:购买或自动续费订阅计划后,是否支持退款?**
A10:用户通过购买或者自动续费完成的扣款,除法律法规另有规定、支付渠道另有规则或本平台另有明确承诺外,已生效周期的服务费用不予退还。[自动续费服务协议](https://www.qiniu.com/agreements/auto-renewal)。
#
我们致力于打造透明公平、灵活便捷的 AI 模型订阅服务,帮助您轻松体验最前沿、最丰富的人工智能能力。若您遇到问题,欢迎随时联系我们的客服支持,获取更多帮助与建议!
感谢您的支持与信赖,祝您使用愉快!
# 大模型接口调用FAQ (/faq/aitokenapi/other/13462-aitoken-use-faq)
最近更新时间: 2026-10-15 17:19:10
# API兼容性问题 [#api兼容性问题]
## Q: API兼容哪些协议和接口标准? [#q-api兼容哪些协议和接口标准]
A: 兼容OpenAI接口(/v1/chat/completions) 和 Anthropic接口标准(/v1/messages); 同时兼容HTTP流式和非流式调用。
## Q: 是否兼容HTTP GET方法? [#q-是否兼容http-get方法]
A: 只有查询模型列表接口(/v1/models)支持GET操作,其他接口均为POST操作。
# 模型资源问题 [#模型资源问题]
## Q: 支持哪些模型? [#q-支持哪些模型]
A: 支持国产主流顶级和开源大模型,价格与模型参数请参考[模型广场](http://www.qiniu.com/ai/models)
同时支持大语言模型(LLM/LRM文本生成/代码生成)、多模态模型(图片生成、视频生成)。
# Token用量计费问题 [#token用量计费问题]
# 账号认证问题 [#账号认证问题]
## Q: 作为渠道商客户,如何进行大模型分销? [#q-作为渠道商客户如何进行大模型分销]
## Q: 注册账号后,是否需要实名认证? [#q-注册账号后是否需要实名认证]
## Q: 大模型API Keys与账号AK/SK有什么区别? [#q-大模型api-keys与账号aksk有什么区别]
# 价格折扣问题 [#价格折扣问题]
# 其他问题 [#其他问题]
| Q1:如何调用 API 以及部署? |
| -------------------------------------------------------------------------------------------------------------------- |
| 可参考此处文档:[https://www.qiniu.com/products/ai-token-api#document](https://www.qiniu.com/products/ai-token-api#document) |
| Q2:API 接口是什么风格?请求参数和响应参数是怎样的? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 接口兼容 OpenAI 风格,参数也完全兼容 OpenAI 的 sdk,比如 maxtoken、tempeature 等常见参数可以直接使用 sdk 中的参数;常见容易搞错的是 OpenAI sdk 配的 baseurl 一般是域名 + /v1,比如:[https://api.qnaigc.com/v1,而不是(https://api.qnaigc.com/](https://api.qnaigc.com/v1,而不是(https://api.qnaigc.com/) 或者 [https://api.qnaigc.com/v1/chat/completions)](https://api.qnaigc.com/v1/chat/completions)) |
| Q3:API 支持哪些模型? |
| ---------------------------------------------------------------------------------- |
| 除了 DeepSeek-R1、V3 模型,也支持 Qwen 模型,模型列表参考:[AI大模型广场](https://www.qiniu.com/ai/models) |
| Q4:各种 AI App 或大模型聚合平台(如 cherrystudio 等),如何接入七牛的 API ? |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 可以选择 OpenAI 的接入方式进行接入,常见容易搞错的是 url 配置一般是域名,比如:[https://api.qnaigc.com,而不是](https://api.qnaigc.com,而不是) [https://api.qnaigc.com/v1/chat/completions](https://api.qnaigc.com/v1/chat/completions) |
| Q5:API 的回答为什么没有思考过程? |
| ------------------------------------------------------------------------------- |
| 只有 deepseek-r1 模型是默认有思考过程的,回答内容开头有 \ 标签。也有小概率遇到 \ 标签内容为空的情况,属正常情况 |
| Q6:API 调用报错:`openai.InternalServerError: Error code: 503 - {'error': {'message': 'the price of the model is not set (model: deepseek-r1:671b)', 'type': 'quota_exceeded_error'}}`,怎么解决? |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| model 字段的值传错了,需要严格和 [AI大模型广场](https://www.qiniu.com/ai/models)里面的“API model参数“的值保持一致,否则找不到模型 |
| Q7:API 调用报错包含 header 字段的,比如:`"error":"authorization header missing", "status": false`,怎么解决? |
| ------------------------------------------------------------------------------------------- |
| 往往是请求 header 或请求字段有问题,建议对照教程文档检查下;如果还未解决,可以咨询我们的技术支持,**注意抹掉 api key 敏感信息** |
| Q8:API 如何调用 DeepSeek 671B 的模型? |
| ----------------------------------------- |
| 当前支持的 deepseek-r1 就是 671B 的全参数模型,也是所谓的满血版 |
| Q9:七牛云有哪些 GPU 主机可用来私有部署?支持多少人并发使用? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| GPU 主机 A100、V100、A10、H20、4090 等都有,可以部署 671b 量化全参模型,也可以跑中小参的 DeepSeek-R1-Qwen、DeepSeek-R1-Llama 蒸馏模型;具体规格示例:6张 40G 的 A100 显卡可以满足 10 tokens/s;8张 32G 的 V100 显卡大概 5 tokens/s |
如需私有部署,可参考此文档:[DeepSeek R1 GPU 主机部署教程](https://developer.qiniu.com/aitokenapi/12885/host-deployment-tutorial)
| Q10:ollma 与 vllm 部署方式如何选择? |
| --------------------------------------------------------- |
| ollama 推荐个人开发者,高并发推荐 vllm 部署,目前全参数模型要求配置高,也可以使用 32b 的蒸馏模型 |
**vllm 部署 速度对比**
* 模型:DeepSeek-R1-Distill-Qwen-32B
* 环境:显卡 4 x 32G V100 CPU 48 x Intel(R) Xeon(R) Silver 4116 CPU @ 2.10 GHz
| GPU 显存、内存消耗 | 并发数 | 速度 |
| -------------------------------------------- | --- | --------------- |
| 显存 95.9 GB VIRT(虚拟内存): 56.7G;RES(物理内存): 5.8G | 1 | 13.848 tokens/s |
| 显存 95.9 GB VIRT(虚拟内存): 56.7G;RES(物理内存): 5.8G | 10 | 14.12 tokens/s |
| 显存 95.9 GB VIRT(虚拟内存): 56.7G;RES(物理内存): 5.8G | 100 | 13.41 tokens/s |
| Q11:使用 Token API 和购买 GPU 主机进行专属私有化部署有什么差别? |
| ------------------------------------------------------------------------------------------------------------------------- |
| 差别1:数据安全隐私。API 背后的模型归属云厂商,客户的问题和答案都经过云厂商的模型处理;私有化部署的模型归属客户,客户的问题和答案数据有更好的隐私保护,尤其是如果客户场景是 RAG 应用,涉及客户的内部资料和数据,更建议用私有化部署的方式 |
| 差别2:灵活性。API 一般是按 token 计费,RPM/TPM 等指标并不明显;私有化部署则租期可长可短,token 数无限制,RPM/TPM 等通过扩容比较可控。 |
* [API 定价](/products/aitokenapi/0-ai-token-api-pricing)
| Q12:获取 API KEY 的 /llmapikey 的接口可以调用多次吗?API KEY 需要重新获取吗?API KEY 泄漏了怎么办? |
| ------------------------------------------------------------------------------------------------------------ |
| 第一次调用 /llmapikey 接口获取 API KEY,保存下来可以一直用;如果泄漏或者单纯想要重置 API KEY,可以再次调用 /llmapikey 接口,获取新的 API KEY,旧的 API KEY失效。 |
| Q13:支持联网搜索吗? |
| -------------------------------------------------------------------- |
| 联网搜索需要单独配置对应的API,使用[全网搜索 API](/products/aitokenapi/1-web-search-api) |
| Q14:deepseek-v3.1模型是否有参数支持关闭推理? |
| ------------------------------- |
| 不支持,只能在提示词引导关闭思考 |
| Q15:AI大模型API调用RPM是多少? |
| ------------------------------ |
| 不同模型的RPM限制不一样,随资源调度策略动态优化,不固定。 |
| Q16:AI接口调用报402错误码? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 402错误码是账号余额或资源包不足导致的,资源包、账单以及AI接口请求是15分钟的实时计量数据,提示402错误后您那边 [充值](https://portal.qiniu.com/financial/recharge) 或 [购买资源包](https://qmall.qiniu.com/template/MTMx?spec_combo=MzU4NQ\&ref=index) 即可,充值或购买资源包后,大约15分钟左右接口会恢复正常。 |
| Q17:API接口调用报ip in black list 错误? |
| ---------------------------------------------- |
| 这是因为使用了错误的API-KEY频繁调用接口导致的,您修改使用正确的API-KEY调用即可 |
| Q18:如何查询某个API-KEY的用量和计费信息? |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1、用量可以在七牛控制台 - [用量统计](https://portal.qiniu.com/ai-inference/usage) 查看,支持按API-KEY查询;
2、计费信息可以在七牛控制台 - [计费预估](https://portal.qiniu.com/ai-inference/bill) 查看,支持按API-KEY查询。
3、资源包抵扣后的计费数据在 [按量计费预估](https://portal.qiniu.com/financial/bills/estimated-consume) 界面查看,数据更新有一定延迟。 |
| Q19:为什么无法创建API-KEY? |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 目前AI产品仅支持中国大陆账号使用,暂不支持海外账号。
1、如果您注册的是海外账号的话,无法创建API-KEY是预期的;
2、如果注册的是中国大陆区域账号,创建失败:
A、可以先检查下账号是否欠费?欠费后将限制API-KEY创建;
B、如果确认账号未欠费,可以提供下具体错误信息,然后 [提交工单](https://support.qiniu.com/tickets/new-for-person) 由技术人员排查确认。 |
| Q20:AI接口调用报403(invalid user v2或access denied for invalid user)错误,如何处理? |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 这种403错误一般是风控系统巡查判定认定为非法注册大量账号、恶意机刷AI推理活动资源包奖励,导致AI调用被封禁;
提交申诉时需要您提供不是机刷的证明,包括但不限于:
1. 公众号/视频号/B 站等公域平台的内容分享链接;
2. 微信群/Discord 等私域社群的转发分享截图;
3. 证明材料中均需显示完整的推广链接,或推广海报。 |
| Q21:api请求报错`502`,显示`stream canceled, context done`错误,如何处理? |
| ------------------------------------------------------------ |
| 原因:一般是因为模型响应慢,客户端主动断开导致的报错,检查是否使用了非流式请求,建议调整为流式请求或调大客户端超时时间。 |
| Q22:api请求报错`429`,显示`UID rate limit reached for TPD (oversea) for UID`、`RPM`, `TPM`错误,如何处理? |
| ------------------------------------------------------------------------------------------------------------------------------ |
| 原因:一般是因为模型请求限频导致的,TPD是每日TOKEN限制,RPM是每分钟请求数,TPM是每分钟 Token 数,请求触发这些限制就会导致请求报错,可以先降低调用频率或改用其他模型先使用,建议需要调整的话需通过工单平台添加左侧专属商务经理联系确认。 |
| Q23:api请求报错`400`,参数错误,如何处理? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 原因:一般是因为客户端请求参数错误导致的,可以先参考 [AI接口文档](https://apidocs.qnaigc.com/) 检查下请求参数问题;如果自查后无法定位问题,可以在 [请求日志](https://portal.qiniu.com/ai-inference/request-log) 找到对应400错误的请求ID,提交 [工单](https://support.qiniu.com/tickets) 咨询技术支持,工单中提供下对应的请求ID内容。
控制台手动查询日志参考:[请求日志](/products/aitokenapi/2-request-log-api) 说明文档 |
| Q24:AI接口调用报`403 {"error":{"type":"forbidden","message":"Request not allowed"}} `错误,如何处理? |
| ---------------------------------------------------------------------------------------------------------------- |
| 一般是账号欠费或可用余额为负导致的,在七牛控制台 - 点击 [账户充值](https://portal.qiniu.com/financial/recharge) 补齐欠费,充值成功后,预计20min左右系统会自动解除限制。 |
| Q25:AI接口调用报错50MB限制,如何处理? |
| -------------------------------------------------------------------------------------------------------------------- |
| 目前相关模型单次消息体上限就是 50MB,超出大小会报错 |
|  |
| Q26:AI接口调用响应慢,如何处理? |
| -------------------------------------------------------------- |
| 如果模型响应耗时在秒级,是预期的;如果是非流式请求,可以在客户端修改stream为true,使用流式请求后再测试看看耗时情况 |
| Q27:AI接口调用报错`bad response status code 401, message: Invalid API Key, body: {"error":{"message":"Invalid API Key","type":"authentication_error"}}`,如何处理? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 是使用的API Key不对导致的,可以在[查看API Key](https://portal.qiniu.com/ai-inference/api-key)复制对应的API Key。 |
| Q28:AI接口调用报错`Your request was rejected by the safety system`,如何处理? |
| ------------------------------------------------------------------ |
| 是被模型安全检测拦截导致的,建议检查下请求内容是否存在违规内容? |
| Q29:AI模型的上下文限制(比如:DeepSeek-V4-Pro模型上下文1000k)是如何计算的? |
| --------------------------------------------------------------------------------------------------------------------------------------- |
| 该限制是指模型发行商说的这个模型支持“1M 上下文”;所谓“1M 上下文”指的是它支持 1,000,000 个 token;关于 token(词元)的数量取决于分词器怎么分词,即一个汉字是几个 token,或者一段话是几个 token,都取决于这个模型的分词器如何处理。 |
| Q30:七牛AI推理模型调用接口返回数据结构与模型官网返回的结构有区别吗? |
| ------------------------------------------------------------------------------------------------------------------------ |
| 七牛返回数据结构基本按OpenAI Chat Completions和Anthropic messages兼容,但不能保证与OpenAI和Anthropic官网同模型返回逐字段完全一致。如果是走七牛AI接口调用模型,返回数据以七牛接口为准。 |
| Q31:七牛控制台无法启用或创建API-KEY,操作按钮是灰色,是什么原因? |
| ------------------------------------------------------------- |
| 一般是账号欠费导致的,账号欠费后会限制七牛控制台API-KEY相关操作功能,您充值补齐欠费,账号解除欠费后会自动解除限制。 |
| Q32:七牛AI有文本向量、Embedding模型吗? |
| ---------------------------------------------------------- |
| 七牛暂时没有文本向量、Embedding模型,如果需要使用文本向量模型,建议您可以使用友商的Embedding模型。 |
| Q33:AI接口调用接口出现403 'apikey monthly quota exceeded' |
| ---------------------------------------------------------------------------------------------------- |
| 这个是由于API-KEY设置了日或者月使用额度的限制,关闭或者放大限制即可,在[API-KEY](https://portal.qiniu.com/ai-inference/api-key)管理中修改 |
| Q34:AI接口调用模型失败,报错示例:'model deepseek/deepseek-v4-pro is not available in your assigned model groups',如何处理? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 这个是由于API-KEY设置了模型范围限制导致的,如需对应api-key |
| api-key调用报错模型,可在 [API Key](https://portal.qiniu.com/ai-inference/api-key) 找到对应 api-key 点击 模型范围 添加对应模型ID即可。 |
| Q35:模型调用偶现超时失败? |
| ------------------------------------------------------------------------------------------------------------- |
| 一般是本地网络异常导致的,建议先确认下本地网络稳定性,确认本地网络正常,可以 [提交工单](https://support.qiniu.com/tickets/new-for-person) 由技术人员进一步排查确认。 |
| Q36:模型调用失败,报“No active subscription includes this model”错误? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 使用订阅套餐的api-key调用非订阅套餐内的模型ID导致的,可以在 [https://portal.qiniu.com/ai-inference/subscription](https://portal.qiniu.com/ai-inference/subscription) 查询订阅套餐可用模型范围,修改套餐支持的模型ID即可。。 |
**附录:**
* API文档:[/products/aitokenapi/inference-api/1-real-time-ai-interface-api](/products/aitokenapi/inference-api/1-real-time-ai-interface-api)
* API定价:[/products/aitokenapi/0-ai-token-api-pricing](/products/aitokenapi/0-ai-token-api-pricing)
* 支持的模型列表:[https://www.qiniu.com/ai/models](https://www.qiniu.com/ai/models)
* 专属 GPU 主机购买:[https://marketing.qiniu.com/activity/2024-1111-act](https://marketing.qiniu.com/activity/2024-1111-act?ref=developer.qiniu.com\&s_path=%2Faitokenapi%2F12896%2Fdeploy-deepseek-r1-distilled-model-gpu)
* DeepSeek R1 GPU 主机部署教程:[https://developer.qiniu.com/aitokenapi/12885/host-deployment-tutorial](https://developer.qiniu.com/aitokenapi/12885/host-deployment-tutorial)
* 更多文档:[https://www.qiniu.com/products/ai-token-api#document](https://www.qiniu.com/products/ai-token-api#document)
# AI推理邀请、注册FAQ (/faq/aitokenapi/share-to-earn/13461-aitoken-Invite-registration-earn)
最近更新时间: 2026-04-30 17:48:19
### Q1:AI推理如何推广好友? [#q1ai推理如何推广好友]
开通推广功能后,系统会为您生成专属的邀请链接。您可以直接复制链接分享,也可以生成微信海报或小程序二维码进行分享。
具体操作方式:
1:[推广页面](https://www.qiniu.com/ai/promotion/invite) [https://www.qiniu.com/ai/promotion/invite](https://www.qiniu.com/ai/promotion/invite) 登录账号

2:登录完成后,点击 【立即推广拿百亿 Token】 奖励可以看到具体的推广链接

3:将邀请链接复制给好友注册即可,只有通过专属链接注册的账号才可以获取邀请奖励
# DNS 服务器问题确认及修改 (/faq/cdn/basic-use-of/1438-the-dns-server-problem-identification-and-modification)
最近更新时间: 2026-05-08 16:22:08
## 一,确认是否是DNS问题。 [#一确认是否是dns问题]
用户出现上传下载慢的问题,可以使用dig命令来检测dns服务器地址是否设置正确。如下图所示,蓝色框中即为dns服务器地址。

把蓝色框中的ip地址放入([https://www.ip138.com/](https://www.ip138.com/) )的搜索框,如下图。


查询到的结果就是你的dns服务器所在的地理位置及运营商。
如果信息显示的城市结果离你很远,或者跨运营商了,就表明dns设置存在问题。
比如,dns 设置为8.8.8.8或114.114.114.114可能会导致cdn网络无法定位你的位置,从而无法选择最优节点。
## 二,修改DNS设置。 [#二修改dns设置]
确认dns出问题后,登录[http://www.ip.cn/dns.html](http://www.ip.cn/dns.html)
查找你所在地的DNS服务器地址,根据自己的系统参照下面的更改设置方法进行修改:
WIN XP:
[https://jingyan.baidu.com/article/d621e8da60d9bf2865913ffb.html](https://jingyan.baidu.com/article/d621e8da60d9bf2865913ffb.html)
Win7:
[https://jingyan.baidu.com/article/ca00d56c11d659e99eebcfdd.html](https://jingyan.baidu.com/article/ca00d56c11d659e99eebcfdd.html)
win8:
[https://jingyan.baidu.com/article/f71d603774ee781ab641d1d2.html](https://jingyan.baidu.com/article/f71d603774ee781ab641d1d2.html)
Windows 10:
[http://jingyan.baidu.com/article/1612d50058aa86e20e1eee96.html](http://jingyan.baidu.com/article/1612d50058aa86e20e1eee96.html)
MAC OS:
[https://jingyan.baidu.com/article/93f9803f3f6389e0e46f55b4.html](https://jingyan.baidu.com/article/93f9803f3f6389e0e46f55b4.html)
Unix:
[http://os.51cto.com/art/201004/194716.htm](http://os.51cto.com/art/201004/194716.htm)
linux:
[https://jingyan.baidu.com/article/ca41422f66beab1eae99edce.html](https://jingyan.baidu.com/article/ca41422f66beab1eae99edce.html)
# 视频播放卡顿、无法播放,应该怎么办? (/faq/cdn/basic-use-of/4082-video-playback-caton-unable-to-play)
最近更新时间: 2017-09-30 17:28:45
# 视频播放卡顿 [#视频播放卡顿]
视频播放缓冲时间长,播放卡顿。
问题分析:
1:检查播放的域名是否是测试域名,比如 `*.bkt.clouddn.com`。测试域名访问有限制,不适合在正式环境中使用,建议绑定自定义域名:[/products/cdn/0-fusion-quick-start](/products/cdn/0-fusion-quick-start)
2:通过avinfo查看视频元信息的码率:`bit_rate`,avinfo使用详情参考:[/products/dora/audio-and-video-processing-api/2-audio-and-video-metadata-information-avinfo](/products/dora/audio-and-video-processing-api/2-audio-and-video-metadata-information-avinfo)
码率与带宽的换算:bit\_rate/1024/1024
再用 [http://www.speedtest.net/](http://www.speedtest.net/) 测试网络的下行带宽,然后与上面的码率换算后的带宽进行比较。
如果是码率过高造成的视频播放卡,可以使用多媒体处理的音视频转码,将码率设置低一点。音视频转码请参考:[/products/dora/audio-and-video-processing-api/3-audio-and-video-transcoding-avthumb](/products/dora/audio-and-video-processing-api/3-audio-and-video-transcoding-avthumb)
# 视频无法播放 [#视频无法播放]
问题分析:
1:最常见的就是的浏览器或者播放器不支持该视频的编码格式,例如谷歌浏览器不支持编码格式为mpeg4的视频,需要特定的播放器才能正常播放。编码格式可以通过avinfo查看视频元信息的编码格式(codec\_name),avinfo详情参考:[/products/dora/audio-and-video-processing-api/2-audio-and-video-metadata-information-avinfo](/products/dora/audio-and-video-processing-api/2-audio-and-video-metadata-information-avinfo)
如果是编码格式造成的无法播放,可以使用多媒体处理的音视频转码,将音视频转成播放器或者浏览器支持的编码格式。音视频转码请参考:[/products/dora/audio-and-video-processing-api/3-audio-and-video-transcoding-avthumb](/products/dora/audio-and-video-processing-api/3-audio-and-video-transcoding-avthumb)
2:音视频本身文件损坏,你可以将上传之前的文件拿到播放器去播放,观察是否正常的播放。如果不能正常的播放,说明该音视频可能损坏。
3:如果上述的问题都是正常的,可以提交工单,需提供以下信息:
一:ping 自定义加速域名的截图;
二:完整的资源url链接
七牛工程师会在工单上帮你分析无法正常播放的原因。
# 七牛云对文本文件下载优化的支持 (/faq/cdn/download-problem/1571-seven-niuyun-support-for-text-file-download-optimization)
最近更新时间: 2017-09-19 17:18:19
**需求情景描述**
当你需要对上传完成的文件进行压缩,然后对压缩过的文件进行下载,来减少流量,七牛云提供了以下解决方案来帮助你节省流量
**解决方案**
首先七牛对用户的上传文件,原样上传(保存最原始的文件),其次当用户请求的时候,七牛自动会对文本文件进行压缩操作(gzip)。然后客户端(浏览器)如果支持gzip的话,会自动解压缩。这样会给用户省去很多流量费用。
七牛解决方案: 支持的文件类型:
text/plain
text/css
text/javascript
text/xml
application/x-javascript
application/json
application/xml
application/xml+rss
application/javascript
# 如何配置域名的 CNAME (/faq/cdn/domain-name-configuration-problem/1322-how-to-configure-cname-domain-name)
最近更新时间: 2026-04-29 17:50:41
# CNAME 简介 [#cname-简介]
CNAME 即指别名记录,也被称为规范名字。一般用来把域名解析到别的域名上,当需要将域名指向另一个域名,再由另一个域名提供 ip 地址,就需要添加 CNAME 记录。
***
# CNAME 配置 [#cname-配置]
如果需要对七牛创建的加速域名进行 CNAME 配置,您可以在创建加速域名后,通过以下方式为您的加速域名添加解析。
# 一. 获取CNAME值 [#一-获取cname值]
在 **七牛管理控制台** 页面选择 [**CDN**](https://portal.qiniu.com/cdn/overview) ,选择 [**域名管理**](https://portal.qiniu.com/cdn/domain),鼠标停留在域名下图红框的符号上即可点击复制 ,如下图所示。
***
# 二. 添加CNAME记录 [#二-添加cname记录]
添加CNAME记录需要在您的\*\*`域名厂商`**处配置,比如您在 阿里云 / 腾讯云 / 新网 等处购买的域名,您需要前往**`购买域名的厂商`\*\*相应管理控制台,添加域名解析。
1. 打开您购买域名的厂商官网,登陆后在页面右上角找到 **`控制台`** 或 相关管理后台入口。
如果您不清楚域名解析的入口,建议查看您域名厂商的产品文档,或者寻求域名厂商的售后支持。
2. 在域名厂商的控制台中,找到您的域名解析添加页面,例如:
a. 阿里云:在控制台页面的左侧,产品与服务栏中选择 **域名**。
b. 腾讯云:在控制台的云产品中,搜索并选择 **云解析**。
c. DNSPOD:在控制台页面左侧,选择 **域名**。
其他域名厂商请参考产品文档说明或咨询产品售后。
3. 在域名产品的列表中找到您加速域名对应的\*\*`主域名`,点击域名后面的 **`解析设置`** 或 \*\*`解析`,进入解析设置页。
4. 选择 `添加记录` ,依次填写 **主机记录**,**记录类型** 以及 **记录值**,其他可设为默认值。
如果您不清楚如何填写主机记录,请参考下文第5步提供的示例。
| 参数 | 填写说明 | 注意事项 |
| ---- | ----------------------------------------------------------------------- | ------------- |
| 主机记录 | 填写加速域名对应的主机前缀 | 该参数唯一,请勿自定义 |
| 记录类型 | 选择 CNAME 类型 | 该参数唯一,请勿自定义 |
| 线路类型 | 保持默认 | 该参数可以根据需求自行调整 |
| 记录值 | 域名创建后,七牛提供的 **CNAME** | 该参数唯一,请勿自定义 |
| TTL | 保持默认 | 该参数可以根据需求自行调整 |
5.解析示例:
假设您购买的一级域名为 qiniu.com
您需要先在七牛控制台创建加速域名,比如您创建了 cdn.qiniu.com 或 img.qiniu.com 之类的自定义二级域名。
创建完成后,在域名厂商后台添加解析记录时,您需要填写主机记录为加速域名对应的前缀,如 cdn 或 img 即可。
`注意:主机记录需要和加速前缀完全一致,请对应填写。`
常见的普通域名主机记录填写方式举例:
| 创建的加速域名 | 域名类型 | 主机记录 |
| ------------------------------------- | ---- | --------- |
| qiniu.com | 普通域名 | @ |
| [www.qiniu.com](http://www.qiniu.com) | 普通域名 | www |
| cdn.qiniu.com | 普通域名 | cdn |
| video.cdn.qiniu.com | 普通域名 | video.cdn |
常见的泛域名主机记录填写方式举例:
| 创建的加速域名 | 域名类型 | 主机记录 |
| -------------- | ---- | ------ |
| .qiniu.com | 泛域名 | \* |
| .cdn.qiniu.com | 泛域名 | \*.cdn |
配置完成,如何检查解析是否生效
# 如何处理 CNAME 记录和 A 记录冲突? [#如何处理-cname-记录和-a-记录冲突]
同一个域名只能使用 A 记录解析,或者使用 CNAME 解析,如果您在添加域名的 CNAME 解析时提示存在冲突,请检查该主机记录是否已经存在 A 记录。
解决方案:
1. 如果您的域名用于绑定七牛云存储
* 重新添加一个未在其他地方使用的二级加速域名,例如您原本在七牛绑定的是 qiniu.com 或 [www.qiniu.com](http://www.qiniu.com) ,建议您重新在空间绑定加速域名例如 cdn.qiniu.com 或者 xxx.qiniu.com ,然后针对新添加的加速域名,配置对应的解析即可。
* 删除您原有的 A 记录就可做 CNAME 解析
(**注**:A 记录删除会导致您的域名无法访问该域名的原有资源,谨慎操作)
2. 如果您的域名用于加速您的源站服务器站点
* 在确认 CDN 配置无误情况下,可以删除A记录。
* 通过配置 CNAME 解析,使得域名能够绑定到七牛的加速线路上。
**注** : 修改 CNAME 配置生效时间:新增 CNAME 记录会实时生效,而修改 CNAME 记录需要等待生效时间 TTL。
# 如何判断 CNAME 是否正确配置? [#如何判断-cname-是否正确配置]
先在CDN 的 域名管理 中检查域名是否创建成功,如果已经创建成功,且已经按照步骤添加了 CNAME 解析,但是无法正常访问资源外链,或保持“等待 CNAME ”状态,可以通过以下方法检测本地的域名解析,如果域名长时间没有创建成功,您可以[提交工单](https://support.qiniu.com/tickets/new)处理。
您可以通过 nslookup 您的加速域名,域名是否解析到 CNAME 值上。
* linux/mac系统您可以通过如图所示的命令 `dig 您的加速域名` 查看,第一条是否解析到您配置的CNAME值。
* windows系统可以通过Win+R 或 点击左下角的“开始”按钮打开“开始”菜单,打开“运行”,输入cmd回车。
在命令行模式下输入`nslookup 您的加速域名`,例如 nslookup qn.vinchi.club,在结果中可以看到您复制的cname值即可。
**注**:详细排查步骤请参考文档 [**检验域名创建是否成功**](/faq/cdn/domain-name-configuration-problem/5326-how-to-check-whether-the-configuration-is-successful)
***
# FAQ [#faq]
## 为什么使用 CDN 需要 CNAME 记录? [#为什么使用-cdn-需要-cname-记录]
在七牛云开发者平台创建加速域名后,会给域名分配一个 “CNAME域名”(例:cdn-example-com.qiniudns.com)。用户需要在域名服务商处,配置一条 CNAME 记录,将访问加速域名的请求指向这个 cdn-example-com.qiniudns.com 域名记录,生效后访问加速域名时解析将会正式指向七牛云 CDN ,之后由 CDN 完成调度,使得该域名所有的请求都开始享有 CDN 加速效果。
## CNAME 记录和 A 记录是什么关系? [#cname-记录和-a-记录是什么关系]
* CNAME 记录和 A 记录都是在 DNS 解析过程中的一种记录值类型。
* A 记录会直接解析到某个 IP ,CNAME 会解析到另一个域名,之后再对另一个域名继续解析,直到解析出节点。
所以,A 记录只能够实现域名解析到 IP ,七牛提供的 CDN 加速服务会根据用户所在位置选择并返回最优节点 IP 。
# 什么是防盗链设置中的空 Referer (/faq/cdn/domain-name-configuration-problem/1337-what-is-hotlinking-prevention-set-of-empty-referer)
最近更新时间: 2018-01-02 16:03:30
# 什么是 Referer? [#什么是-referer]
这里的 Referer 指的是 HTTP 头部的一个字段,也称为 HTTP 来源地址(HTTP Referer),用来表示从哪儿链接到目前的网页,采用的格式是 URL。换句话说,借着 HTTP Referer 头部网页可以检查访客从哪里而来,这也常被用来对付伪造的跨网站请求。
Referer 的正确英语拼法是 referrer。由于早期 HTTP 规范的拼写错误,为了保持向后兼容就将错就错了。其它网络技术的规范企图修正此问题,使用正确拼法,所以目前拼法不统一。
比如,您如果点击下面资料来源后面维基百科的网址链接,那么浏览器会产生一个送到维基百科的 Web 服务器的 HTTP 请求,该请求中则会包含一个 Referer 字段(即本页面的地址)
资料来源:[http://zh.wikipedia.org/wiki/HTTP ](http://zh.wikipedia.org/wiki/HTTP%E5%8F%82%E7%85%A7%E4%BD%8D%E5%9D%80)
# 什么是空 Referer,什么时候会出现空 Referer? [#什么是空-referer什么时候会出现空-referer]
首先,我们对空 Referer 的定义为,Referer 头部的内容为空,或者,一个 HTTP 请求中根本不包含 Referer 头部。
那么什么时候 HTTP 请求会不包含 Referer 字段呢?根据 Referer 的定义,它的作用是指示一个请求是从哪里链接过来,那么当一个请求并不是由链接触发产生的,那么自然也就不需要指定这个请求的链接来源。
比如,直接在浏览器的地址栏中输入一个资源的 URL 地址,那么这种请求是不会包含 Referer 字段的,因为这是一个 “凭空产生” 的 HTTP 请求,并不是从一个地方链接过去的。
# 那么在防盗链设置中,允许空 Referer 和不允许空 Referer 有什么区别? [#那么在防盗链设置中允许空-referer-和不允许空-referer-有什么区别]
在防盗链的白名单设置中,如果指名白名单中包含空的 Referer,那么通过浏览器地址栏直接访问该资源 URL 是可以访问到的;
但如果不指名需要包含空的 Referer,那么通过浏览器直接访问也是被禁止的。
# 关于www域名加速的时候与主机A记录冲突策略 (/faq/cdn/domain-name-configuration-problem/1400-on-the-www-domain-acceleration-and-host-a-record-when-conflict-strategy)
最近更新时间: 2026-04-29 17:54:05
*
原理
空间配置图
## 原理 [#原理]
首先明白下 一个域名(例 :[www.echohu.top)](http://www.echohu.top)) 若做了A 记录操作到ip 是不能在做cname的绑定到七牛
可以使用以下策略
[www.echohu.top这个域名请求的资源会先从你指向的七牛的空间去获取资源,当七牛的空间不存在这个资源他会从镜像源test.echohu.top获取资源](http://www.echohu.top这个域名请求的资源会先从你指向的七牛的空间去获取资源,当七牛的空间不存在这个资源他会从镜像源test.echohu.top获取资源) 而这个test.echohu.top有指向一个你的服务器ip 首先我们以echohu.top的域名为例 这是总体的图片

## 空间配置图 [#空间配置图]
### [www.echohu.top的域名指向一个七牛空间这个七牛的空间test-wjw](http://www.echohu.top的域名指向一个七牛空间这个七牛的空间test-wjw) [#wwwechohutop的域名指向一个七牛空间这个七牛的空间test-wjw]

### 七牛的的存储空间设置镜像源为test.echohu.top的域名 [#七牛的的存储空间设置镜像源为testechohutop的域名]

# 为什么自定义域名的状态显示未生效? (/faq/cdn/domain-name-configuration-problem/1563-why-haven-t-state-of-the-custom-domain-name-suggest-take-effect)
最近更新时间: 2017-09-19 17:14:37
1. 访问 portal.qiniu.com 查看空间设置中的域名设置,在自定义域名栏目中可查看到自定义域名的审核状态。
2. 自定义域名的配置需要审核,当域名显示解析未生效时,请先将 cname 指向页面中提示的信息。
3. 当域名的 cname 配置完成时,查看自定义域名的配置详情,系统将检测是否已指向 CNAME 目标,检测成功的域名显示 “使用中”。
# 时间戳防盗链 (/faq/cdn/domain-name-configuration-problem/1670-timestamp-hotlinking-prevention)
最近更新时间: 2026-04-29 17:59:21
# 1. 简介 [#-1-简介]
七牛 CDN 支持多种[访问控制](/products/cdn/configuration-management-fusion/access-control-configuration)方式;其中,时间戳防盗链可以通过对时间有关的字符串进行签名,将时间、签名信息通过一定的方式传递给 CDN 边缘节点服务器进行鉴权,从而正确响应合法请求、拒绝非法请求。相比于 referer 防盗链,时间戳防盗链的安全性更强。
## 1.1 原理说明 [#11-原理说明]
时间戳防盗链的目的是使得每个请求的 url 都具有一定的 **“时效性”**,所以 url 本身需要携带过期时间相关的信息,同时还需要确保这个过期时间不能被恶意修改,因此采用 md5 算法,将 **key、过期时间、文件路径**等信息进行加密得到签名加入 url,并在 CDN 节点进行验证。
## 1.2 鉴权过程 [#12-鉴权过程]
整个时间戳防盗链的实现需要以下几个部分配合:
* 客户端:负责发送原始请求给客业务服务器以及发送带时间戳加密的 url 给 CDN 节点进行验证;
* 源站业务服务器:根据约定的[算法](#3)生成带签名参数的 url 返回给客户端;
* CDN 节点:负责对客户端进行时间、签名校验。
主要分为以下几个步骤:
(1)用户管理员在七牛 [CDN 控制台](https://portal.qiniu.com/cdn/domain) 配置 key ,并将 key配置进业务服务器。
(2)当客户端请求资源时,将原始 url 发送至业务服务器。
(3)业务服务器根据[计算逻辑](#3),将带有时间戳签名的 url 返回至客户端。
(4)客户端使用带有时间戳签名的 url 请求资源。
(5)CDN 检查 url 签名的合法性。
**注意:若同时配置了 referer 防盗链、IP 黑白名单、时间戳防盗链,有一项不满足条件,即为不通过,响应 403 。**
# 2.配置步骤 [#2配置步骤]
## 2.1 开始配置 [#21-开始配置]
(1)登录七牛开发者平台后,进入[CDN 控制台](https://portal.qiniu.com/cdn/domain),选择【域名管理】。
(2)进入域名配置界面,**访问控制**模块下的**时间戳防盗链**点击【修改配置】进行时间戳防盗链的配置。

## 2.2 配置 KEY [#22-配置-key]
key 即用于加密 url 的密文,需要填写主要和备用 key,两个 key 不能相等,一般来说使用其中一个即可。用户可以点击【随机生成】生成 key;也可以自行使用算法生成,如下方[生成实例](https://)中`gen_key()`函数。
获取 key 以后,需要将 key 配置到业务服务器中,并实现相关签算逻辑。具体实现方式可参考[算法说明](#3)及代码[生成实例](#4)。

## 2.3 校验时间戳 URL [#23-校验时间戳-url]
为保证服务器正确实现了签算逻辑,防止因签算逻辑错误导致 403 错误,在正式开启前必须进行 url 的正确性校验。
在业务服务器实现相关签算逻辑后,可获取一个生成的带有时间戳签名的 url 粘贴至下面输入框。
若提示错误,请仔细阅读[算法说明](#3)进行错误检查。

> ### 时间戳 URL 计算器 [#时间戳-url-计算器]
>
> 为方便用户辅助检查,七牛提供一个 [URL 时间戳签名计算器](https://codesandbox.io/s/qiniu-time-referer-demo-trnw9),请确保您的业务服务器可以与该时间戳计算器获得一致的结果。
> **但需注意:此计算器仅用于辅助检查,请勿为通过检验直接将计算粘贴至检验框中。**
## 2.4 确认开启时间戳防盗链 [#24-确认开启时间戳防盗链]
点击【确定】即可正式开启时间戳防盗链功能。
**在正式开启前,请务必确认业务服务器已经可以正确签算时间戳签名 url ,保证所有访问 url 都正确携带相关参数**,

# 3.算法说明 [#-3算法说明-]
## 3.1 签名算法 [#31-签名算法]
* key:在开启时间戳防盗链时,可以在控制台上输入或随机生成。
* path:访问资源的 url 中的路径部分,例如:访问的 url 为 `http://xxx.yyy.com/DIR1/dir2/vodfile.mp4?v=1.1`,则 `path = /DIR1/dir2/vodfile.mp4`(注意不含 querystring 部分)。
* T:url 过期时间,当超过设置的过期时间时,该鉴权失效。按 unix\_time 的 16 进制小写形式表示。 如 `2015-08-01 00:00:00 –> 1438358400 –> 55bb9b80`。**注意,请务必使用 16 进制时间,若没有转化为 16 进制形式直接使用 unix\_time, 将会被 CDN 认为是一个很大的过期时间,导致无法起到时间戳鉴权的作用。**
签名原始字符串 `S = key + url_encode(path) + T` 。
签名 `SIGN = md5(S).to_lower(),to_lower` 指将字符串转换为小写;
\*\* 注:本文提到的 url\_encode 算法,都是斜线不参与编码的 utf-8 编码,下同。\*\*
## 3.2 签名参数传递方式 [#32-签名参数传递方式]
``和``作为URL查询参数进行传递。
* 签名参数 sign、 t ,sign 在前,t 在后;
* ``、`` 替换为对应的值, 实际url中不含\<> ;
例如:
原始访问的 url 为: `http://xxx.yyy.com/DIR1/dir2/vodfile.mp4?v=1.1`
最终形成的访问 url 为: `http://xxx.yyy.com/DIR1/dir2/vodfile.mp4?v=1.1&sign=&t=`
## 3.3 访问 url [#33-访问-url]
访问 url 的 path 部分也需要 url\_encode,其算法与签名时使用 url\_encode 算法一致。斜线 / 不编码。
访问 url 为:
```
scheme + "://" + host + url_encode(path) + query_part
```
### 访问 url 生成示例 [#访问-url-生成示例]
下图给出了一个访问 url 的生成示例。
原始 url : [http://xxx.yyy.com/DIR1/中文/vodfile.mp4?v=1.2。](http://xxx.yyy.com/DIR1/中文/vodfile.mp4?v=1.2。)
资源过期时间为:2015年8月1日。
| 参数 | 值 |
| ---- | ---------------------------------------- |
| path | /DIR1/中文/vodfile.mp4 |
| KEY | 9388f4ba63b89bba5b9b84aa70a92eaac099d39b |
| T | 55bb9b80 |
签名原始字符串 `S = key + url_encode(path) + T`
`S = 9388f4ba63b89bba5b9b84aa70a92eaac099d39b/DIR1/%E4%B8%AD%E6%96%87/vodfile.mp455bb9b80`
`SIGN = b4b7f94dd7817ce0283b5491861c3936`
`T=55bb9b80`
访问 url 为:
`http://xxx.yyy.com/DIR1/%E4%B8%AD%E6%96%87/vodfile.mp4?v=1.2&sign=b4b7f94dd7817ce0283b5491861c3936&t=55bb9b80`
# 4. 生成实例 [#-4-生成实例-]
python版
```python
#! /usr/bin/env python
#coding:utf-8
from hashlib import md5
import urllib
import sys
import time
from urlparse import urlparse, parse_qs
import traceback
import uuid
import base64
# 要求正确的 url_encode 编码,斜线 / 不编码;
# 井号 # 等在浏览器会直接识别为其它含义,若在 path 中必须编码;
# 问号 ? 等在 url 中有特殊含义,若在 path 中必须编码;
# 部分字符 "~!$&'()*+,:;=@[]" 不含双引号 ",虽有特殊含义,但在 path 部分,编码与否,都可以正常访问;
# 另一些,如 双引号 ", 空格 " ", 汉字等必须编码;
#
# 建议 url 的 path 中尽量不含上述部分,建议 url 中尽量不含上述部分。
#
# 参考
# https://www.wikiwand.com/zh-cn/%E7%99%BE%E5%88%86%E5%8F%B7%E7%BC%96%E7%A0%81
# https://www.wikiwand.com/en/Percent-encoding
# https://www.wikiwand.com/de/URL-Encoding
def url_encode(s):
return urllib.quote(s.decode(sys.stdin.encoding).encode("utf8"), safe="/")
def to_deadline(rang):
return int(time.time()) + rang
def t16(t):
return hex(t)[2:].lower() # 16 进制小写形式
def summd5(str):
m = md5()
m.update(str)
return m.hexdigest()
def sign(key, t, path):
a = key + url_encode(path) + t
print("S: " + a)
sign_s = summd5(a).lower()
sign_part = "sign=" + sign_s + "&t=" + t
return sign_part
def sign_url(key, t, p_url):
url = urllib.unquote(p_url)
up = urlparse(url)
path = up.path
sign_part = sign(key, t, path)
p_query = up.query
if p_query:
query_part = "?" + p_query + "&"+ sign_part
else:
query_part = "?" + sign_part
return up.scheme + "://" + up.netloc + url_encode(path) + query_part
def printurl_encode_help():
print '''
# 要求正确的 url_encode 编码,斜线 / 不编码;
# 井号 # 等在浏览器会直接识别为其它含义,若在 path 中必须编码;
# 问号 ? 等在 url 中有特殊含义,若在 path 中必须编码;
# 部分字符 "~!$&'()*+,:;=@[]" 不含双引号 ",虽有特殊含义,但在 path 部分,编码与否,都可以正常访问;
# 另一些,如 双引号 ", 空格 " ", 汉字等必须编码;
#
# 建议 url 的 path 中尽量不含上述部分,建议 url 中尽量不含上述部分。
#
# 参考
# https://www.wikiwand.com/zh-cn/%E7%99%BE%E5%88%86%E5%8F%B7%E7%BC%96%E7%A0%81
# https://www.wikiwand.com/en/Percent-encoding
# https://www.wikiwand.com/de/URL-Encoding
'''
def signt_help():
print
print "./signt.py time "
print "./signt.py deadline "
print "./signt.py check "
print "./signt.py show "
print "./signt.py genkey"
print "\n"
print '''
# example:
# url = "http://xxx.yyy.com/DIR1/中文/vodfile.mp4?sfdf=dfe"
# key = 12345678
# 过期时间点: Sat Aug 1 00:00:00 2015 ==> 1438358400
# 执行: signt.py deadline 12345678 http://xxx.yyy.com/DIR1/中文/vodfile.mp4?sfdf=dfe 1438358400
# 签名 url 为: http://xxx.yyy.com/DIR1/%E4%B8%AD%E6%96%87/vodfile.mp4?sfdf=dfe&sign=6356bca0d2aecf7211003e468861f5ea&t=55bb9b80
# 执行: signt.py check 12345678 "http://xxx.yyy.com/DIR1/%E4%B8%AD%E6%96%87/vodfile.mp4?sfdf=dfe&sign=6356bca0d2aecf7211003e468861f5ea&t=55bb9b80"
# 显示: True
'''
print "\n"
printurl_encode_help()
def sign_time(key, url, rang):
print("range: " + str(rang))
deadline = to_deadline(rang)
sign_deadline(key, url, deadline)
def sign_deadline(key, url, deadline):
print("\nkey: " + key)
print("\nurl: " + url)
print("\ndeadline: " + t16(deadline) + ", " + str(deadline) + ", " + time.ctime(deadline))
print
t = t16(deadline)
signed_url = sign_url(key, t, url)
print "\nsigned_url:"
print signed_url
print
# signed_url 是正确 url_encode 编码后签出的 url
# 见 url_encode 方法注释
def sign_check(key, signed_url):
print "\n 要求: 待检测的 url 是正确 url_encode 编码后签出的 url"
printurl_encode_help()
u = urlparse(signed_url)
t = parse_qs(u.query)["t"][0]
sign_s = summd5(key + u.path + t).lower()
print
print("deadline: " + str(int(t, 16)) + " , " + time.ctime(int(t, 16)))
print(sign_s)
print(parse_qs(u.query)["sign"][0] == sign_s)
def show_t(t):
i_t = int(t, 16)
s_t = time.ctime(i_t)
print(t + " : " + str(i_t) + " : " + s_t)
# 仅用于测试
def gen_key():
print base64.urlsafe_b64encode(str(uuid.uuid4()))[:40].lower()
try:
type = sys.argv[1]
if type == "time":
sign_time(sys.argv[2], sys.argv[3], int(sys.argv[4]))
elif type == "deadline":
sign_deadline(sys.argv[2], sys.argv[3], int(sys.argv[4]))
elif type == "check":
sign_check(sys.argv[2], sys.argv[3])
elif type == "show":
show_t(sys.argv[2])
elif type == "genkey":
gen_key()
else:
signt_help()
except Exception as e:
print traceback.format_exc()
signt_help()
```
# 为什么做了 CNAME 解析还是显示请配置 CNAME (/faq/cdn/domain-name-configuration-problem/3884-why-did-the-cname-parsing-or-display-please-match-cname)
最近更新时间: 2018-01-02 15:49:20
通常有以下几种原因
# 场景一 [#场景一]
用户绑定的加速域名为正在使用的网站域名,如:[www.abc.com](http://www.abc.com)
## 问题原因 [#问题原因]
因为一个域名只能解析一次 A 记录或者 CNAME ,所以当用户在七牛绑定这种域名并增加一条解析是没效果的。
## 解决办法 [#解决办法]
起一个没用解析过的二级域名(可以根据业务命名),如 images.abc.com
# 场景二 [#场景二]
## 问题原因 [#问题原因-1]
用户在绑定加速域名后做 CNAME 解析,CNAME 记录值填写错误导致解析无效
举例说明:域名 images.abc.com
在域名服务商系统里解析的时候,主机记录为 images ,记录值为 七牛提供的 iduxxxx.qiniudns.com 这样的地址
## 解决办法 [#解决办法-1]
解析完成后一般1分钟后就可以通过外链访问资源了,解析之后可以通过命令行`dig`命令查看线路是否配置好了。
# 场景三 [#场景三]
## 问题原因 [#问题原因-2]
某些域名商(如百度、360)配置解析后,会自动开启域名商的 CDN 服务,此时用`dig`命令查询域名解析结果是 A 记录。
## 解决办法 [#解决办法-2]
如果可以正常访问文件,是可以忽略“等待 cname”的提示的。但更建议联系域名商,禁用域名商提供的 CDN 服务。
# 场景四 [#场景四]
解析配置正确,且用`dig`命令查询,域名已经正确解析到七牛提供的 cname 地址,但仍显示等待 cname 。
## 问题原因 [#问题原因-3]
部分地区的 LocalDNS 未更新解析结果。
域名解析记录的生存时间(TTL)一般为 10 分钟(如果修改过,可以手动修改回 10 分钟),所以解析修改后,需要等待 10 分钟左右, LocalDNS 的解析记录更新。但某些小运营商的 LocalDNS 服务器,不会严格遵守设置的 TTL 时间,即使解析时设置了 TTL 时间为 10 分钟,解析结果有可能会缓存数小时甚至数天。
## 解决方法 [#解决方法]
如果等待 10 分钟左右刷新页面,仍然显示等待 cname ,便可以确认是部分地区的 LocalDNS 未更新,此时只能等待解析结果更新。
不过,这种情况下仅是少数地区的某些小运营商解析结果不对,绝大部分地区的解析是没有问题的。
# 最后 [#最后]
如果都确认了不是以上问题,给我们提交工单,技术支持会为您尽快排查原因和解决问题。
# 常见问题 - CDN 回源配置相关问题 (/faq/cdn/domain-name-configuration-problem/4064-understanding-and-setting-up-the-way-back-to-the-source-host)
最近更新时间: 2026-05-28 10:30:42
# 简介 [#简介]
CDN 加速支持指定不同的回源方式对源站进行加速,本文列出了部分关于 CDN 回源配置您可能需要了解的问题。
Q:回源示意图
Q:回源流程说明
Q:什么是回源IP、回源域名 ?
Q:什么是回源 HOST ?
Q:回源 HOST 和源站域名有什么区别?
Q:如何填写测试资源?
Q:对网站 [http://www.a.com/](http://www.a.com/) 加速,回源配置应该如何填写?
Q:为什么加速域名和源站域名不能相同?
Q:为什么域名回源,域名测试不通过
Q:域名测试的作用是什么,测试资源可以删除吗
Q:有回源的固定IP列表么,需要回源IP加白名单
Q:访问CDN的客户端IP地址,到源站的请求头是什么?
如果本文仍然无法解决您的问题,您也可以通过 **[工单系统](https://support.qiniu.com/tickets/new)** 将您的问题反馈给我们。
***
# Q:回源示意图 [#q回源示意图]

# Q:回源流程说明 [#q回源流程说明]
### 1. 指定七牛云存储为源站 [#1-指定七牛云存储为源站]
CDN 回源时,将根据您配置的源站存储空间名称,回源到存储机房对应空间中。
### 2. 指定源站域名回源 [#2-指定源站域名回源]
CDN 回源时,先根据源站域名解析得到一个源站 IP ,然后向该 IP 发起请求,通过配置的回源 HOST 确定,需要访问该源站服务器上的哪一个站点。
例如: 源站域名为 `www.a.com` ,回源 HOST 为 `www.b.com` 。
* 回源时,先解析到 `www.a.com` 解析到的 IP, 并向该 IP 发起回源请求,请求时 HTTP 数据包的 HOST 头部值为您配置的回源 HOST `www.b.com` ,代表访问源站服务器上的站点 `www.b.com` 。
### 3. 指定IP地址回源 [#3-指定ip地址回源]
CDN 回源时,向该 源站IP 发起请求,通过配置的回源 HOST 确定,需要访问该源站服务器上的哪一个站点。
例如: 源站 IP 为 1.1.1.1 ,回源 HOST 为 `www.b.com` 。
* 回源时,请求的是 1.1.1.1 对应的源站服务器上的站点 `www.b.com` 。
| Q2: 什么是回源IP、回源域名 ? |
| -------------------------------------------------------------------------------------------------------------------------------- |
| 参考 回源示意图,回源IP 和 回源域名,就是服务器的IP 和 服务器上绑定的域名,作用是通过IP 或者 域名直接找到对应的服务器,回源域名要求一定是可以访问的。 |
| Q3: 什么是 回源 HOST? |
| ---------------------------------------------------------------------------------------------------------------- |
| 参考 回源示意图,当服务器源站存在多个不同站点时,CDN 将根据您的回源 HOST 域名,决定 CDN 将从哪一个站点中获取资源。 |
| Q4: 回源 HOST 和源站域名有什么区别? |
| -------------------------------------------------------------------------------------------------------- |
| 参考 回源示意图,源站域名将会通过 DNS 解析,获取到源站的 IP,解析后的回源流程和 IP 回源方式没有区别。 |
| 源站域名:只决定回源的 IP ,不决定访问时的具体站点。 |
| 回源 HOST :决定了访问到该 IP 上的具体站点名称。 |
| Q5: 如何填写测试资源? |
| ---------------------------------------------------------------- |
| 测试资源代表在您源站服务器上,回源 HOST 对应的站点中,一个可供访问的资源,将用于 CDN 在部分场景下的全链路访问性监测。 |
| Q6: 对网站 `http://www.a.com` 加速,回源配置应该如何填写?? |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `对域名www.a.com 加速,CDN域名与网站域名相同,此时只能设置IP回源。`
只可以使用IP地址回源,回源 HOST 设置自定义回源host,填写 `www.a.com` 即可,由于之前的www已存在A记录解析,域名绑定完成后,需要删除或者暂停www的A记录解析,添加www的七牛cname解析后,[www.a.com的CDN加速才能生效。](http://www.a.com的CDN加速才能生效。) |
| `对域名qcdn.a.com 加速,CDN域名与网站域名不同。`
如果源站服务器 IP 固定,您可以使用IP地址回源,回源 HOST 填写 [www.a.com](http://www.a.com) 即可。
如果源站服务器 IP 需要通过域名解析动态获取,您可以使用源站域名回源,回源 HOST 填写 [www.a.com](http://www.a.com) 即可。
域名绑定完成后,www的解析保持不动,新增qcdn记录的cname解析,表示qcdn.a.com去wwww\.a.com所在服务器的www站点拉取资源,进行CDN加速。访问qcdn.a.com就有加速效果了。 |
| **`注意:`** 如果需要加速的域名为 HTTPS 域名,且源站强制 HTTP 访问时重定向到 HTTPS,您需要配置加速域名和回源协议为 HTTPS,或者关闭源站的重定向跳转。 |
| Q7: 为什么加速域名和源站域名不能相同?为什么会出现解析冲突 |
| ---------------------------------------------------------------------------------------------------------------- |
| 一个域名最终只解析到一个位置,A记录和cname解析共存会造成冲突,一个主机记录只能有一个A记录或者cname解析。即解析到 CDN 加速节点后,将无法用于获取源站的 IP 信息,所以加速域名和源站域名无法配置为同一个域名。 |
****Q8: 为什么域名回源,域名测试不通过****
域名测试需要源站支持Head请求,支持curl,****`源站测试需要响应200状态码,不能是其他状态码,不能出现301/302跳转到CDN域名的情况,否则会出现无限重定向死循环,CDN回源源站,源站出现强制HTTPS跳转CDN域名`****
1: HTTP协议回源
```bash
curl -IL http://源站IP或者源站域名/测试资源 -H 'host:回源host'
```
2: HTTPS协议回源
```bash
curl -IL https://回源Host/测试资源 -H 'host:回源host' --resolve 回源Host:443:服务器IP(域名回源的方式,需要填写源站域名配置A记录的IP)
```
3: 高级回源配置,指定端口号-HTTP回源
```bash
curl -IL http://源站IP或者源站域名:回源端口号/测试资源 -H 'host:回源host'
```
4:高级回源配置,指定端口号-HTTPS回源
```bash
curl -IL https://回源Host/测试资源 -H 'host:回源host' --resolve 回源Host:回源端口号:服务器IP(域名回源的方式,需要填写源站域名配置A记录的IP)
```
根据你们的回源配置,进行对应的测试,源站响应200后,测试即可通过
| Q9: 域名测试的作用是什么,测试资源可以删除吗 |
| ------------------------------------------------------------------------------------------------ |
| 域名测试的作用是检查源站是否可用,源站状态是否健康,防止域名创建后,源站异常导致网站崩溃,测试资源不能删除,删除后会导致后续源站测试和健康状态检查失败,导致域名处理缓慢,必须提交工单协助处理。 |
| Q10: 有回源的固定IP列表么,需要回源IP加白名单 |
| ---------------------------------------------------------------------------------------- |
| 回源IP会不定期调整,所以如果需要回源IP,您可以通过 **[工单系统](https://support.qiniu.com/tickets/new)** 联系我们。 |
| Q11: 访问CDN的客户端IP地址,到源站的请求头是什么? |
| ------------------------------------------------------------------------------------ |
| 目前没有,用户客户端请求源站会请求到CDN节点的,CDN节点再去回源的,回源到您的源站的是我们回源节点IP地址的。您这边可以看下从CDN边缘日志查看一下的客户端IP地址 |
| Q12: 源站是海外,CDN选择国内线路,国内访问慢 |
| -------------------------------------------------- |
| 存在跨境回源的问题,进行回源访问,因为属于跨境访问,比较慢是正常情况,再次访问,节点有缓存会快很多。 |
| Q13: CDN请求miss占比很高,请求慢 |
| -------------------------------------------------------------------------------------------------------------------------------------------- |
| 可能是CDN缓存配置时间比较短,可以参考[缓存配置](/products/cdn/configuration-management-fusion/2-cache-configuration)将缓存时间设置长点;可能是因为链接后添加了随机参数,导致请求回源,可以去掉链接后面的参数。 |
# 如何验证域名已经配置成功 (/faq/cdn/domain-name-configuration-problem/5326-how-to-check-whether-the-configuration-is-successful)
最近更新时间: 2026-04-29 17:43:58
# 验证的使用场景 [#验证的使用场景]
1.您的域名创建后,无法访问资源,不返回状态码,请参考步骤一和步骤二。
2.您的域名创建后,状态为 等待CNAME ,请参考步骤二。
3.您的域名创建后,自行检查CNAME解析,请参考步骤二。
**不适用场景**:访问资源时已经返回了JSON格式信息或者HTTP状态码,请您根据相关信息排查。
# 第一步:检查域名是否已经创建成功 [#第一步检查域名是否已经创建成功]
在 **七牛管理控制台** 页面选择 [**CDN**](https://portal.qiniu.com/cdn/overview) ,选择 [**域名管理**](https://portal.qiniu.com/cdn/domain),可以查看具体域名的状态。
* 处理中:创建域名处理中,通常情况下 10-30 分钟完成,若超过30分钟未配置完成,您可以[提交工单](https://support.qiniu.com/)反馈。
* 成功:当域名状态显示成功,表示您的域名已经创建成功,您可以参考步骤二排查。
# 第二步:检查域名的CNAME是否配置正确 [#第二步检查域名的cname是否配置正确]
在 **七牛开发者平台** 页面选择[**对象存储**](https://portal.qiniu.com/kodo/bucket),点击具体的对象存储空间后,在空间概览中查看 CDN 加速域名 的状态。
* 成功:CNAME正确解析。
* 等待CNAME:CNAME未正确解析。
## 如果您在域名厂商处已经配置CNAME解析后,仍旧是“等待CNAME”状态。 [#如果您在域名厂商处已经配置cname解析后仍旧是等待cname状态]
您可以根据下面提供的方法进行测试,如果已经成功解析到您的CNAME,则可以忽略不计。
**注意:如果未成功解析到您的CNAME,请您重新检查您的解析记录,主机记录和记录值是否填写有误,请参考[如何配置域名的CNAME](/faq/cdn/domain-name-configuration-problem/1322-how-to-configure-cname-domain-name)。**
* linux/mac系统您可以通过如图所示的命令 `dig 您的加速域名` 查看,第一条是否解析到您配置的CNAME值。
* windows系统可以通过Win+R 或 点击左下角的“开始”按钮打开“开始”菜单,打开“运行”,输入cmd回车。
在命令行模式下输入`nslookup 您的加速域名`,在结果中可以看到您复制的cname值即可。
# 资源访问有问题时提工单所需的信息 (/faq/cdn/download-problem-cdn/3866-could-not-access-to-resources-to-the-repair-order-the-required-information)
最近更新时间: 2017-12-01 12:54:04
当提工单给七牛技术支持的时候,应该提供哪些信息方便七牛的技术支持更快的解决问题。
# 1.链接 [#1链接]
提供资源的完整链接(以文本的形式),如[https://ymh.qiniuts.com/233.gif](https://ymh.qiniuts.com/233.gif) 包含域名和路径
如果url有parameters(参数)、query(查询)、fragment(信息片断)等也需要带上。
# 2.headers [#2headers]
一次连接的完整的普通头(general header)、响应头(response header)和请求头(request header),可以用浏览器或其他工具抓包获取,以chrome浏览器为例:
### 普通头: [#普通头]
### 响应头: [#响应头]
### 请求头: [#请求头]

截取headers一定要清晰完整,最好复制下来,以\_文本的形式\_再发一份。
# 3.响应 [#3响应]
如果是七牛的报错,响应里会是一个josn的文件,如下图
如果响应有内容,可以把图片或视频等截图发给我们,方便我们比对,如下图。
# 4.ping和dig [#4ping和dig]
使用ping和dig命令,并把结果完整截图发给我们
# 5.本地网络情况 [#5本地网络情况]
包括带宽情况,是否是独占网络,本地的网络运营商和地区
# 6.其他 [#6其他]
如果有工具可以进行检测,也可以把结果发给我们,对于关键信息并且文本较多,最好复制粘贴再发给我们一份,以便更快解决问题。
# 计费流量与日志监控流量的区别 (/faq/cdn/flow-calculation-problem/4066-the-difference-between-the-billing-flow-and-log-monitor-flow)
最近更新时间: 2018-01-18 10:23:35
加速域名日志中记录的流量数据,是我们应用层日志统计出的流量,但是实际产生的网络流量却要比应用层统计到的流量要高出 **7%-15%** ;这个主要的原因有两个:
1.TCP/IP 包头的消耗:
* a. 由于HTTP请求是基于 TCP/IP 协议的,每个包大小最大为 1500 字节,1500 字节中含有 TCP 和 IP 插进来的 40 个字节的包头。
* b. 当前以太网帧格式采用的是 Etherent Ⅱ 格式:
即: 前导码(8byte) | 目的 MAC(6byte) | 源 MAC(6byte) | 类型 (byte) | 数据 (46\~1500byte) | FCS(4byte),除去数据,固定开销为 26byte
* c. IP 包头 20byte
* d. TCP 包头 20byte
因此,TCP 传输的数据分段大小为(6\~1460byte),假设网络良好,没有丢包也没有重传,则包头固定开销为 26+20+20=66byte
计算时如果忽略 TCP 三次握手,忽略 TCP 四次挥手,按照如上计算出包头占比:\[66\*(日志数据量/1460)]/日志数据量 = 66/1460 = 4.52%
2.TCP 重传:
根据互联网物理网络的负载情况,正常情况下,我们所发送的包会有 3-10% 左右会被互联网丢弃掉。被丢弃掉之后,服务器会对丢弃的部分进行重传。重传动作是由内核层协议栈处理的,应用层也无法统计到,这部分流量占我们日志计算出流量的比例,根据网络的好坏而不等。在凌晨互联网轻载的情况下,重传率会较低;在晚高峰互联网重载的时候,重传会上升;一般情况下,在 3%-7% 之间。
# 如何申请并使用免费证书 (/faq/cdn/https-issues-related-to/3725-how-to-apply-for-and-use-free-certificate)
最近更新时间: 2026-05-08 15:55:51
## 如何申请并使用免费证书 [#如何申请并使用免费证书]
* 本文档介绍如何申请并使用七牛免费证书,主要步骤有:
* 1.证书申请
* 2.免费证书使用
* 2.1创建https加速域名时使用
* 2.2http升级为https时使用
* 免费证书使用说明: 提供下载,在我的证书处下载
### 申请七牛免费证书 [#申请七牛免费证书]
* 1.登录七牛管理控制台,选择 [SSL 证书](https://portal.qiniu.com/certificate/ssl),购买证书
* 2.选择 TrustAsia 免费证书

* 3.点击「核对信息并支付」,补全域名信息


* 4.选择验证方式,如果域名托管商 CNAME 解析和 TXT 有冲突,请选择文件验证
* 5.查看证书详情,根据选择的验证方式进行验证

* 6.1 **选择dns验证** 需要到域名服务商 进行 cname 解析
* 6.2 使用dig命令查看TXT解析
* 7.1 **选择文件验证** 需要到 xuzhuo.support2technical.me 对应站点下上传文本文件,文件名为 `.well-known/pki-validation/fileauth.txt`, 文本文件内容为:`2018082806105747stl44uj6z707i7iqsv3b42v4cqkc1v86k4d7ujonr85yfvn7`
```
已绑定域名 xuzhuo.support2technical.me(通用名称)
域名所有权验证
验证类型:FILE
验证文件路径:/.well-known/pki-validation/fileauth.txt
验证文件值:2018082806105747stl44uj6z707i7iqsv3b42v4cqkc1v86k4d7ujonr85yfvn7
```
* 7.2 文件验证校验, 访问 `http://xuzhuo.support2technical.me/.well-known/pki-validation/fileauth.txt`, 返回文本值为:`2018082806105747stl44uj6z707i7iqsv3b42v4cqkc1v86k4d7ujonr85yfvn7`
* 8.**注意:如果DNS验证中的 txt记录 与 cname记录 冲突导致无法验证成功的话,请重新申请订单更换为文件验证的方式**
* 9.查看证书验证状态,当订单状态为已签发时,可以到我的证书处查看证书
### 使用免费证书 [#使用免费证书]
* 1.创建加速域名时选择对应的证书
* 2.已经创建的域名,升级https时选择对应的证书
注:修改域名的https配置时,如果下拉框中没有可绑定的证书,请检查证书包含的域名和需要绑定的域名是否完全一致。
# 私有 M3U8 播放发生 ts 资源加载报401(Unauthorized)错误 (/faq/cdn/other-dora/4040-private-m3u8-play-ts-resource-loading-at-401-unauthorized-error)
最近更新时间: 2017-08-30 14:42:11
# 问题描述 [#问题描述]
私有空间的M3U8文件在调用pm3u8接口无法播放,提示下面的报错:

# 问题原因 [#问题原因]
这样的报错原因基本有两种:
## 原因一 [#原因一]
pm3u8接口在设置 expires 或者 deadline 参数值过小,而视频播放时长较长,导致私有ts资源url下载凭证链接失效,致使视频无法播放。
## 原因二 [#原因二]
客户私有空间的缓存策略选择默认缓存,或者m3u8文件的缓存时间过长,并且开启了回源鉴权策略,导致客户在播放的时候命中的是之前的ts文件,而之前的ts文件已经失效,导致播放失败。
回源鉴权请参考:[/products/cdn/configuration-management-fusion/access-control-configuration/2-back-to-the-source-authentication](/products/cdn/configuration-management-fusion/access-control-configuration/2-back-to-the-source-authentication)
# 解决方法 [#解决方法]
## 原因一解决办法 [#原因一解决办法]
pm3u8接口在设置 expires 或者 deadline 参数值要比视频的播放总时长要大
## 原因二解决办法 [#原因二解决办法]
以下方法推荐选择第二种:
1:关闭回源鉴权策略(不推荐)

2:设置m3u8文件的缓存时间为0s;

# 测试域名使用规范 (/faq/cdn/other-fusion/1319-test-domain-access-restriction-rules)
最近更新时间: 2026-06-09 19:00:04
**如果您正在使用或将要使用七牛测试域名,请务必仔细阅读本内容!**
七牛云测试域名是用户在创建云存储空间时系统自动生成的七牛域名,以 clouddn.com / qiniucdn.com / qiniudn.com / qnssl.com / qbox.me 等结尾,此类域名仅供用户测试和体验七牛产品功能,不能用于正式生产环境。
为了确保测试域名的规范使用,保障七牛云用户的权益,我们将对测试域名加强管理,具体措施如下:
1. 测试域名不得作为生产域名,如因不规范使用或被当作正式域名使用的,在使用期间导致的业务受损或其他类故障不在SLA保障范围内。
(注意:域名类型是普通域名,不会受此限制)
2. 不得使用测试域名存储、发布、传播违法违规内容。当测试域名下有非法资源时,该域名将被直接冻结并不予解封。如对七牛云及其他用户造成损害,七牛云保留进一步追责的权利。
3. 自2020年2月14日起所有测试域名将禁止下载应用程序(**apk、ipa、exe、dmg等**),如需使用请绑定自定义域名进行访问。
4. 流量限制:测试域名每个自然日访问回源总流量限10GB,当日回源流量达到10GB后,将会禁止对新文件访问。
5. 回收机制:
a. 每个测试域名生命周期为30个自然日(已有测试域名自回收功能上线之日起算,新产生的测试域名自系统自动生成之日起算),超过30日系统将自动回收,回收即为域名删除。
b. 在测试域名生命周期终结之前我们会邮件通知您,您也可以自行在 七牛云-管理控制台 的域名详情中查看测试域名剩余的回收时间。
6. 为了您的正常业务不受影响,请您规范使用测试域名,并尽快[绑定自定义域名](https://portal.qiniu.com/cdn/domain/create)进行访问(如已绑定,请忽略)。
7. 测试域名不支持续费续期等操作,30个自然日到期后自动回收,无法进行相关操作
8. 测试域名会忽略全部参数,所以测试域名访问链接是不支持进行添加参数处理操作的
因测试域名不服务于生产环境,所以测试域名不在SLA保障范围内。
# 判断丢包率及延时的趋势 (/faq/cdn/other-fusion/1628-judge-the-trend-of-packet-loss-rate-and-delay)
最近更新时间: 2017-08-21 10:32:51
在使用mtr检测连通性时,如果发现中间节点丢包率很高这是正常的事情,因为骨干路由器不一定会对所有的ping包做响应。
主要是查看最后一跳的丢包情况,以及丢包率是否在某个节点之后都有大幅度上升,只要中间节点丢包率有降低就可以忽略,延时情况也是同理。
总之判断丢包率及延时的趋势时,不是只看一个节点。另外还需要判断IP所在地,看是否有绕路,以及是否有路由回环等问题。
# 关于全站加速问题 (/faq/cdn/other-fusion/1632-questions-about-total-station-to-accelerate)
最近更新时间: 2020-02-14 16:59:04
问题:
网站采用xxx搭建,启用七牛cdn后,登录通过 `http://www.XXX.com/admin` 无法登录后台,输入正确用户名和密码后点击登录没有反应。
1. 没启用七牛cdn加速前的源站是没有这个问题的
2. 系统的缓存设置是默认设置,没有做任何更改
这里说的是全站直接使用cdn加速。请问这是什么问题?
原因:
你好, 我们的cdn这边默认是静态文件加速的,所以你全站加速时会将一些动态请求也缓存住。
所以再次请求就没法到你源站了, 就登录不上去了。建议你使用插件进行加速静态文件即可。
# 使用 curl 理解七牛请求 (/faq/cdn/other-fusion/2641-use-the-curl-seven-cows)
最近更新时间: 2018-11-21 18:52:43
使用七牛的 curl 实现表单上传
```
curl -v upload.qiniup.com -F'token=JOiPUijNB0t8vbNKIufpn5gDKmg0G-uFHBlrQoV2:rmU9wAEmrSV9FxPuD0V1Z1BgzKw=:eyJzY29wZSI6Impzc2RrIiwiZGVhZGxpbmUiOjE0ODQwMzY0NTJ9' -F'file=abc'
```
注释:其中参数 `-F/--form` 模拟http表单提交数据
使用 curl 模拟七牛的刷新接口
```
curl -i -X POST "http://fusion.qiniuapi.com/refresh" -H 'Content-Type: application/json' -H 'Authorization: QBox vI2xPIjOoh7udcRw4GdYNvf3o_gKsCx9wdZaC9u-:0KPRVoBiHR2c9K-t9bBr5DVDuUU=' -d '{"urls":["http://7xr0n9.com1.z0.glb.clouddn.com/3.txt.zip"]}'
```
注释:参数的 -H 其实就是 http 请求的头部 而七牛是靠这个签证头部 Authorization 来识别你的请求是否非法
-X POST 是以 post 的形式来请求 -d 就是 post 携带的数据
七牛的大部分接口其实用简单的 curl 理解起来就是 签算 Authorization 鉴权 post 请求数据

这个请求如果说你的已经签算好:
`Authorization QBox vI2xPIjOoh7udcRw4GdYNvf3o_gKsCx9wdZaC9u-:0KPRVoBiHR2c9K-t9bBr5DVDuUU=`
那么请求就如下
```
curl -i -X POST "http://fusion.qiniuapi.com/v2/tune/refresh" -H 'Content-Type: application/json' -H 'Authorization: QBox vI2xPIjOoh7udcRw4GdYNvf3o_gKsCx9wdZaC9u-:0KPRVoBiHR2c9K-t9bBr5DVDuUU=' -d '{"urls":["http://7xr0n9.com1.z0.glb.clouddn.com/3.txt.zip"],"dirs":["http://7xr0n9.com1.z0.glb.clouddn.com/*"]}'
```
# 运营商劫持反馈 (/faq/cdn/other-fusion/2755-operator)
最近更新时间: 2025-04-14 13:32:13
# 运营商劫持投诉 [#运营商劫持投诉]
首先需要确认是否被劫持了。
劫持一般分为 DNS 劫持和内容劫持。如果遇到以下两种现象:
1. 域名解析到七牛的 cname 地址,但是跟我们确认过,域名实际解析到的节点非七牛 CDN 节点;
2. 文件内容被篡改,加入了广告链接、跳转链接等。
投诉内容格式参考:
> 有客户反馈在北京移动被劫持了,访问到的节点不是七牛云存储公司的CDN节点(或者文件被篡改)。
>
> 测试链接如下:`<这里提供劫持链接>`,麻烦帮忙解决!
# 移动劫持 [#移动劫持]
[移动投诉网址](http://www.10086.cn/support/selfservice/suggest/)
# 联通劫持 [#联通劫持]
1、找到联通在本地的最高等级投诉热线;
2、确定投诉内容,投诉时,不要向接线员描述这些细节,而要告诉他们:当我访问某个域名时,经常跳到奇怪的站点;
3、收集证据,浏览器截图、录屏动画、网页源代码、Fiddler HttpWatch Wireshark等工具的抓包数据都可以作为证据;
4、拨打投诉热线,发送证据,并确认投诉的问题已经发送邮件,请检查是否收到。
# 电信劫持 [#电信劫持]
[电信投诉网址](https://www.189.cn/suggestions/)
# 工信部投诉 [#工信部投诉]
如果各个运营商没有及时解决或者解决比较慢,可以在工信部进行反馈投诉。
[工信部投诉网址](https://yhssglxt.miit.gov.cn/web/complaintChannel)
# 刷新缓存的方法 (/faq/cdn/refresh-the-cache-problem/1325-refresh-the-cache-and-the-effect-of-time)
最近更新时间: 2026-04-29 18:02:26
# 主动提交刷新缓存请求 [#主动提交刷新缓存请求]
提交刷新请求的方法有三种:
1. 在 [七牛开发者中心](https://portal.qiniu.com) 左侧产品列表中找到 CDN ,进去后点击 [刷新预取](https://portal.qiniu.com/domain/refresh) 。
按要求填写需要刷新的 URL,点击提交即可。

2. 工具刷新
使用七牛云提供的 [qshell](/products/kodo/0-qshell) 命令行工具,参考使用文档,先设置密钥,然后执行 [cdnrefresh](https://github.com/qiniu/qshell/blob/master/docs/cdnrefresh.md) 命令来刷新缓存。
3. 通过API 接口提交刷新请求:
七牛各服务端的 [SDK](/sdk-tools/sdk#official-sdk) 都提供了刷新缓存的方法。
另附:[刷新接口文档](/faq/cdn/refresh-the-cache-problem/1325-refresh-the-cache-and-the-effect-of-time)
**注:** 如果使用了 **镜像存储** ,不能直接刷新,需要参考 [镜像存储刷新缓存方法](/faq/cdn/4215-image-storage-refresh-the-cache-method)
提交刷新请求后 **10 分钟** 左右,刷新全网生效。
刷新 **https** 域名下的链接,会同时刷新 **http** 和 **https**,占用两次刷新额度。
# 通过携带随机 URL 参数刷新 [#通过携带随机-url-参数刷新]
## 实现方法: [#实现方法]
例如,如果 [http://dn-odum9helk.qbox.me/resource/gogopher.jpg](http://dn-odum9helk.qbox.me/resource/gogopher.jpg) 这个图片资源没有更新,可以在该 URL 后面加上问号随机参数的形式来让 CDN 强制刷新:[http://dn-odum9helk.qbox.me/resource/gogopher.jpg?v=1234567](http://dn-odum9helk.qbox.me/resource/gogopher.jpg?v=1234567) ,CDN 拿到这个 URL 后会强制回源站中取回最新的资源。
## 实现原理: [#实现原理]
如果域名没有开启忽略 URL 参数,那么在 CDN 节点上,对于:
[http://dn-odum9helk.qbox.me/resource/gogopher.jpg](http://dn-odum9helk.qbox.me/resource/gogopher.jpg)
[http://dn-odum9helk.qbox.me/resource/gogopher.jpg?v=1](http://dn-odum9helk.qbox.me/resource/gogopher.jpg?v=1)
[http://dn-odum9helk.qbox.me/resource/gogopher.jpg?v=2](http://dn-odum9helk.qbox.me/resource/gogopher.jpg?v=2)
这三个 URL 是独立缓存的。所以,如果携带之前没用过的参数访问,CDN 会强制回源站中取回最新的资源。
## 注意事项: [#注意事项]
1. 关闭忽略 URL 缓存的域名,才可以使用这种方法刷新。

2. 若使用 [http://dn-odum9helk.qbox.me/resource/gogopher.jpg?v=1](http://dn-odum9helk.qbox.me/resource/gogopher.jpg?v=1) 访问一次,不会刷新 [http://dn-odum9helk.qbox.me/resource/gogopher.jpg](http://dn-odum9helk.qbox.me/resource/gogopher.jpg) 的缓存。所以如果要保证访问到最新的资源,需要携带之前没有使用过的参数。
3. 此方法适用于需要频繁更新的文件,为保证参数不重,可以在每次更新文件后,携带的参数 +1 ,或者取 unix 时间戳来作为参数。
# CDN 缓存常见问题 (/faq/cdn/refresh-the-cache-problem/1503-the-fusion)
最近更新时间: 2026-05-29 12:00:57
## 缓存刷新和文件预取有什么区别? [#缓存刷新和文件预取有什么区别]
缓存刷新:是指通过管理控制台或者 API 接口的方式将缓存在 CDN 节点的资源文件删除或标记为过期,对于新的请求会回源站服务器获取新的文件。
文件预取:是提前将资源文件缓存在 CDN 节点,新的请求过来之后可以直接命中,无需回源服务器获取资源文件,以低源站压力,提升首次访问体验。
## 刷新缓存后要多久生效? [#刷新缓存后要多久生效]
缓存刷新全网生效时间一般为 10 分钟。
## 使用七牛云对象存储服务,文件更新需要手动刷新吗? [#使用七牛云对象存储服务文件更新需要手动刷新吗]
需要。使用了七牛云对象存储服务时,存储资源更新(替换或删除)后,需要手动刷新触发 CDN 节点刷新缓存,否则可能会导致依然能够访问到原文件的情况。
## 发现通过七牛云 CDN 访问的资源和源站资源不一致怎么办? [#发现通过七牛云-cdn-访问的资源和源站资源不一致怎么办]
通过管理控制台或 API 接口进行缓存刷新。
## 刷新预取入口: [#刷新预取入口]
### 管理控制台: [#管理控制台]
在七牛控制台 产品列表 中点击 CDN ,进去后可以看到刷新预取功能
### API: [#api]
[/products/cdn/8-fusion-api-cache-management](/products/cdn/8-fusion-api-cache-management)
### 如何判断请求是否触发回源,没有请求到缓存 [#如何判断请求是否触发回源没有请求到缓存]
可以打开浏览器的开发者模式,network中查看对应的请求,如果请求中有Age这个响应头,就说明触发了缓存,单位是秒;没有这个响应头,说明请求进行了回源。日志中,hit是命中缓存,miss是触发了回源。
# CDN 缓存规则设置 (/faq/cdn/refresh-the-cache-problem/1680-cdn-cache-rule-set)
最近更新时间: 2026-04-29 18:07:30
# 一、背景介绍 [#一背景介绍]
1. 七牛提供的加速功能只针对静态文件
2. 动态文件使用了cdn缓存后影响访问效果,如,登录界面,使用缓存后会串号
# 二、解决方法 [#二解决方法]
## 场景1 [#场景1]
自定义域名绑定在七牛空间,建议空间中只存储静态文件,采用动静分离的模式。
示例:[www.qiniu.com](http://www.qiniu.com) 的域名A记录到源站 IP 123.123.123.123,绑定自定义域名为 img.qiniu.com,然后将域名 cname 到七牛提供的域名上。使用时将 img.qiniu.com 的资源链接嵌入到代码中即可。
## 场景2 [#场景2]
自定义域名回源到客户源站
## 示例1:在源站配置文件中设置缓存时间为 0,Nginx 为例 [#示例1在源站配置文件中设置缓存时间为-0nginx-为例]
```
server {
listen 80;
server_name localhost;
location ~* ^(.+\.php)(.*)$ {
root html;
expires -1;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
```
## 示例2:设置自定义域名的缓存时间 [#示例2设置自定义域名的缓存时间]
* 2.1. 找到缓存设置界面


* 2.2 设置的规则和按钮

* 2.3.添加缓存设置
* 2.3.1 推荐配置

* 2.3.2 添加后缀

* 2.3.3 添加目录

# CDN 缓存配置建议 (/faq/cdn/refresh-the-cache-problem/1711-fusion-cdn-cache-configuration-recommendations)
最近更新时间: 2020-02-14 16:57:59
使用场景如下建议
小文件
| 优先级 | 网站元素 | 路径模板 | 缓存时间 | 忽略URL参数 |
| --- | ---- | ---------------------------------------- | ---- | ------- |
| 1 | 目录页 | /\*/ | 1h | 否 |
| 2 | 常见文本 | /\*.(js\|css\|txt\|xml) | 1d | 否 |
| 3 | 常见文件 | /\*.(shtml\|html\|htm) | 1h | 否 |
| 4 | 常见图片 | /\*.(jpg\|jpeg\|png\|psd\|bmp\|gif\|ico) | 7d | 否 |
流媒体
| 优先级 | 网站元素 | 路径模板 | 缓存时间 | 忽略URL参数 |
| --- | ---- | --------------------------------------------------------------- | ---- | ------- |
| 1 | 媒体文件 | /\*.(mp3\|wav\|wmv\|mp4\|avi\|flv\|rmvb\|swf\|aif\|au\|dat\|rm) | 30d | 否 |
| 2 | 媒体文件 | /\*.(m3u8) | 0s | 否 |
下载分发
| 优先级 | 网站元素 | 路径模板 | 缓存时间 | 忽略URL参数 |
| --- | ---- | ------------------------ | ---- | ------- |
| 1 | 下载文件 | /\*.(apk\|zip\|rar\|ipa) | 30d | 是 |
# 刷新预取 FAQ (/faq/cdn/refresh-the-cache-problem/2501-refresh-the-prefetch)
最近更新时间: 2026-05-25 16:43:52
| Q1:删除/覆盖了七牛空间里的文件,为什么访问链接还能访问到旧文件? |
| ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| 七牛空间里的文件,使用 CDN 来访问,而 CDN 是通过缓存来加速的。更新源站的文件后,需要 [刷新缓存](/faq/cdn/refresh-the-cache-problem/1325-refresh-the-cache-and-the-effect-of-time) ,才可以访问到新文件。 |
| Q2:我已经提交了刷新请求,为什么还没有刷新成功? |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 提交刷新后,全网生效需要 10 分钟左右,可以在 [七牛管理控制台](https://portal.qiniu.com) 的 [刷新预取](https://portal.qiniu.com/domain/refresh) 界面,点击操作记录,来查看刷新进度。
如果刷新状态异常,或者状态显示成功,但还是会访问到旧文件,请 [提交工单](https://support.qiniu.com/)。 |
| Q3:提交了 1 个刷新链接,为什么消耗了 2 个刷新额度? |
| ------------------------------------------------ |
| 刷新 https 域名下的链接,会同时刷新 http 和 https 的链接,消耗两次刷新额度。 |
| Q4:使用镜像存储,如何刷新缓存? |
| -------------------------------------------------------------------------------------------------------------------- |
| 参考 [刷新缓存方法](/faq/cdn/refresh-the-cache-problem/1325-refresh-the-cache-and-the-effect-of-time#3) 一文中的 “使用镜像存储刷新缓存方法”。 |
| Q5:刷新和预取有什么区别? |
| ----------------------------------------------------------------------------- |
| 刷新缓存:清除 CDN 节点缓存,从源站获取最新资源。
文件预取:是在 CDN 节点没有资源缓存时预下载(如果节点缓存已存在,预取时不会覆盖)。 |
| Q6:怎么刷新CDN缓存?有工具批量刷新缓存吗 |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 刷新缓存方法请参考:
[/faq/cdn/refresh-the-cache-problem/1325-refresh-the-cache-and-the-effect-of-time](/faq/cdn/refresh-the-cache-problem/1325-refresh-the-cache-and-the-effect-of-time)
方法1: portal.qiniu.com 控制台刷新缓存,点击左侧 cdn => 刷新预取
方法2: api 接口地址:[https://developer.qiniu.com/fusion/api/1229/cache-refresh](https://developer.qiniu.com/fusion/api/1229/cache-refresh)
方法3:使用[qshell](https://github.com/qiniu/qshell/blob/master/docs/cdnrefresh.md)工具[批量刷新缓存](https://github.com/qiniu/qshell/blob/master/docs/cdnrefresh.md) |
| Q7:刷新预取时,提示 `仅支持处理当前账号下的DCDN加速域名资源` ,怎么处理? |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 原因:域名不存在或刷新预取入口错误导致的。
1、CDN域名刷新预取提交入口:[CDN刷新预取](https://portal.qiniu.com/cdn/refresh-prefetch)
2、全站加速域名刷新预取提交入口:[全站加速域名刷新预取](https://portal.qiniu.com/dcdn/refresh-prefetch) |
# 源站更新源cdn如何同步 (/faq/cdn/refresh-the-cache-problem/2522-update-how-source-cdn-synchronization-source-stand)
最近更新时间: 2026-05-08 16:00:40
# 情景一 cdn的源站是七牛的情况下 [#情景一-cdn的源站是七牛的情况下]
模式是这样的


* 首先 资源的读取的情况是这样的 客户端访问时候先从 cdn 拉取资源 如果 cdn 存在缓存那么资源直接从 cdn 返回给客户端
* 其次 客户端从 cdn 没有拉到资源那么就会从七牛的存储空间拉取资源
* 最后 如果七牛空间和 cdn 都不存在资源那么 客户端就会从客户的源站拉取资源
这个是源站回源到七牛情况,所以客户源站资源的更新需要先把七牛空间的资源删除,七牛过滤控制台手动删除,参考 [删除文件](/products/kodo/kodo-console-guide/file-management/8-delete-the-file) 再刷新下[ cdn 缓存](https://portal.qiniu.com/cdn/refresh-prefetch) 这样客户端访问才会直接打回到客户的源站取最新资源。
# 情景二 cdn源站直接指向自己域名或ip [#情景二-cdn源站直接指向自己域名或ip]

* 首先 资源的读取的情况是这样的 客户端访问时候先从cdn 拉取资源 如果cdn存在缓存那么资源直接从cdn返回给客户端
* 最后 如果七牛空间和cdn 都不存在资源那么 客户端就会从客户的源站拉取资源
这个是源站回源到客户自己域名或ip,所以客户源站资源的更新 刷新下 [cdn 缓存](https://portal.qiniu.com/cdn/refresh-prefetch) 这样客户端访问才会直接打回到客户的源站取最新资源
# 刷新缓存失败,验证文件一致性方法 (/faq/cdn/refresh-the-cache-problem/3644-refresh-the-cache-fails-consistency-method-validation-file)
最近更新时间: 2017-09-19 17:14:42
更新/删除文件后,遇到访问文件与上传的文件不一致时,需要刷新 CDN 缓存来解决。刷新方法参考:
[/faq/cdn/refresh-the-cache-problem/1325-refresh-the-cache-and-the-effect-of-time](/faq/cdn/refresh-the-cache-problem/1325-refresh-the-cache-and-the-effect-of-time)
刷新文件后,对于已知修改部分的文本文件,可用肉眼判断文件是否刷新成功。
对于其他文件,可以用对比文件 md5 的方法来进行验证。
1. 对于 MacOS、Linux 操作系统,可在终端用 md5 file\_name 命令计算文件 MD5 :

1. 对于 Windows 系统,可借助第三方工具来计算 MD5 ,这里推荐一款免费、轻量的软件:Hash(MD5校验工具)
# 访问资源与上传资源不一致 (/faq/cdn/refresh-the-cache-problem/4078-access-to-resources-and-upload-resources)
最近更新时间: 2026-04-29 18:01:11
# 问题描述 [#问题描述]
访问的资源与上传的资源不一致
# 问题原因 [#问题原因]
## 原因一 [#原因一]
cdn 节点缓存了相同的 url 链接,但是资源不同,比如覆盖上传文件,因为 cdn 是按照资源的 url 进行缓存,如果访问的 url 相同,那么就会命中缓存,直接返回 cdn 中的资源,而不是去源站拉取最新的资源。您可以刷新 cdn 缓存解决此问题。
如何刷新请参考:
[/faq/cdn/refresh-the-cache-problem/1325-refresh-the-cache-and-the-effect-of-time](/faq/cdn/refresh-the-cache-problem/1325-refresh-the-cache-and-the-effect-of-time)
## 原因二 [#原因二]
在确保原因一描述的情况没有问题,访问的文档与上传的资源的确不一致,或者上传之前和上传之后文件的md5值不一样,建议您在上传的时候开启 crc32 校验策略(crc32 校验请参考:[https://developer.qiniu.com/search?keyword=crc32](https://developer.qiniu.com/search?keyword=crc32) ) ,上传前会先计算本地文件的 crc32,然后和上传到七牛后文件的 crc32 进行对比,如果两者不同的话就不会保存,并且会返回 406:上传的数据 crc32 校验错误。通过 crc32 校验确保上传之前与上传之后的文件一致。
## 原因三 [#原因三]
如果出现极少部分地区访问的资源不一致,比如内容被篡改,并且通过刷新 cdn 缓存的方式已无法解决此问题,这有可能是 cdn 节点或者用户的网络被劫持。可以提交工单并且提供以下信息,七牛工程师会帮您检查是否是 cdn 节点被劫持还是用户的自身网络被劫持。
需提供提供以下资源:
1:资源链接
2:ping下你的访问域名截图
3:dns 诊断截图([https://boce.aliyun.com/detect/dns](https://boce.aliyun.com/detect/dns))
如果是 cdn 的节点被劫持,我们会去运营商进行投诉,如果是用户自身的网络,需要用户自己去网络运营商进行投诉。运营商反馈劫持请参考:[/faq/cdn/other-fusion/2755-operator](/faq/cdn/other-fusion/2755-operator)
# postman 调试接口 (/faq/cdn/upload-download-problem/3752-no%20query)
最近更新时间: 2017-09-20 17:27:53
调试表单上传方法
1. [表单上传](/products/kodo/development-guidelines/upload-types/1-form-upload)
2. 表单上传必须的三个元素 上传 host 、文件本身以及上传 token
3. 不同区域存储空间对应的 host 不同,[参考文档](/products/kodo/2-region-endpoint-fq)
4. 上传 token 生成,[参考文档](/products/kodo/development-guidelines/security/2-upload-token)
5. 打开 postman ,输入下图中指定内容

# gif 转 mp4 (/faq/dora/av-processing/1278-gif-to-mp4)
最近更新时间: 2021-07-21 15:11:11
使用[音视频转码 (avthumb)](/products/dora/audio-and-video-processing-api/3-audio-and-video-transcoding-avthumb) 进行转码
例子:
使用 php 进行转码操作:
```php
execute($bucket, $key, $pfops);
echo "\n====\> pfop avthumb result: \n";
if ($err != null) {
var\_dump($err);
} else {
echo "PersistentFop Id: $id\n";
}
//查询转码的进度和状态
list($ret, $err) = $pfop-\>status($id);
echo "\n====\> pfop avthumb status: \n";
if ($err != null) {
var\_dump($err);
} else {
var\_dump($ret);
}
```
之后使用 `http://api.qiniu.com/status/get/prefop?id=` 查询转码状态
在空间中也能看到转码后的mp4
# avthumb参数formats格式及解释 (/faq/dora/av-processing/1320-avthumb-parameters-formats-format-and-explanation)
最近更新时间: 2023-12-11 14:47:15
[/products/dora/audio-and-video-processing-api/3-audio-and-video-transcoding-avthumb](/products/dora/audio-and-video-processing-api/3-audio-and-video-transcoding-avthumb)
## 参数 `format`:目标音频(比如 mp3 m4a 等)或视频(比如 avi 、flv 、mp4等)格式。 [#参数-format目标音频比如-mp3-m4a-等或视频比如-avi-flv-mp4等格式]
该参数支持具体格式如下表:
| formats | description |
| ---------------- | ----------------------------------------------------------- |
| 3g2 | 3GP2 (3GPP2 file format) |
| 3gp | 3GP (3GPP file format) |
| a64 | a64 video for Commodore 64 |
| ac3 | raw AC-3 |
| adts | ADTS AAC (Advanced Audio Coding) |
| adx | CRI ADX |
| aiff | Audio IFF |
| alaw | PCM A-law |
| amr | 3GPP AMR |
| asf | ASF (Advanced / Active Streaming Format) |
| asf\_stream | ASF (Advanced / Active Streaming Format) |
| ass | SSA (SubStation Alpha) subtitle |
| ast | AST (Audio Stream) |
| au | Sun AU |
| avi | AVI (Audio Video Interleaved) |
| avm2 | SWF (ShockWave Flash) (AVM2) |
| bit | G.729 BIT file format |
| caf | Apple CAF (Core Audio Format) |
| cavsvideo | raw Chinese AVS (Audio Video Standard) video |
| crc | CRC testing |
| data | raw data |
| daud | D-Cinema audio |
| dirac | raw Dirac |
| dnxhd | raw DNxHD (SMPTE VC-3) |
| dts | raw DTS |
| dv | DV (Digital Video) |
| dvd | MPEG-2 PS (DVD VOB) |
| eac3 | raw E-AC-3 |
| f32be | PCM 32-bit floating-point big-endian |
| f32le | PCM 32-bit floating-point little-endian |
| f4v | F4V Adobe Flash Video |
| f64be | PCM 64-bit floating-point big-endian |
| f64le | PCM 64-bit floating-point little-endian |
| ffm | FFM (FFserver live feed) |
| ffmetadata | FFmpeg metadata in text |
| filmstrip | Adobe Filmstrip |
| flac | raw FLAC |
| flv | FLV (Flash Video) |
| framecrc | framecrc testing |
| framemd5 | Per-frame MD5 testing |
| g722 | raw G.722 |
| g723\_1 | raw G.723.1 |
| gif | GIF Animation |
| gxf | GXF (General eXchange Format) |
| h261 | raw H.261 |
| h263 | raw H.263 |
| h264 | raw H.264 video |
| hls | Apple HTTP Live Streaming |
| ico | Microsoft Windows ICO |
| ilbc | iLBC storage |
| image2 | image2 sequence |
| image2pipe | piped image2 sequence |
| ipod | iPod H.264 MP4 (MPEG-4 Part 14) |
| ircam | Berkeley/IRCAM/CARL Sound Format |
| ismv | ISMV/ISMA (Smooth Streaming) |
| ivf | On2 IVF |
| jacosub | JACOsub subtitle format |
| latm | LOAS/LATM |
| m4v | raw MPEG-4 video |
| matroska | Matroska |
| md5 | MD5 testing |
| microdvd | MicroDVD subtitle format |
| mjpeg | raw MJPEG video |
| mkvtimestamp\_v2 | extract pts as timecode v2 format, as defined by mkvtoolnix |
| mlp | raw MLP |
| mmf | Yamaha SMAF |
| mov | QuickTime / MOV |
| mp2 | MP2 (MPEG audio layer 2) |
| mp3 | MP3 (MPEG audio layer 3) |
| m4a | M4A (MPEG-4 audio ) |
| mp4 | MP4 (MPEG-4 Part 14) |
| mpeg | MPEG-1 Systems / MPEG program stream |
| mpeg1video | raw MPEG-1 video |
| mpeg2video | raw MPEG-2 video |
| mpegts | MPEG-TS (MPEG-2 Transport Stream) |
| mpjpeg | MIME multipart JPEG |
| mulaw | PCM mu-law |
| mxf | MXF (Material eXchange Format) |
| mxf\_d10 | MXF (Material eXchange Format) D-10 Mapping |
| nut | NUT |
| ogg | Ogg |
| oma | Sony OpenMG audio |
| psp | PSP MP4 (MPEG-4 Part 14) |
| rawvideo | raw video |
| rm | RealMedia |
| roq | raw id RoQ |
| rso | Lego Mindstorms RSO |
| rtp | RTP output |
| rtsp | RTSP output |
| s16be | PCM signed 16-bit big-endian |
| s16le | PCM signed 16-bit little-endian |
| s24be | PCM signed 24-bit big-endian |
| s24le | PCM signed 24-bit little-endian |
| s32be | tPCM signed 32-bit big-endian |
| s32le | PCM signed 32-bit little-endian |
| s8 | PCM signed 8-bit |
| sap | SAP output |
| segment | segment |
| smjpeg | Loki SDL MJPEG |
| smoothstreaming | Smooth Streaming Muxer |
| sox | SoX native |
| spdif | IEC 61937 (used on S/PDIF - IEC958) |
| srt | SubRip subtitle |
| stream\_segment | streaming segment muxer |
| ssegment | streaming segment muxer |
| svcd | MPEG-2 PS (SVCD) |
| swf | SWF (ShockWave Flash) |
| tee | Multiple muxer tee |
| truehd | raw TrueHD |
| u16be | PCM unsigned 16-bit big-endian |
| u16le | PCM unsigned 16-bit little-endian |
| u24be | PCM unsigned 24-bit big-endian |
| u24le | PCM unsigned 24-bit little-endian |
| u32be | PCM unsigned 32-bit big-endian |
| u32le | PCM unsigned 32-bit little-endian |
| u8 | PCM unsigned 8-bit |
| vc1 | raw VC-1 video |
| vc1test | VC-1 test bitstream |
| vcd | MPEG-1 Systems / MPEG program stream (VCD) |
| vob | MPEG-2 PS (VOB) |
| voc | Creative Voice |
| w64 | Sony Wave64 |
| wav | WAV / WAVE (Waveform Audio) |
| webm | Matroska / WebM |
| webvtt | WebVTT subtitle |
| wtv | Windows Television (WTV) |
| wv | raw WavPack |
| yuv4mpegpipe | YUV4MPEG pipe |
# 音视频转码请求的计费方法 (/faq/dora/av-processing/1331-the-charging-method-based-on-audio-and-video-transcoding-request)
最近更新时间: 2021-07-23 18:22:00
> 音视频转码是如何计费的?
# 音频转码 价格:0.0048 元 / min , 0.288 元 / hour [#音频转码-价格00048-元--min--0288-元--hour]
### 举例:用户将一段 3min45sec 的WAV,转换输出为 3min45sec 128 KHz 的MP3 [#举例用户将一段-3min45sec-的wav转换输出为-3min45sec-128-khz-的mp3]
转码计费的标准为输出的声音文件的时间长度,故本次转码的费用如下
3min45sec = 3.75 min
3.75 \* 0.0048 = 0.018 元
用户承担由此产生的转码结果的存储费用。
### 视频转码 sd240 价格: 0.0057 元 / min - 0.342 元 / hour [#视频转码-sd240-价格-00057-元--min---0342-元--hour]
按照用户的输出视频面积的"长边x短边"来判断规格
当输出的视频分辨率同时小于等于320x240,符合此规格的计费标准。
当输出的视频分辨率一边大于320或240 则不属于该规格,如321x240,321x239,320x241,319x241等不属于该规格。
举例:一段任意规格的60min钟原始视频,使用了七牛转码输出为319x240规格的60min视频,并保存在指定bucket中。
收费以输出的结果为计费标准,则本次收费的结果如下:
转码的费用 : 60 \* 0.0057 = 0.342 元
用户承担由此产生的转码结果的存储费用。
### 视频转码 sd480 价格: 0.0072 元 / min - 0.432 元 / hour [#视频转码-sd480-价格-00072-元--min---0432-元--hour]
按照用户的输出视频面积的"长边x短边"来判断规格
当输出的视频分辨率同时小于等于640x480,符合此规格的计费标准。
当输出的视频分辨率一边大于640 或 480 则不属于该规格,如641x480,640x481,639x481,641x479, 等不属于该规格。
举例:一段任意规格的60min钟原始视频,使用了七牛转码输出为629x240规格的60min视频,并保存在指定bucket中。
收费以输出的结果为计费标准,则本次收费的结果如下:
转码的费用 : 60 \* 0.0072 = 0.432 元
用户承担由此产生的转码结果的存储费用。
### 视频转码 sd 价格: 0.0189 元 / min, 1.134 元 / hour [#视频转码-sd-价格-00189-元--min-1134-元--hour]
规格说明:
按照用户的输出视频面积的"长边x短边"来判断规格
当输出的视频分辨率同时小于等于1080x720,符合此规格的计费标准。
当输出的视频分辨率一边大于1080 或 720 则不属于该规格,如1077x721,1081x719,1080x721,1081x719, 等不属于该规格。
举例:一段任意规格的60min钟原始视频,使用了七牛转码输出为1000x720 规格的60min视频,并保存在指定bucket中。
收费以输出的结果为计费标准,则本次收费的结果如下:
转码的费用 : 60 \* 0.0189 = 1.134 元
用户承担由此产生的转码结果的存储费用。
### 视频转码 hd 价格: 0.0324 元 / min 1.944 元 / hour [#视频转码-hd-价格-00324-元--min-1944-元--hour]
按照用户的输出视频面积的"长边x短边"来判断规格
当输出的视频分辨率长短边中任一边大于1080x720,符合此规格的计费标准。
当输出的视频分辨率同时小于等于1080x720 则不属于该规格,
如1077x721,1081x719,1280x720,1081x480, 属于该规格。
如 1080x719,1080x240,等不属于该规格
举例:一段任意规格的60min钟原始视频,使用了七牛转码输出为1000x1000 规格的60min视频,并保存在指定bucket中。
收费以输出的结果为计费标准,本次收费的结果如下:
转码的费用:60 \* 0.0324 = 1.944 元
用户承担由此产生的转码结果的存储费用。
**注:如果使用管道功能对音视频文件进行多次转码,那么每次转码过程都会计费。**
# avthumb参数vcodec格式及解释 (/faq/dora/av-processing/1385-avthumb-parameter-vcodec-format-and-explanation)
最近更新时间: 2023-08-30 14:19:49
[http://developer.qiniu.com/code/v6/api/dora-api/av/avthumb.html](http://developer.qiniu.com/code/v6/api/dora-api/av/avthumb.html)
## 参数`/vcodec/`:视频编码方案,支持方案:libx264 ,libvpx ,libtheora ,libxvid ,libvpx-vp9 等。 [#参数vcodecvideocodec视频编码方案支持方案libx264-libvpx-libtheora-libxvid-libvpx-vp9-等]
| videoEncoders | description |
| ------------- | ----------------------------------------------------------------------------------------- |
| a64multi | Multicolor charset for Commodore 64 (codec a64\_multi) |
| a64multi5 | Multicolor charset for Commodore 64, extended with 5th color (colram) (codec a64\_multi5) |
| amv | AMV Video |
| asv1 | ASUS V1 |
| asv2 | ASUS V2 |
| avrp | Avid 11 10-bit RGB Packer |
| avui | Avid Meridien Uncompressed |
| ayuv | Uncompressed packed MS 4444 |
| bmp | BMP (Windows and OS/2 bitmap) |
| cljr | Cirrus Logic AccuPak |
| dnxhd | VC3/DNxHD |
| dpx | DPX image |
| dvvideo | DV (Digital Video) |
| ffv1 | FFmpeg video codec # 1 |
| ffvhuff | Huffyuv FFmpeg variant |
| flashsv | Flash Screen Video |
| flashsv2 | Flash Screen Video Version 2 |
| flv | FLV / Sorenson Spark / Sorenson H.263 (Flash Video) (codec flv1) |
| gif | GIF (Graphics Interchange Format) |
| h261 | H.261 |
| h263 | H.263 / H.263-1996 |
| h263p | H.263+ / H.263-1998 / H.263 version 2 |
| libx264 | libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 RGB (codec h264) |
| libx265 | libx265 H.265 / AVC / MPEG-4 AVC / MPEG-4 part 10 RGB (codec h265) |
| libaom-av1 | Alliance for Open Media AV1 |
| huffyuv | Huffyuv / HuffYUV |
| jpeg2000 | JPEG 2000, |
| jpegls | JPEG-LS |
| ljpeg | Lossless JPEG |
| mjpeg | MJPEG (Motion JPEG) |
| mpeg1video | MPEG-1 video |
| mpeg2video | MPEG-2 video |
| mpeg4 | MPEG-4 part 2 |
| libxvid | libxvidcore MPEG-4 part 2 (codec mpeg4) |
| msmpeg4v2 | MPEG-4 part 2 Microsoft variant version 2 |
| msmpeg4 | MPEG-4 part 2 Microsoft variant version 3 (codec msmpeg4v3) |
| msvideo1 | Microsoft Video-1 |
| pam | PAM (Portable AnyMap) image |
| pbm | PBM (Portable BitMap) image |
| pcx | PC Paintbrush PCX image |
| pgm | PGM (Portable GrayMap) image |
| pgmyuv | PGMYUV (Portable GrayMap YUV) image |
| png | PNG (Portable Network Graphics) image |
| ppm | PPM (Portable PixelMap) image |
| prores | Apple ProRes |
| prores\_aw | Apple ProRes (codec prores) |
| prores\_ks | Apple ProRes (iCodec Pro) (codec prores) |
| qtrle | QuickTime Animation (RLE) video |
| r10k | AJA Kona 10-bit RGB Codec |
| r210 | Uncompressed RGB 10-bit |
| rawvideo | raw video |
| roqvideo | id RoQ video (codec roq) |
| rv10 | RealVideo 1.0 |
| rv20 | RealVideo 2.0 |
| sgi | SGI image |
| snow | Snow |
| sunrast | Sun Rasterfile image |
| svq1 | Sorenson Vector Quantizer 1 / Sorenson Video 1 / SVQ1 |
| targa | Truevision Targa image |
| libtheora | libtheora Theora (codec theora) |
| tiff | TIFF image |
| utvideo | Ut Video |
| v210 | Uncompressed 422 10-bit |
| v308 | Uncompressed packed 444 |
| v408 | Uncompressed packed QT 4444 |
| v410 | Uncompressed 444 10-bit |
| libvpx | libvpx VP8 (codec vp8) |
| libvpx-vp9 | libvpx VP9 |
| wmv1 | Windows Media Video 7 |
| wmv2 | Windows Media Video 8 |
| xbm | XBM (X BitMap) image |
| xface | X-face image |
| xwd | XWD (X Window Dump) image |
| y41p | Uncompressed YUV 411 12-bit |
| yuv4 | Uncompressed packed 420 |
| zlib | LCL (LossLess Codec Library) ZLIB |
| zmbv | Zip Motion Blocks Video |
| copy | 编码与同原始视频 |
# 切片生成的ts文件只有一片的问题 (/faq/dora/av-processing/1413-slice-the-generated-ts-file-only-a-slice-of-the-problem)
最近更新时间: 2021-07-21 15:11:11
一般切片生成一片都是文件本身有问题,比如这个音频文件, 切片的时候可以指定参数/vn/1可修复,vn/1表示的是忽略视频流的信息。
比如这个mp3文件:
[http://dn-odum9helk.qbox.me/wjw/48min-66mb.mp3](http://dn-odum9helk.qbox.me/wjw/48min-66mb.mp3)
这样切片生成的文件是只有一片的:
avthumb/m3u8/segtime/10/ab/48k/ar/44100/acodec/libfaac/noDomain/1
加一个vn/1参数再次切片是正常的:
avthumb/m3u8/segtime/10/ab/48k/ar/44100/acodec/libfaac/noDomain/1/vn/1
原因如下:
Frame rate very high for a muxer not efficiently supporting it. 导致结果不符合预期
因为此音频实际含有视频流
index":1,"codec\_name":"mjpeg","codec\_type":"video","start\_time":"0.025056","duration":"2884.075100","bit\_rate":"","nb\_frames":"","width":420,"height":420,"pix\_fmt":"yuvj444p","r\_frame\_rate":"90000/1","avg\_frame\_rate":"0/0","sample\_aspect\_ratio":"1:1","display\_aspect\_ratio":"1:1","tags":\{},"Disposition":
\{"attached\_pic":1}
# avthumb参数acodec格式及解释 (/faq/dora/av-processing/1432-avthumb-parameter-acodec-format-and-explanation)
最近更新时间: 2022-09-02 10:16:37
[/faq/dora/av-processing/1432-avthumb-parameter-acodec-format-and-explanation](/faq/dora/av-processing/1432-avthumb-parameter-acodec-format-and-explanation)
## 参数 `/acodec/`:音频编码方案,支持方案:libmp3lame , libfaac , libvorbis ,libfdk\_aac 等。 [#参数-acodecaudiocodec音频编码方案支持方案libmp3lame--libfaac--libvorbis-libfdk_aac-等]
| audioEncoders | description |
| ------------------ | ----------------------------------------------------------------- |
| aac | AAC (Advanced Audio Coding) |
| libfaac | |
| ac3 | ATSC A/52A (AC-3) |
| ac3\_fixed | ATSC A/52A (AC-3) (codec ac3) |
| adpcm\_adx | SEGA CRI ADX ADPCM |
| g722 | G.722 ADPCM (codec adpcm\_g722) |
| g726 | G.726 ADPCM (codec adpcm\_g726) |
| adpcm\_ima\_qt | ADPCM IMA QuickTime |
| adpcm\_ima\_wav | ADPCM IMA WAV |
| adpcm\_ms | ADPCM Microsoft |
| adpcm\_swf | ADPCM Shockwave Flash |
| adpcm\_yamaha | ADPCM Yamaha |
| alac | ALAC (Apple Lossless Audio Codec) |
| libopencore\_amrnb | OpenCORE AMR-NB (Adaptive Multi-Rate Narrow-Band) (codec amr\_nb) |
| comfortnoise | RFC 3389 comfort noise generator |
| dca | DCA (DTS Coherent Acoustics) (codec dts) |
| eac3 | ATSC A/52 E-AC-3 |
| flac | FLAC (Free Lossless Audio Codec) |
| g723\_1 | G.723.1 |
| libilbc | iLBC (Internet Low Bitrate Codec) (codec ilbc) |
| mp2 | MPEG audio layer 2 High Frequency |
| libmp3lame | libmp3lame MP3 (MPEG audio layer 3) (codec mp3) |
| nellymoser | Nellymoser Asao |
| pcm\_alaw | PCM A-law / G.711 A-law |
| pcm\_f32be | PCM 32-bit floating point big-endian |
| pcm\_f32le | PCM 32-bit floating point little-endian |
| pcm\_f64be | PCM 64-bit floating point big-endian |
| pcm\_f64le | PCM 64-bit floating point little-endian |
| pcm\_mulaw | PCM mu-law / G.711 mu-law |
| pcm\_s16be | PCM signed 16-bit big-endian |
| pcm\_s16be\_planar | PCM signed 16-bit big-endian planar |
| pcm\_s16le | PCM signed 16-bit little-endian |
| pcm\_s16le\_planar | PCM signed 16-bit little-endian planar |
| pcm\_s24be | PCM signed 24-bit big-endian |
| pcm\_s24daud | PCM D-Cinema audio signed 24-bit |
| pcm\_s24le | PCM signed 24-bit little-endian |
| pcm\_s24le\_planar | PCM signed 24-bit little-endian planar |
| pcm\_s32be | PCM signed 32-bit big-endian |
| pcm\_s32le | PCM signed 32-bit little-endian |
| pcm\_s32le\_planar | PCM signed 32-bit little-endian planar |
| pcm\_s8 | CM signed 8-bit |
| pcm\_s8\_planar | PCM signed 8-bit planar |
| pcm\_u16be | PCM unsigned 16-bit big-endian |
| pcm\_u16le | PCM unsigned 16-bit little-endian |
| pcm\_u24be | PCM unsigned 24-bit big-endian |
| pcm\_u24le | PCM unsigned 24-bit little-endian |
| pcm\_u32be | PCM unsigned 32-bit big-endian |
| pcm\_u32le | PCM unsigned 32-bit little-endian |
| pcm\_u8 | PCM unsigned 8-bit |
| real\_144 | RealAudio 1.0 (14.4K) (codec ra\_144) |
| roq\_dpcm | id RoQ DPCM |
| s302m | SMPTE 302M |
| sonic | Sonic |
| sonicls | Sonic lossless |
| tta | TTA (True Audio) |
| vorbis | Vorbis |
| libvorbis | ibvorbis (codec vorbis) |
| wavpack | 无损音频压缩格式 |
| wmav1 | Windows Media Audio 1 |
| wmav2 | Windows Media Audio 2 |
| copy | 编码同原始音频 |
# 视频支持格式 (/faq/dora/av-processing/1455-support-video-format)
最近更新时间: 2021-07-21 15:11:11
| 格式 | 是否支持 |
| ---------------- | ---- |
| g2 | true |
| 3gp | true |
| a64 | true |
| ac3 | true |
| adts | true |
| adx | true |
| aiff | true |
| alaw | true |
| amr | true |
| asf | true |
| asf\_stream | true |
| ass | true |
| ast | true |
| au | true |
| avi | true |
| avm2 | true |
| bit | true |
| caf | true |
| cavsvideo | true |
| crc | true |
| data | true |
| daud | true |
| dirac | true |
| dnxhd | true |
| dts | true |
| dv | true |
| dvd | true |
| eac3 | true |
| f32be | true |
| f32le | true |
| f4v | true |
| f64be | true |
| f64le | true |
| ffm | true |
| ffmetadata | true |
| filmstrip | true |
| flac | true |
| flv | true |
| framecrc | true |
| framemd5 | true |
| g722 | true |
| g723\_1 | true |
| gif | true |
| gxf | true |
| h261 | true |
| h263 | true |
| h264 | true |
| hls | true |
| ico | true |
| ilbc | true |
| image2 | true |
| image2pipe | true |
| ipod | true |
| ircam | true |
| ismv | true |
| ivf | true |
| jacosub | true |
| latm | true |
| m4v | true |
| matroska | true |
| md5 | true |
| microdvd | true |
| mjpeg | true |
| mkvtimestamp\_v2 | true |
| mlp | true |
| mmf | true |
| mov | true |
| mp2 | true |
| mp3 | true |
| mp4 | true |
| mpeg | true |
| mpeg1video | true |
| mpeg2video | true |
| mpegts | true |
| mpjpeg | true |
| mulaw | true |
| mxf | true |
| mxf\_d10 | true |
| null | true |
| nut | true |
| ogg | true |
| oma | true |
| psp | true |
| rawvideo | true |
| rm | true |
| roq | true |
| rso | true |
| rtp | true |
| rtsp | true |
| s16be | true |
| s16le | true |
| s24be | true |
| s24le | true |
| s32be | true |
| s32le | true |
| s8 | true |
| sap | true |
| segment | true |
| smjpeg | true |
| smoothstreaming | true |
| sox | true |
| spdif | true |
| srt | true |
| stream\_segment | true |
| ssegment | true |
| svcd | true |
| swf | true |
| tee | true |
| truehd | true |
| u16be | true |
| u16le | true |
| u24be | true |
| u24le | true |
| u32be | true |
| u32le | true |
| u8 | true |
| vc1 | true |
| vc1test | true |
| vcd | true |
| vob | true |
| voc | true |
| w64 | true |
| wav | true |
| webm | true |
| webvtt | true |
| wtv | true |
| wv | true |
| yuv4mpegpipe | true |
# 使用七牛进行视频的剪辑 (/faq/dora/av-processing/1620-using-seven-cows-for-video-clips)
最近更新时间: 2021-07-23 18:21:40
七牛提供了很丰富的一视频处理功能, 比如视频转码, 截图, 水印,旋转, 切片等, 这篇简单介绍下[视频剪辑](/faq/dora/av-processing/1620-using-seven-cows-for-video-clips)的简单操作。
比如我的七牛空间中有一个 MP4 文件:[http://dn-odum9helk.qbox.me/wangjiawei/1.mp4](http://dn-odum9helk.qbox.me/wangjiawei/1.mp4) 。 我们先来看下这个 MP4 的[视频信息](http://dn-odum9helk.qbox.me/wangjiawei/1.mp4?avinfo), 我们可以看到一个视频的时长信息`"duration": "239.285333"`表示 239 秒。现在我们打算做这样的截取`从第一分钟开始,截取时长为一分钟`。 我们来看下我们的[音视频处理接口](/faq/dora/av-processing/1620-using-seven-cows-for-video-clips), 其中有两个参数:
| 参数名称 | 类别 | 必填 | 说明 |
| ----------------------- | --- | -- | ------------------------------------- |
| `<Format>` | A/V | 是 | 目标视频的格式(比如 flv、mp4 等),参考 \[支持转换的视频格式] |
| `/ss/<SeekStart>` | A/V | | 指定视频截取的开始时间,单位:秒。用于视频截取,从一段视频中截取一段视频。 |
| `/t/<Duration>` | V | | 指定视频截取的长度,单位:秒。用于视频截取,从一段视频中截取一段视频。 |
可以用来做视频剪辑。
* 根据需求我们可以将开始时间 `ss` 设置为 `60`, 剪辑时长一分钟,可以将 `t` 设置为 `60`, 这样我们的处理规则就是:`avthumb/mp4/ss/60/t/60`。
* 然后使用我们的 [PFOP](/faq/dora/av-processing/1620-using-seven-cows-for-video-clips) 即可以将视频截取出来。
* 但是这样处理后的文件名是不规则的, 如果你想指定处理后的文件名可以参考我们的 [saveas 接口](/faq/dora/av-processing/1620-using-seven-cows-for-video-clips) 。 比如我们想处理后保存在空间`rwxf`, 文件名保存成`processed.mp4`。
1. 我们首先需要对 `rwxf:processed.mp4` 进行[urlsafebase64编码](/faq/dora/av-processing/1620-using-seven-cows-for-video-clips)后得到 `cnd4Zjpwcm9jZXNzZWQubXA0`。
2. 这样我们的处理命令就变成了:`avthumb/mp4/ss/60/t/60\|saveas/cnd4Zjpwcm9jZXNzZWQubXA0`。
* 进行 PFOP 处理后,如果想要查询处理的状态可以通过[持久化状态查询](/faq/dora/av-processing/1620-using-seven-cows-for-video-clips)接口来进行查询。
下面我们给一个简单的 php demo:
\';
$secretKey = '\';
$auth = new Auth($accessKey, $secretKey);
$config = new \Qiniu\Config();
$bucket = 'rwxf';
$key = '1.mp4';
$pipeline = 'abc'; //队列名称,使用独立队列可以加快处理速度。
$pfop = new PersistentFop($auth, $config);
$savedkey = 'processed.mp4';
$entry = \Qiniu\base64\_urlSafeEncode("$bucket:$savedkey");
$fops = "avthumb/mp4/ss/60/t/60|saveas/$entry";
list($id, $err) = $pfop->execute($bucket, $key, $fops);
echo "\n====> pfop avthumb result: \n";
if ($err != null)
\{
var\_dump($err);
}
else
\{
echo "PersistentFop Id: $id\n";
}
以上代码要配合我们的 [phpsdk](https://github.com/qiniu/php-sdk) 才可以运行。
# 视频元信息响应内容的属性及说明 (/faq/dora/av-processing/1678-video-meta-information-response-content-properties-and-instructions)
最近更新时间: 2021-07-21 15:11:11
# streams 输出流信息 [#streams-输出流信息]
| 属性 | 说明 | 属性 | 说明 |
| ------------------ | ------------ | ------------------------------- | -------------------- |
| index | 流所在的索引区域 | r\_frame\_rate/avg\_frame\_rate | 实际帧率/平均帧率 |
| Codec\_name | 编码名 | time\_base | 时间基数(用来做timestamp计算) |
| Codec\_long\_name; | 编码全名 | start\_time | 起始时间 |
| Codec\_type | 编码类型 | duration | 总时长 |
| Codec\_time\_base | 编码的时间戳计算基础单位 | n\_frames | 帧数 |
| Codec\_tag\_string | 编码的标签数据 | handle\_name | 句柄名称 |
| width/height | 视频的宽和高 | sample\_fmt | 音频的原始采样格式 |
| pix\_fmt | 图像显示图像色彩格式 | sample\_rate | 音频的采样率 |
| level | 编码的level | channels | 信道数目 |
# format 输出封装格式信息 [#format-输出封装格式信息]
| 属性 | 说明 | 属性 | 说明 | |
| ------------------ | ------ | ------------ | ---- | - |
| nb\_streams | 流通道数 | format\_name | 封装格式 | |
| format\_long\_time | 封装格式全称 | start\_time | 起始时间 | |
| duration | 总时长 | size | 文件大小 | |
| bit\_rate | 码率 | | | |
# 关于七牛音视频转码时长的说明 (/faq/dora/av-processing/1681-about-seven-cows-audio-video-transcoding-long-description)
最近更新时间: 2021-07-21 15:11:11
使用公有队列以及私有队列处理时间不同:
1.使用公有队列
使用公有队列的转码任务,由于使用共享资源,存在任务排队的可能,所以转码时长不能保证;
2.使用私有队列
当使用私有队列进行视频转码,如果转码耗时未超过视频长度三分之一(例如一个小时的视频,转码在20分钟内完成),则属于正常范围;如果希望加快转码速度,则用户可以部署ufop(自定义数据处理),通过提高机器性能来缩短转码时长。
* [私有队列的创建和sdk使用](/faq/dora/other-dora/3853-how-to-create-audio-and-video-processing-private-queues)
* [自定义数据处理文档](/products/dora/processing-mechanism/1-directions-for-use-pfop)
注意:如果对于处理时长有要求的话,建议使用私有队列
# 点播如何保存,再进行视频格式(mp4)的转码 (/faq/dora/av-processing/1699-on-demand-how-saveas-again-the-transcoding-of-video-format-mp4)
最近更新时间: 2021-07-21 15:11:11
# 1.点播保存 [#1点播保存]
业务服务器有两个版本,v1和v2,下面分别介绍如何进行视频流的保存:
**v1:**
v1版本服务器是通过saveAs(saveAsName, saveAsFormat, saveAsStart, saveAsEnd)方法进行视频流的保存的,其中
saveAsName是保存的视频的名称。
saveAsFormat是目标视频的格式,指定format为null进行操作,立即生成m3u8。
saveAsStart, saveAsEnd分别为想保存视频的起止时间,以Unix时间戳的格式传入,这个时间可以通过segments方法获得。
**v2:**
v2版本服务器是通过save(long start, long end)方法进行视频流的保存的,默认只能保存成m3u8文件,其参数为想保存视频的起止时间,以Unix时间戳的格式传入,这个时间可以通过historyRecord方法获得。
【注意】
如果是转存mp4(或其他格式),不建议在saveas的时候直接指定format为mp4,那样有些已知的问题,比如转出来的视频播放卡住,快进,无法拖动进度条等等。因此推荐用户指定format为null,先保存成m3u8文件再使用存储SDK的avthumb接口进行转码操作。
# 2.视频转码 [#2视频转码]
视频的转码可以使用存储SDK的avthumb接口来操作。下面是相关文档链接:
avthumb的接口文档:[/faq/dora/av-processing/1699-on-demand-how-saveas-again-the-transcoding-of-video-format-mp4](/faq/dora/av-processing/1699-on-demand-how-saveas-again-the-transcoding-of-video-format-mp4)
Java SDK相关:[/faq/dora/av-processing/1699-on-demand-how-saveas-again-the-transcoding-of-video-format-mp4](/faq/dora/av-processing/1699-on-demand-how-saveas-again-the-transcoding-of-video-format-mp4)
# 如何从视频中只抽离出音频文件? (/faq/dora/av-processing/1701-how-to-only-smoke-from-the-audio-from-video-files)
最近更新时间: 2021-07-21 15:11:11
在 音视频转码(avthumb)中可以设置`/vn/`参数。 有关视频转码(avthumb)文档链接:[音视频转码](/faq/dora/av-processing/1701-how-to-only-smoke-from-the-audio-from-video-files)
**参数设置**
| 参数名称 | 类别 | 说明 |
| --------------------- | -- | ----------------------- |
| `/vn/<VideoNo>` | V | 是否去除视频流,0为保留,1为去除。默认值为0 |
**使用方法**
命令可以根据需要自定义,如:
avthumb/vn/1
命令的调用,可以在上传时指定[persistentOps](/products/kodo/development-guidelines/security/1-put-policy#3)参数(即 **预转持久化** ),或者调用[pfop](/products/dora/processing-mechanism/persist/0-persistent-data-processing-pfop)命令(即 **触发持久化** )。
以 Python Sdk 为例,具体可以看下[音视频转码示例](/faq/dora/av-processing/1701-how-to-only-smoke-from-the-audio-from-video-files#avthumb-samples)。需要在[音视频转码示例](/faq/dora/av-processing/1701-how-to-only-smoke-from-the-audio-from-video-files#avthumb-samples)的基础修改数据处理命令 **fops** ,将其修改为:
fops = avthumb/mp4/vn/1
**注意**
其他语言 Sdk 可在[官方Sdks](/faq/dora/av-processing/1701-how-to-only-smoke-from-the-audio-from-video-files#sdk)下载,可以通过查看 Sdk 使用指南中 **触发持久化** , **预转持久化** 使用。
# 关于七牛的流媒体队列 (/faq/dora/av-processing/2500-streaming-media-queue-about-seven-cows)
最近更新时间: 2021-07-21 15:11:11
七牛的流媒体队列 (英文简称 pipeline )
七牛首创云端音视频、流媒体处理服务,依托高性能硬件及私有任务队列机制,保障任务高效完成。
# 共有队列 [#共有队列]
共有队列是所有的客户都在使用的队列, 所以如果任务量比较大需要排队比较久。这个共有队列就是不定状态的 如果需要快速处理需要使用私有队列。
问题1:怎么样查看自己提交的数据处理的情况呢?
答案:每个处理都会返回一个类似于 z0.58b5338645a2653715350b20 z0.开头得的 PersistentId
可以通过 get [请求这个接口查到](/products/dora/processing-mechanism/persist/1-persistent-processing-status-query-prefop) 处理的状态
```
{
"code": 1,
"desc": "The fop is waiting for execution",
"id": "z0.58b5338645a2653715350b20",
"inputBucket": "echohu",
"inputKey": "./hh.wmv",
"items": [
{
"cmd": "avthumb/mp4|saveas/dmlkZW86dGVzdDExMC5tcDQ=",
"code": 1,
"desc": "The fop is waiting for execution",
"returnOld": 0
}
],
"pipeline": "0.default",
"reqid": ""
}
```
参考:[处理化数据处理查询](/products/dora/processing-mechanism/persist/1-persistent-processing-status-query-prefop)
"pipeline": "0.default"如果是0.default 就是使用默认的共有队列
# 私有队列 [#私有队列]
创建私有队列
在七牛的 portal 平台的主界面,点击 多媒体处理 的“立即添加”。这个就是私有队列 pipeline

在代码处理时候传入这个得名字即是使用它下面给出php demo的使用私有队列 队列名是abc
```
$fops,
'persistentPipeline' => $pipeline
);
$uptoken = $auth->uploadToken($bucket, null, 3600, $policy);
//上传文件的本地路径
$filePath = './php-logo.png';
$uploadMgr = new UploadManager();
list($ret, $err) = $uploadMgr->putFile($uptoken, null, $filePath);
echo "\n====> putFile result: \n";
if ($err !== null) {
var_dump($err);
} else {
var_dump($ret);
}
```
还有关于价格私有队列收费价格看这里的多媒体处理 [价格](http://www.qiniu.com/pricing)
# 部分 mp4 在网页播放器兼容问题 (/faq/dora/av-processing/2637-some-customers-mp4-problems-in-distributed-web-page)
最近更新时间: 2021-07-23 18:21:51
浏览器web播放器支持的格式是比较标准的,所以部分的不是标准格式的视频会在 web 端播放不出来
# 解决方案 [#解决方案]
使用代码,调用七牛的接口转为标准的 MP4 。参考:[音视频转码](/products/dora/1-features_introduction)
`fops = 'avthumb/mp4'` 设置为标准的 mp4
python
```
from qiniu import Auth, put_file, etag, urlsafe_base64_encode
import qiniu.config
# access_key,secret_key在个人面板的密钥管理处获得,非个人账号密码
access_key = '...'
secret_key = '...'
# 初始化Auth状态
q = Auth(access_key, secret_key)
# 你要测试的空间, 并且这个key在你空间中存在
bucket_name = '...'
key = '...'
# 是使用的队列名称,不设置使用默认队列。
pipeline = 'your_pipeline'
# 设置转码参数
fops = 'avthumb/mp4'
# 通过添加'|saveas'参数,指定处理后的文件保存的bucket和key,不指定默认保存在当前空间,bucket_saved为目标bucket,bucket_saved为目标key
saveas_key = urlsafe_base64_encode('bucket_saved:bucket_saved')
fops = fops+'|saveas/'+saveas_key
# 在上传策略中指定fobs和pipeline
policy={
'persistentOps':fops,
'persistentPipeline':pipeline
}
token = q.upload_token(bucket_name, key, 3600, policy)
# 视频所在的本地路径
localfile = './python_video.flv'
ret, info = put_file(token, key, localfile)
print(info)
assert ret['key'] == key
assert ret['hash'] == etag(localfile)
```
php
```
$fops,
'persistentPipeline' => $pipeline
);
$uptoken = $auth->uploadToken($bucket, null, 3600, $policy);
//上传文件的本地路径
$filePath = './php-logo.png';
$uploadMgr = new UploadManager();
list($ret, $err) = $uploadMgr->putFile($uptoken, null, $filePath);
echo "\n====> putFile result: \n";
if ($err !== null) {
var_dump($err);
} else {
var_dump($ret);
}
```
# avconcat报错mismatched sar of videos的解决方法 (/faq/dora/av-processing/3972-the-solution-to-the-avconcat-error-mismatched-sar-of-videos)
最近更新时间: 2021-07-21 15:11:11
# 问题原因 [#问题原因]
出现该错误的原因是要进行拼接的视频SAR不匹配,即`url?avinfo`信息中的`sample_aspect_ratio`不一致。
# 解决方式 [#解决方式]
通过`avthumb`[接口](/products/dora/audio-and-video-processing-api/3-audio-and-video-transcoding-avthumb)中的`aspect`字段转码下,将SAR转为一致即可,其中`aspect`字段控制的是DAR,即`url?avinfo`信息中的`display_aspect_ratio`参数。
如图所示的两个视频进行拼接就会出现上述错误,将视频一通过`avthumb/mp4/aspect/16:9`命令,将`display_aspect_ratio`转为16:9,则`sample_aspect_ratio`为1:1,此时再进行拼接,即可拼接成功。


注:SAR \* PAR = DAR
* SAR —— Sample Aspect Ratio
* PAR —— Pixel Aspect Ratio
* DAR —— Display Aspect Ratio
# 提交了音视频转码,为什么长时间处于处理中? (/faq/dora/av-processing/8320-submit-the-audio-and-video-transcoding-why-long-time-in-processing)
最近更新时间: 2021-11-05 09:52:04
* 如果希望加快转码速度,可以使用[倍速转码](/products/dora/audio-and-video-processing-api/9-avfast),加速对视频资源进行编码。
* 除了以上方式,也可以通过部署[ufop(自定义数据处理)](/products/dora/processing-mechanism/1-directions-for-use-pfop),通过提高机器性能来缩短转码时长。
# 音视频转码失败,是什么原因? (/faq/dora/av-processing/8321-audio-and-video-transcoding-fails-what-reason-be)
最近更新时间: 2021-07-23 18:21:11
* 首先 [获取转码的 persistent ID](/faq/dora/other-dora/3643-how-to-acquire-persistent-id) ,然后通过 [持久化处理状态查询接口](/products/dora/processing-mechanism/persist/1-persistent-processing-status-query-prefop) ,查看简要的报错原因。
* 或者浏览器直接访问 `http://api.qiniu.com/status/get/prefop?id=` 后跟 persistent ID 。
* 如果对处理失败原因有疑问,可以带着 persistent ID ,提交工单咨询。
# 图片文字水印支持字体列表 (/faq/dora/other-dora/11230-image-text-watermarking-support-font-list)
最近更新时间: 2023-09-14 17:32:23
**支持字体列表如下:**
| 文字字体
(需经过URL安全的Base64编码) | 中文意思 | 支持语音 | 字体样式
(需经过URL安全的Base64编码) |
| :---------------------------- | :------------------ | :--- | :------------------------------------------------------------------------------------------ |
| WenQuanYi Zen Hei | 文泉驿正黑 | 中/英文 | medium |
| WenQuanYi Zen Hei Mono | 文泉驿等宽正黑 | 中/英文 | medium |
| WenQuanYi Micro Hei | 文泉驿微米黑 | 中/英文 | regular |
| WenQuanYi Micro Hei Mono | 文泉驿等宽微米黑 | 中/英文 | regular |
| Source Han Sans SC | 思源黑体 | 中/英文 | normal、heavy、extralight、regular、bold、light、medium |
| Source Han Serif SC | 思源宋体 | 中/英文 | semibold、bold、extralight、regular、light、medium、heavy |
| FZFangSong-Z02S | 方正仿宋 | 中/英文 | regular |
| FZHei-B01S | 方正黑体 | 中/英 | regular |
| FZKai-Z03S | 方正楷体 | 中/英 | regular |
| FZShuSong-Z01S | 方正书宋 | 中/英 | regular |
| Roboto | Roboto | 英文 | Black、BlackItalic、Bold、Italic、Light、LightItalic、Medium、MediumItalic、Regular、Thin、ThinItalic |
| Marcellus | Marcellus | 英文 | Regular |
| Lato | Lato | 英文 | Black、BlackItalic、Bold、BoldItalic、Italic、Light、LightItalic、Regular、Thin、ThinItalic |
| Montserrat | Montserrat | 英文 | Black、Bold、ExtraBold、ExtraLight、Light、Medium、Regular、SemiBold、Thin |
| Poppins | Poppins | 英文 | Bold、Light、Medium、Regular、SemiBold |
| Droid Sans Fallback | Droid Sans Fallback | 中文 | Bold、Light、Medium、Regular、SemiBold |
# 视频文字水印支持字体列表 (/faq/dora/other-dora/1379-image-and-video-text-watermarking-support-font-list)
最近更新时间: 2023-09-14 17:32:12
**支持字体列表如下:**
| 文字字体
(需经过URL安全的Base64编码) | 中文意思 | 支持语音 | 字体样式
(需经过URL安全的Base64编码) |
| :---------------------------- | :------------------ | :--- | :------------------------------------------------------------------------------------------ |
| WenQuanYi Zen Hei | 文泉驿正黑 | 中/英文 | medium |
| WenQuanYi Zen Hei Mono | 文泉驿等宽正黑 | 中/英文 | medium |
| WenQuanYi Micro Hei | 文泉驿微米黑 | 中/英文 | regular |
| WenQuanYi Micro Hei Mono | 文泉驿等宽微米黑 | 中/英文 | regular |
| Source Han Sans SC | 思源黑体 | 中/英文 | normal、heavy、extralight、regular、bold、light、medium |
| Source Han Serif SC | 思源宋体 | 中/英文 | semibold、bold、extralight、regular、light、medium、heavy |
| FZFangSong-Z02S | 方正仿宋 | 中/英文 | regular |
| FZHei-B01S | 方正黑体 | 中/英 | regular |
| FZKai-Z03S | 方正楷体 | 中/英 | regular |
| FZShuSong-Z01S | 方正书宋 | 中/英 | regular |
| Roboto | Roboto | 英文 | Black、BlackItalic、Bold、Italic、Light、LightItalic、Medium、MediumItalic、Regular、Thin、ThinItalic |
| Marcellus | Marcellus | 英文 | Regular |
| Lato | Lato | 英文 | Black、BlackItalic、Bold、BoldItalic、Italic、Light、LightItalic、Regular、Thin、ThinItalic |
| Montserrat | Montserrat | 英文 | Black、Bold、ExtraBold、ExtraLight、Light、Medium、Regular、SemiBold、Thin |
| Poppins | Poppins | 英文 | Bold、Light、Medium、Regular、SemiBold |
| Droid Sans Fallback | Droid Sans Fallback | 中文 | Bold、Light、Medium、Regular、SemiBold |
# ufop、刷新预取查询demo汇总 (/faq/dora/other-dora/1464-ufop-refresh-prefetching-query-demo-summary)
最近更新时间: 2019-01-04 16:29:49
# ufop java 示例 demo [#ufop-java-示例-demo]
* [ufop](https://github.com/liangchao07115/qiniu-java-simple/tree/master/src/com/test)
# fusion 刷新、预取、查询 demo [#fusion-刷新预取查询-demo]
* [刷新、预取、查询](https://github.com/liangchao07115/qiniu-java-simple/tree/master/src/com/qiniu/fusion)
# c#-sdk demo [#c-sdk-demo]
* [c# sdk](/products/kodo/csharp#8)
# node demo [#node-demo]
* [node](https://github.com/qiniu/nodejs-sdk.v6/pull/208/commits/8b05c7955177fedf652c238f4368af3b21ad10de)
# python demo [#python-demo]
* [python](https://github.com/qiniu/python-sdk/tree/master/examples)
# 七牛点播云设置CNAME解析的方法 (/faq/dora/other-dora/1704-seven-cattle-on-demand-cloud-set-cname-analytical-method)
最近更新时间: 2017-08-30 09:55:59
# 快速入门 [#快速入门]
举例说明:dianbo.qiniudemo.com
## 操作步骤: [#操作步骤]
## 1 在域名绑定页面,找到对应的域名,点击复制获取到 CNAME 的记录值 [#1-在域名绑定页面找到对应的域名点击复制获取到-cname-的记录值]

## 2 登录域名管理中心,找到域名点击“解析” [#2-登录域名管理中心找到域名点击解析]
注意事项:
域名管理中心在购买域名的平台里。

## 3 在记录管理页面,点击“添加纪录” [#3-在记录管理页面点击添加纪录]

## 4 按照提示输入内容,点击“确认”保存 [#4-按照提示输入内容点击确认保存]
注意事项:
*
记录类型: CNAME
*
主机记录:dianbo (dianbo.qiniudemo.com 主域名前面部分)
*
记录值:test-idox821.qiniudns.com(步骤1中复制获取到的内容)
*
其它:默认即可

## 5 检查解析进度 [#5-检查解析进度]
注意事项:
需要linux终端,使用dig命令检查解析内容,下图中为解析完成后的正确结果(解析时间一般是10分钟左右生效,如果没有找到解析内容代表还没有解析成功或解析错误)

## 6 设置为默认域名 [#6-设置为默认域名]

# persistent ID 的常见问题 (/faq/dora/other-dora/3643-how-to-acquire-persistent-id)
最近更新时间: 2023-09-01 16:05:24
# **什么是 persistent ID?** [#什么是-persistent-id]
七牛给每个 持久化处理 作业,都会分配一个唯一的 ID ,用来记录和查询。
# **如何获取 persistent ID?** [#如何获取-persistent-id]
使用 [持久化处理 API 接口](/products/dora/processing-mechanism/persist/0-persistent-data-processing-pfop) 提交请求,可以在返回信息中得到 persistent ID 。
# **任务查询方式** [#任务查询方式]
通过【API创建的任务】,用户可以使用以下3种方式进行查询:
1. 通过任务查询接口,发起查询请求。
2. 登录 proral ,在任务列表中进行查询。
3. 创建任务时,设置回调地址,七牛将会向你设置的 URL 发起 `Content-Type: application/json` 的 POST 请求。请参考[持久化处理结果通知](/products/dora/processing-mechanism/persist/1-persistent-processing-status-query-prefop)。
# **任务查询API** [#任务查询api]
## 接口规格 [#接口规格]
```
```
| 参数名称 | 必填 | 说明 |
| --------------- | -- | --------------------------------------- |
| \ | 是 | 上传预处理或持久化处理接口返回的`<persistentId>`。 |
使用 [持久化处理作业查询](/products/dora/processing-mechanism/persist/1-persistent-processing-status-query-prefop) 服务,具体方法是浏览器地址栏输入 [https://api.qiniu.com/status/get/prefop?id=](https://api.qiniu.com/status/get/prefop?id=) 后跟 persistent ID 。
# **控制台查询** [#控制台查询]
登录【智能多媒体控制台】,进入【导航栏->任务】页面,进入 [任务列表](https://portal.qiniu.com/dora/media-gate/task) 页面。

> **查询条件说明:**
>
> * 切换区域
>
> * 任务资源所属区域:**华东、华北、华南、东南亚、北美**
> * 按时间查询
>
> * 当前支持查询 **近7天** 的任务
>
> * 选择队列:任务执行的队列
>
> * 选择区域:任务资源所属区域
>
> * 选择任务状态:
>
> **全部、成功、失败、处理中、已提交、已取消**(当用户删除pipeline时,并且有任务还在等待中)
> * 按任务ID查询
>
> * 输入任务ID,进行精确匹配查询
>
> **搜索结果说明:**
>
> * 对应查询条件以列表形式展示任务信息:任务ID、资源名称、状态、队列。
> * 点击【加载更多】,展示更多任务。
# 保存处理后的图片 (/faq/dora/other-dora/3751-save-the-processed-image)
最近更新时间: 2017-08-30 09:55:59
## 保存处理后的图片生成url 然后使用get请求即可 [#保存处理后的图片生成url-然后使用get请求即可]
## 公有空间 [#公有空间]
### java [#java]
```
public class imageSaveas {
public static void main(String args[]) throws Exception{
String ACCESS_KEY = "FMVCRs2-LvRNi4l7mEZE6ZDvPv-519D1ZCO";
String SECRET_KEY = "InOXBls8acFn002XsoXKFw1iFJZxcoOvAeY";
Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
//需要存储的空间名和文件名
String scope = "picture:test.jpg";
String urlbase64 = UrlSafeBase64.encodeToString(scope);
//空间domain, 比如 orf68lb7.bkt.clouddn.com
String domain = "orf68lb7.bkt.clouddn.com";
//需要处理的文件名
String key = "测试";
//处理操作
String cmd = "imageView2/2/w/200/h/200";
String encodedFileKey = URLEncoder.encode(key, "utf-8");
String DownloadUrl = domain + "/" + encodedFileKey + "?" + cmd + "|saveas/" + urlbase64;
Mac mac = javax.crypto.Mac.getInstance("HmacSHA1");
mac.init(new SecretKeySpec(StringUtils.utf8Bytes(SECRET_KEY),"HmacSHA1"));
String sign = UrlSafeBase64.encodeToString(mac.doFinal(StringUtils.utf8Bytes(DownloadUrl)));
String URL = "http://"+DownloadUrl+"/sign/"+ACCESS_KEY+":"+sign;
System.out.println(auth.privateDownloadUrl(URL, 36000));
}
}
```
### python [#python]
```
def __token( data):
data = b(data)
hashed = hmac.new(secret_key, data, sha1)
return urlsafe_base64_encode(hashed.digest())
access_key = 'oPQDbCnHhXjZtGZk6ysNYDMrcs7a8Puy_e0mcaL_'
secret_key = 'DzQHHAizEpsr3LqiIfjF8-p2cBi406nR44CYasBx'
#需要处理的url
url_op = "oa1azzrgm.bkt.clouddn.com/test.jpg?imageInfo"
#处理后另存的空间文件名
save_bucket = 'test'
save_key = 'ttt.mp4'
savekey = "saveas/"+ entry(save_bucket, save_key)
url = '{0}%7C{1}'.format(url_op,savekey)
#签名
q = Auth(access_key, secret_key)
sign_url = 'http://{0}/sign/{1}:{2}'.format(url, access_key, __token(url))
print(sign_url)
```
## 私有空间 [#私有空间]
### java [#java-1]
```
public class imageSaveasForPrivate {
public static void main(String args[]) throws Exception {
String ACCESS_KEY = "FMVCRs2-LO1ivRNi7mEZE6ZDvPv-519D12kZCO";
String SECRET_KEY = "InOXBls8alaPiRc02XsoXKFw1iFJZxcoOvAeY";
Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
//需要存储的空间名和文件名
String scope = "qiniu:test.jpg";
String urlbase64 = UrlSafeBase64.encodeToString(scope);
//空间domain, 比如 orf68lb7.bkt.clouddn.com
String domain = "oq2z5wvba.bkt.clouddn.com";
//需要处理的文件名
String key = "测试.png";
//处理操作
String cmd = "imageView2/2/w/200/h/200";
String encodedFileKey = URLEncoder.encode(key, "utf-8");
String signUrl = domain + "/" + encodedFileKey + "?" + cmd + "|saveas/" + urlbase64;
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(new SecretKeySpec(StringUtils.utf8Bytes(SECRET_KEY),"HmacSHA1"));
String sign = UrlSafeBase64.encodeToString(mac.doFinal(StringUtils.utf8Bytes(signUrl)));
String finalUrl = "http://" + signUrl + "/sign/" + ACCESS_KEY + ":" + sign;
String url = auth.privateDownloadUrl(finalUrl, 36000);
System.out.println(url);
}
}
```
### python [#python-1]
```
def __token( data):
data = b(data)
hashed = hmac.new(secret_key, data, sha1)
return urlsafe_base64_encode(hashed.digest())
access_key = 'oPQDbCnHhXjZtGZk6ysNYDMrcs7a8Puy_e0mcaL_'
secret_key = 'DzQHHAizEpsr3LqiIfjF8-p2cBi406nR44CYasBx'
#需要处理的url
url_op = "oa1azzrgm.bkt.clouddn.com/test.jpg?imageInfo"
#处理后另存的空间文件名
save_bucket = 'test'
save_key = 'ttt.mp4'
savekey = "saveas/"+ entry(save_bucket, save_key)
url = '{0}%7C{1}'.format(url_op,savekey)
#签名
q = Auth(access_key, secret_key)
sign_url = 'http://{0}/sign/{1}:{2}'.format(url, access_key, __token(url))
print(sign_url)
#私有空间签名
private_url = q.private_download_url(sign_url, expires=3600*24*4)
print(private_url)
```
# 如何创建音视频处理私有队列 (/faq/dora/other-dora/3853-how-to-create-audio-and-video-processing-private-queues)
最近更新时间: 2021-07-23 18:21:23
在七牛进行音视频处理,推荐使用私有队列(pipeline)。 创建私有队列方法如下:
# 第一步 [#第一步]
登录[七牛云智能多媒体平台](https://portal.qiniu.com/dora/media-gate/pipeline),切换到【队列】页面,点击图片红点所示处 “新建队列”

# 第二步 [#第二步]
填写队列名称,点击 "确定创建”

# 图片处理水印不居中显示处理方法 (/faq/dora/the-image-processing/1377-image-watermarking-is-not-centered-processing-method)
最近更新时间: 2021-07-21 15:14:32
关于图片大水印操作,比如只指定[gravity/South](http://dn-odum9helk.qbox.me/wjw/testpicture?imageView2/2/w/728/q/100%7Cwatermark/1/image/aHR0cDovL29kdW05aGVsay5xbnNzbC5jb20vd2p3L3dhdGVybWFyay5wbmc=/gravity/South/dy/5/dx/0),理论上来说水印会出现在最下方中间,但是其实不是,是会有一些像素偏移的,这个时候可以加上[/dx/0](http://dn-odum9helk.qbox.me/wjw/testpicture?imageView2/2/w/728/q/100%7Cwatermark/1/image/aHR0cDovL29kdW05aGVsay5xbnNzbC5jb20vd2p3L3dhdGVybWFyay5wbmc=/gravity/South/dy/5/dx/0)参数表示水印处于水平方向最中间,如果加上/dy/0表示在垂直方向中间位置,以下为对比的情况:
不加/dx/0
[http://dn-odum9helk.qbox.me/wjw/testpicture?imageView2/2/w/728/q/100|watermark/1/image/aHR0cDovL29kdW05aGVsay5xbnNzbC5jb20vd2p3L3dhdGVybWFyay5wbmc=/gravity/South/dy/5](http://dn-odum9helk.qbox.me/wjw/testpicture?imageView2/2/w/728/q/100%7Cwatermark/1/image/aHR0cDovL29kdW05aGVsay5xbnNzbC5jb20vd2p3L3dhdGVybWFyay5wbmc=/gravity/South/dy/5)
加/dx/0
[http://dn-odum9helk.qbox.me/wjw/testpicture?imageView2/2/w/728/q/100|watermark/1/image/aHR0cDovL29kdW05aGVsay5xbnNzbC5jb20vd2p3L3dhdGVybWFyay5wbmc=/gravity/South/dy/5/dx/0](http://dn-odum9helk.qbox.me/wjw/testpicture?imageView2/2/w/728/q/100%7Cwatermark/1/image/aHR0cDovL29kdW05aGVsay5xbnNzbC5jb20vd2p3L3dhdGVybWFyay5wbmc=/gravity/South/dy/5/dx/0)
# imageMogr2对gif转成webp格式并缩放报错解决方法 (/faq/dora/the-image-processing/1452-imagemogr2-to-gif-into-the-webp-and-zoom-error-solution)
最近更新时间: 2021-07-21 15:14:32
#### 报错:error: "The original image abnormal" [#报错error-the-original-image-abnormal]
> imageMogr2将gif转为web并且缩放时,使用imageMogr2/format/webp|imageMogr2/thumbnail/100x报错
**报错链接** :[https://dn-odum9helk.qbox.me/test.gif?imageMogr2/format/webp|imageMogr2/thumbnail/100x](https://dn-odum9helk.qbox.me/test.gif?imageMogr2/format/webp%7CimageMogr2/thumbnail/100x)

**报错原因** :imageMogr2参考工具[imageMagick](http://www.imagemagick.com.cn/ "imagemagick"),由于 imageMagick 对 animated webp 进行缩放处理不支持,导致在imageMogr2将.gif转成.webp格式的文件时缩放报错
**解决方法** :2种。
1)使用管道符,使用imageMogr2缩放.gif图片后再转成.webp格式文件
如:[https://dn-odum9helk.qbox.me/test.gif?imageMogr2/thumbnail/100x|imageMogr2/format/webp](https://dn-odum9helk.qbox.me/test.gif?imageMogr2/thumbnail/100x%7CimageMogr2/format/webp)

2)不使用管道符,在缩放.gif图片时直接指定目标格式为.webp,
如:[https://dn-odum9helk.qbox.me/test.gif?imageMogr2/thumbnail/100x/format/webp](https://dn-odum9helk.qbox.me/test.gif?imageMogr2/thumbnail/100x/format/webp)

**参考** :
[高级图片处理imageMogr2](/faq/dora/the-image-processing/1452-imagemogr2-to-gif-into-the-webp-and-zoom-error-solution)
# 关于图片 EXIF 信息中旋转参数 Orientation 的理解 (/faq/dora/the-image-processing/1560-information-about-photo-exif-rotation-parameters-in-the-understanding-of-orientation)
最近更新时间: 2021-07-21 15:14:32
EXIF(Exchangeable Image File)是 “可交换图像文件” 的缩写,当中包含了专门为数码相机的照片而定制的元数据,可以记录数码照片的拍摄参数、缩略图及其他属性信息,简单来说,Exif 信息是镶嵌在 JPEG/TIFF 图像文件格式内的一组拍摄参数,需要注意的是 EXIF 信息是不支持 png,webp 等图片格式的。 对于七牛,可以在图片后面加? exif 参数来获取图片的 exif 信息。
对于 Orientation 参数,简单的说是记录图片拍摄的相机的旋转信息,浏览器 (需要浏览器支持) 可以根据这个参数中的 val 信息自动旋转图片到正确的方向。
**eg:**
* 在浏览器中输入以下图片链接,由于浏览器自动旋转了,我们可以看到一个显示正常的图片:
[http://dn-odum9helk.qbox.me/exif.png](http://dn-odum9helk.qbox.me/exif.png)
* 其实这张图片拍摄的时候相机是有旋转的,我们可以去掉图片的 exif 信息显示如下:
[http://dn-odum9helk.qbox.me/exif.png?imageMogr2/strip](http://dn-odum9helk.qbox.me/exif.png?imageMogr2/strip)
*
可以查询到图片的 exif 信息如下:
[http://dn-odum9helk.qbox.me/exif.png?exif](http://dn-odum9helk.qbox.me/exif.png?exif)
\{"ColorSpace":\{"val":"sRGB","type":3},"ExifVersion":\{"val":"Exif Version 2.1","type":7},"FlashPixVersion":\{"val":"FlashPix Version 1.0","type":7},"Orientation":\{"val":"Right-top","type":3},"PixelXDimension":\{"val":"3264","type":4},"PixelYDimension":\{"val":"2448","type":4},"ResolutionUnit":\{"val":"Inch","type":3},"XResolution":\{"val":"72","type":5},"YResolution":\{"val":"72","type":5}}
由以上我们可以得到图片拍摄时的 val 信息得到图片拍摄时相机的旋转信息是 Right-top 信息,我们可以由以下文档得到相机拍摄时应该是在逆时针选择了 90 度的基础上拍摄的:
[http://sylvana.net/jpegcrop/exif\_orientation.html](http://sylvana.net/jpegcrop/exif_orientation.html)
[http://www.impulseadventure.com/photo/exif-orientation.html](http://www.impulseadventure.com/photo/exif-orientation.html)


需要注意的是,七牛显示的 exif 信息 Orientation":\{"val":"Right-top","type":3},其中 type 信息是可以忽略,以 value 信息为准
# 如何知道缩略图是否已经成功生成 (/faq/dora/the-image-processing/1570-how-to-know-whether-the-thumbnail-has-been-successfully-generated)
最近更新时间: 2021-07-21 15:14:32
> 在上传图片 API 中使用预处理指令生成缩略图之后,如何知道缩略图是否已经成功生成?
可以通过持久化处理返回的persistenId查询,可以看到处理后的key值,通过拼接到下述链接获取
[http://api.qiniu.com/status/get/prefop?id=](http://api.qiniu.com/status/get/prefop?id=)
具体文档参考
[/faq/dora/the-image-processing/1570-how-to-know-whether-the-thumbnail-has-been-successfully-generated](/faq/dora/the-image-processing/1570-how-to-know-whether-the-thumbnail-has-been-successfully-generated)
但是不建议大家使用pfop生成缩略图,因为缩略图生成过程通常比较快,而且缩略图有缓存机制(但不是存到你的存储空间),用户下次访问的时候,会直接访问上次已经生成好的缩略图。因此可以直接在线生成缩略图即可
# 图片缩放后size比原图大 (/faq/dora/the-image-processing/1625-sizelarge)
最近更新时间: 2022-05-23 14:25:57
用户调用我们的imageView2或者imagemogr2接口实现图片缩放但是设置了图片质量参数 `/quality/`,发现图片的size比压缩之前大。
* 原图(63 KB)
```
http://7xt44n.com2.z0.glb.qiniucdn.com/%E5%8E%9F%E5%9B%BE.jpg
```
* 处理后( 87 KB)
```
http://7xkt2b.com1.z0.glb.clouddn.com/原图.jpg?imageView2/2/w/308/h/308/q/100
```
## **问题分析** [#问题分析]
影响图片的因素如下:
1. 图片尺寸(像素):同样的一张图,尺寸做得越大,图片就越大,打开就越慢; 注:尺寸和像素,都是表达图片长和宽的单位。
2. 图片的色彩丰富程度:色彩越丰富,颜色越多样,在同样尺寸大小时,图片越大;
3. 图片的清晰度:高清,高饱和度的图片,在同样尺寸大小时,图片越大;
4. 图片的格式:由于压缩比不同,图片大小与图片格式.jpg .png .webp等也有关系
其中,图片的色彩丰富程度和图片的清晰度和图片的质量因素相关。
**图片分辨率对比:**
* 原图分辨率:
\{"format":"jpeg","width":580,"height":580,"colorModel":"ycbcr"}
* 压缩图分辨率:
\{"format":"jpeg","width":308,"height":308,"colorModel":"ycbcr"}
**图片质量因素对比**
可以安装ImageMagick查看图片大小色度等信息的命令
* 原图的质量因素为90:
C:\Demo>identify -verbose [http://7xkt2b.com1.z0.glb.clouddn.com/原图.jpg](http://7xkt2b.com1.z0.glb.clouddn.com/原图.jpg) | grep Quality
Quality: 90
* 处理后图片质量因素为100:
C:\Demo>identify -verbose [http://7xkt2b.com1.z0.glb.clouddn.com/原图.jpg?imageView2/2/w/308/h/308/q/100](http://7xkt2b.com1.z0.glb.clouddn.com/原图.jpg?imageView2/2/w/308/h/308/q/100) | grep Quality
Quality: 100
**很明显,用户增加图片的质量因素比缩小图片分辨率影响图片的size要大,关于图片质量可以参考如下:**
```
保存为jpg格式为有损压缩,通俗来讲,即通过一定算法减少像素携带色彩数据的总量(注意,不是减少像素点数量)来达到压缩图片大小的效果。
比方10x10像素的图片,如果每个像素携带了1种颜色数据,则最大包含了100种不同的颜色。图片无损存储时,数据是这样记录的:x排+X列像素+颜色信息/组+下一组,共100种。当使用jpg压缩时,如果压缩比选8,通过其标准算法选取其中约20%与相邻像素数据一致,这20个像素数据只需要一个同前或同后或同上或同下的一个标记,从而减少了数据记录的长度,再读取图片时这些像素点原本的颜色数据依据算法被周围某个像素数据覆盖或差值替换了,这样就实现了压缩的效果。(以上描述仅为打比方来说明原理)。rar类压缩工具的基本原理也可以这么理解,rar是把同化数据根据算法进行归纳,并不是减少而已。所以对jpg类已经有损压缩过的图片,经过专门针对图片的优化算法,同化数据很少了,再用rar,基本没什么效果。
图像分辨率的减少,等于直接减少了像素的数量,当然就减少了数据的数量。
通过原理来看,由于涉及到像素大小,携带颜色信息量多少,压缩比等等影响的因素很多,很难说到底哪个损失大。需要具体图片具体处理。例如纯色图片,都是一个颜色,因为颜色信息一致,都是一样的,修改像素为1x1,100x100都一样,当然用1x1就可以了。比jpg效果好太多。
一般来说,日常的照片,色彩越丰富,直接减少像素对图片质量的损失比压缩成jpg要大,越简单,损失越小。另外,使用ps压缩还有一个很实用得技巧,在压缩图片时,直接修改像素大小命令尽量不用,而是通过图片变形缩小,然后裁切画布来减少像素,每个像素可保存的颜色信息远比前者要多。(可以找一张照片,直接改小像素,再改回,反复几次,然后用第二种方式反复几次,结 果第一种可能三五次图片就完全模糊了,后者虽然也模糊但效果好的多。然后再用jpg保存时,压缩比越大,获得的压缩率越低,所以一般 为8,几乎不影响,尽量不要低于6。这样尽可能保存更多的颜色信息也实现了对图片的压缩。
```
# 图片流量优化压缩策略 (/faq/dora/the-image-processing/1627-flow-optimization-compression-of-images)
最近更新时间: 2021-07-23 18:20:21
**我们通常都希望使用七牛提供的服务对自己的图片进行压缩,这样可以在加载图片的时候减少下载流量,下面介绍一些常见的对图片进行压缩的方法:**
可以使用我们的图片处理接口:
[/faq/dora/the-image-processing/1627-flow-optimization-compression-of-images](/faq/dora/the-image-processing/1627-flow-optimization-compression-of-images)
[/faq/dora/the-image-processing/1627-flow-optimization-compression-of-images](/faq/dora/the-image-processing/1627-flow-optimization-compression-of-images)
本例中用到的测试图片是:
[http://7xkr3o.com1.z0.glb.clouddn.com/testdemo.jpg](http://7xt44n.com2.z0.glb.qiniucdn.com/testdemo.jpg)
大小:1.7 MB 分辨率:width: 790,height: 2682
**1.使用我们的 imageView2 或者 imageMogr2 接口改变图片的分辨率:**
[http://7xkr3o.com1.z0.glb.clouddn.com/testdemo.jpg?imageMogr2/thumbnail/500x](http://7xt44n.com2.z0.glb.qiniucdn.com/testdemo.jpg?imageMogr2/thumbnail/500x)
大小:168 KB 分辨率: width: 500,height: 1697
**2.如果视频有 exif 信息的话用 strip 去除视频元信息图片 size 会降低不少:**
可以查看图片的元信息:
[http://7xkr3o.com1.z0.glb.clouddn.com/testdemo.jpg?exif](http://7xkr3o.com1.z0.glb.clouddn.com/testdemo.jpg?exif)
[http://7xkr3o.com1.z0.glb.clouddn.com/testdemo.jpg?imageMogr2/strip](http://7xt44n.com2.z0.glb.qiniucdn.com/testdemo.jpg?imageMogr2/strip)
大小:360 KB 分辨率:width: 790,height: 2682
**3.如果是 jpg 图片格式的话是可以通过降低图片的 quality 来改变图片的大小:**
[http://7xkr3o.com1.z0.glb.clouddn.com/testdemo.jpg?imageMogr2/quality/50](http://7xt44n.com2.z0.glb.qiniucdn.com/testdemo.jpg?imageMogr2/quality/50)
大小:233 KB 分辨率:width: 790,height: 2682
**4.可以通过转换图片的格式来达到改变图片的大小:**
bmp 格式比 png 要大得多,而 png 可能比 jpg 又大得多,而 jpg 又可能比 google 最新推出的 webp 格式大得多
可以参考:
[http://blog.csdn.net/guoer9973/article/details/44345451](http://blog.csdn.net/guoer9973/article/details/44345451)
**5.以上几种方式集成在一起效果会更好:**
[http://7xkr3o.com1.z0.glb.clouddn.com/testdemo.jpg?imageMogr2/thumbnail/500x/strip/quality/50/format/webp](http://7xt44n.com2.z0.glb.qiniucdn.com/testdemo.jpg?imageMogr2/thumbnail/500x/strip/quality/50/format/webp)
大小:69 KB 分辨率:width: 790,height: 2682
# 新版本Chrome浏览器不支持渐进显示问题 (/faq/dora/the-image-processing/1675-a-new-version-of-the-chrome-browser-does-not-support-incremental-display-problems)
最近更新时间: 2021-07-21 15:14:32
为提高弱网条件下web端用户访问图片的体验,七牛提供了渐进显示图片的功能,来达到网速慢时,图片可以从模糊到清晰显示的效果。
渐进显示功能支持jpg格式的图片,显示方法是在图片url后拼接 `?imageView2//interlace/1` 字段,其中``值可取0-5。
渐进显示图片功能是通过修改rgb的排序,达到在web端显示的效果渐进。这一效果需要客户端支持。
主流浏览器如:IE,Safari,Mozilla Firefox 均支持这一功能。
Chrome浏览器稳定版51.0.2704.106及以下的版本也支持渐进显示,但2016年7月21日发布的Chrome稳定版52.02743.82更改了图片加载方式,自此,Chrome浏览器52.02743.82及以上的版本不再支持渐进显示的功能。
# 图片瘦身无效 (/faq/dora/the-image-processing/4077-image-thin-body-is-invalid)
最近更新时间: 2021-07-23 18:20:34
# 问题描述 [#问题描述]
开启图片瘦身策略或者在图片资源 url 后添加`imageslim`并未发现图片有瘦身的效果
# 问题原因 [#问题原因]
可以参考如下几种原因排查问题
## 原因一 [#原因一]
查看自定义加速域名是否开启了忽略 url 参数?如果开启了,请关闭忽略 url 参数以及刷新文件后在查看访问的效果。

## 原因二 [#原因二]
如果你是开启了图片瘦身策略,只能对文件名带有显著.jpg,.png 的后缀的文件有瘦身的效果。
例如:
[https://url/b](https://url/b) 这个图片瘦身是无效的,
[https://url/b.jpg](https://url/b.jpg) 这个是图片瘦身有效的。
## 原因三 [#原因三]
这个资源本身不是图片格式,无法进行图片瘦身。您可以通过在文件名后添加`imageInfo`查看图片的元信息,如果不是图片格式,会提醒`"error": "unsupported format"`。如果是图片格式,则会返回正常的图片元信息。例如:[https://url/b.jpg?imageInfo](https://url/b.jpg?imageInfo)
## 原因四 [#原因四]
图片资源体积过大,导致图片处理超时,则返回原图。
返回原图时,可以打开浏览器的开发者模式,查看响应头,带有 response header「X-Slim-Origin」有2种取值:"0": 表征内部处理正常,"1": 表征内部处理异常,返回原图
## 原因五 [#原因五]
图片资源已损坏,这种情况一般是对象存储空间中的其他资源的图片瘦身正常,只有单独的一张或者几张图片瘦身无效。建议你更换未损坏的图片资源。
## 原因六 [#原因六]
私有bucket 不支持 CDN中间源的图片瘦身处理。
# 图片处理报错"invalid text color"是什么原因? (/faq/dora/the-image-processing/8318-image-processing-error-invalid-text-color-what-reason-be)
最近更新时间: 2021-07-23 18:20:49
**问题分析**:文字水印颜色编码不正确。
**处理方案**:水印文字颜色,RGB格式,可以是颜色名称(例如 red)或十六进制(例如 #FF0000),参考RGB颜色编码表,默认为黑色。经过URL安全的Base64编码。
# 使用图片水印 watermark/1 没有打上水印 (/faq/dora/the-image-processing/8319-using-image-watermark-watermark-watermark-1-no)
最近更新时间: 2021-07-23 18:20:56
**问题分析**:我们默认偏移为 10,超过偏移 watermark/1 就会返回原图
```
http://oepw6i5pr.qnssl.com/10221446?watermark/1/image/aHR0cDovL29lcHc2aTVwci5xbnNzbC5jb20vMTAyMjE0NDc=
```
* 原图
"width": 4654,"height": 2362
* 水印图
"width": 2327,"height": 2362
**处理方案**:重新设置dx、dy偏移量,如下:
```
http://oepw6i5pr.qnssl.com/10221446?watermark/1/image/aHR0cDovL29lcHc2aTVwci5xbnNzbC5jb20vMTAyMjE0NDc=/dx/0/dy/0
```
# 批量下载 (/faq/kodo/download-problem/12955-kodo-batch-download)
最近更新时间: 2025-04-10 15:17:00
# 关于下载 [#关于下载]
目前存储控制台不支持下载大量文件或者整个空间文件。
## 七牛提供如下解决方案: [#七牛提供如下解决方案]
* 调用各个语言SDK或者API获取文件列表,然后通过各个语言的HTTP client 发起get 请求,每个文件都有对应的URL,基于URL进行下载。
* 使用七牛提供的官方工具 [qshell](/products/kodo/0-qshell) 或者 [kodo-browser](/products/kodo/1-kodo-browser) 进行下载
## 批量下载工具 [#批量下载工具]
快速上手的工具推荐下面两个
* [图形界面化工具](/products/kodo/1-kodo-browser),适合少量文件下载,文件量过多不建议使用,勾选想要下载的文件/目录后点击【下载】即可。
* [命令行工具](/products/kodo/0-qshell),利用qshell的qdownload或者qdownload2命令批量上传,优先推荐使用qdownload2下载,具体参数说明参考[**qdownload2说明文档**](https://github.com/qiniu/qshell/blob/master/docs/qdownload2.md)。
`使用qdownload2前,必须先登录账号`,使用qshell account 进行登录,如果已经登陆过,那么无需重复登录。ak sk 空间名称如果不了解是什么,可以阅读[常见的关键参数](/faq/kodo/7450-the-third-party-plug-in-key-parameters)
```bash
qshell account 您的ak 您的sk 空间名称
qshell qdownload2 --dest-dir=本地文件夹相对路径或者绝对路径 --bucket=空间名称
```
> **注意**
> 如果需要批量下载公开空间的资源,使用qshell 的 qdownload 或者 qdownload2 命令时,如果指定使用CDN域名下载时,建议将 public 参数置为true,下载时击中CDN缓存时产生CDN流量费用,未击中CDN缓存回源下载资源时会产生额外的CDN回源流量费用,不指定public 为ture , 有可能导致CDN标准回源流量费用增长
### 使用经验 [#使用经验]
* 没有域名,或者域名没有备案无法访问,但是需要下载文件到本地。这种情况下,直接用外链是无法下载的,只能使用S3域名的方式进行,如果对SDK不太熟悉,那么只能使用 `kodo-browser` 下载
* 由于qshell是一个脚本命令行工具,所以需要在cmd或者终端中运行,mac与linux系统会经常使用到终端,下载合适版本到本地解压,直接chmod +x qshell 即可执行命令行。
`但是如果您需要使用windows操作系统的话,可能您对cmd不是那么熟悉,强列推荐参考这里`
[**windows环境下安装qshell教程**](/faq/kodo/tools-common-problems/12960-windows-environment-installation-qshell-tutorial#2)
# 断点续传下载功能说明 (/faq/kodo/download-problem/1568-breakpoint-continuingly-download-function)
最近更新时间: 2017-09-19 17:18:19
### 1. 接口说明 [#1-接口说明]
七牛云断点续传下载功能,其实是通过对标准的`HTTP`头部`Range`字段设置来实现的。具体设置方式请参考以下文档:
[下载过程说明](/products/kodo/development-guidelines/download-process#download-mechanism)
### 2. Demo演示 [#2-demo演示]
liuhanlindemac:Downloads yishiyaonie$ curl -I -H "Range:bytes=1024-2048" [http://liuhanlin-work.qiniudn.com/ceshimp4](http://liuhanlin-work.qiniudn.com/ceshimp4)
HTTP/1.1 206 Partial Content
Date: Mon, 03 Aug 2015 03:29:49 GMT
Server: nginx/1.4.4
Content-Type: video/mp4
Content-Length: 1025
Accept-Ranges: bytes
Access-Control-Allow-Origin: \*
Access-Control-Max-Age: 2592000
Cache-Control: public, max-age=31536000
Content-Disposition: inline; filename="ceshimp4"
Content-Range: bytes 1024-2048/36650496
Content-Transfer-Encoding: binary
ETag: "lrMxbjcfPyC7F1siA6tF78B1IMAq"
Last-Modified: Thu, 04 Jun 2015 06:37:13 GMT
X-Log: mc.g;IO:1
X-Reqid: QwIAAMDQ\_OYl1vYT
X-Qiniu-Zone: 0
X-Via: 1.1 yangzhou150:8080 (Cdn Cache Server V2.0), 1.1 lsh200:10 (Cdn Cache Server V2.0)
Connection: keep-alive
看一看下 “HTTP/1.1 206 Partial Content” 这个字段和 “Content-Length: 1025”。
# 为何没有“复制外链”的选项 (/faq/kodo/download-problem/5052-why-not-outside-chain-copy-option)
最近更新时间: 2019-01-07 17:14:43
# 问题描述 [#问题描述]
没有复制外链选项的情况,如下图所示:

# 原因分析 [#原因分析]
## 第一种情况: [#第一种情况]

当空间为\*\*`私有空间`\*\*的时候,下载链接是需要加上临时的 [下载凭证](/products/kodo/development-guidelines/security/0-download-token) 进行下载,所以不提供复制外链的选项,需要自行生成,形式如下:
```
[GET] http:///?e=&token=
```
## 第二种情况: [#第二种情况]

当空间设置中开启了 [**`原图保护`**](/faq/kodo/basic-use-of/1359-what-is-the-original-protection) 的时候,也不会提供复制外链的选项
# 存储常见问题FAQ答疑 (/faq/kodo/basic-use-of/12957-kodo-nomarl-faq)
最近更新时间: 2026-08-21 10:24:25
# 简介 [#简介]
如果您正在使用 存储 产品,本文列出了部分您可能需要了解的问题列表。
Q1:存储赠送的 50GB 资源包到期后可以续费吗?
Q2:海外有存储资源包售卖吗?
Q3:我买了500GB资源包,为什么只抵扣了400多GB的流量?
Q4:【标准存储空间国内通用计费项】用完会自动用【标准存储空间国内通用计费项(v2)】资源包吗?
Q5:存储有文件版本控制的功能吗,类似于git那种文件版本管理?
Q6:已删除的文件能恢复吗?
Q7:可以获取文件最后访问时间吗??
Q8:没有域名,测试域名回收了,域名没有备案,还有办法下载空间资源吗?
Q9:访问出现referer forbidden?
Q10:怎么删除空间?
Q11:可以给空间不同的文件设置不同的权限吗?只想让部分文件是私有访问的。
Q12:访问空间的访问记录是否可以查询
Q13:有什么办法可以快速扫描全盘,搜索包含指定内容的文件有哪些?
Q14:CDN回源流量资源包在哪里购买?
Q15:如何根据 文件后缀或文件类型 查询文件? 比如 *.js,*.xml 后缀的文件
Q16: 为什么上传的视频无法在七牛控制台预览和下载?
Q17: 将文件转换为 深度归档存储 类型后,为什么还能访问?
Q18: 上传失败,报579?
Q19: 对象存储空间是否有大小限制?
Q20: 创建空间提示空间名称已被占用,如何处理?
Q21: 空间数量是否有限制?
Q22: 如何查询文件上传日志?
Q23: 空间为什么存在空文件?
Q24: 空间文件被删除,如何查询删除记录?
Q25: 为什么使用空间自带s3域名或已绑定域名无法访问?
Q26: S3域名上传报跨域错误,如何处理?
Q27: 如何对存储空间视频进行转码处理?
Q28: 已备案域名接入对象存储空间,需要做备案变更或接入操作吗?
Q29: 文件存储类型转换会影响文件访问吗?
Q30: 批量提交了大量转码任务,如何取消未执行的任务?
Q31: 退订服务器是否会影响对象存储使用?
Q32: 对象存储如何开通使用?
Q33: 对象存储怎么上传文件到指定目录?
Q34: 存储空间绑定的自定义源站域名修改配置后,多久生效?
Q35: SDK支持根据文件类型或存储方式列举文件吗?
Q36: 存储空间控制台的域名管理按钮灰色无法点击,是什么原因?
Q37: 对象存储提供永久使用的域名吗?
Q38: 对象存储自定义源站域名配置HTTPS证书失败,报406错误,怎么处理?
Q39: 对象存储可以绑定多个域名和证书吗?
Q40: 对象存储文件如何禁用或启用?
如果本文仍然无法解决您的问题,您也可以通过 **[工单系统](https://support.qiniu.com/tickets/new)** 将您的问题反馈给我们。
| Q1: 存储赠送的 50GB 资源包到期后可以续费吗? |
| --------------------------------------------------------------------------------------------------------- |
| 资源包到期后,无需续费,直接在[云商城](https://qmall.qiniu.com/template/MTEy?spec_combo=MzA0Ng\&ref=index)重新购买标准存储中国大陆通用资源包 |
| Q2: 海外有存储资源包售卖吗? |
| -------------------------- |
| 存储海外目前没有资源包售卖,只有国内存储有资源包兜售 |
| Q3: 我买了500GB资源包,为什么只抵扣了400多GB的流量? |
| ---------------------------------------------------------------------------------------------------------------------------------- |
| 存储通用资源包存在抵扣系数,如果您的存储空间是华东存储空间,那么华东存储空间的抵扣系数是1.2 , 500GB的资源包只能抵扣华东存储空间 416GB 左右的容量计费 |
| `标准存储空间国内通用资源包,支持抵扣标准存储-华东-浙江、标准存储-华北-河北、标准存储-华南-广东、标准存储-华东-浙江2的存储容量,抵扣系数为 1.2:1.2:1:1。如实际使用标准存储-华东的存储容量 100 GB,相当于抵扣本资源包 120 GB。` |
| Q4: 【标准存储空间国内通用计费项】用完会自动用【标准存储空间国内通用计费项(v2)】资源包吗? |
| ------------------------------------------------- |
| 是的,会自动生效抵扣 |
| Q5: 存储有文件版本控制的功能吗,类似于git那种文件版本管理? |
| --------------------------------- |
| 存储是不支持文件版本管理的 |
| Q6: 已删除的文件能恢复吗? |
| --------------- |
| 已删除的文件是不能恢复的 |
| Q7: 可以获取文件最后访问时间吗? |
| ------------------------------------------------------- |
| 文件不支持获取最后访问时间,只有智能分层类型的文件才可以通过list功能获取最后访问时间,其他类型存储都不支持 |
| Q8: 没有域名,测试域名回收了,域名没有备案,还有办法下载空间资源吗 |
| ---------------------------------------------------------------------------------------------- |
| 没有域名,默认无法直接通过外链访问下载空间资源,如果需要将资源下载到本地,只能使用[kodo-browser](/products/kodo/1-kodo-browser)将文件下载到本地 |
| Q9: 访问出现referer forbidden |
| --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 出现referer forbidden是由于在空间设置里面设置了对应的referer防盗链,需要检查下HTTP请求是否有携带正确的referer , 或者将空间设置中的referer防盗链关闭,
`注意:是关闭存储空间,空间设置中的referer防盗链,不是CDN配置的referer防盗链` |
| Q10: 怎么删除空间 |
| ---------------------------------------------------------------------------------------------------------------------------- |
| 空间删除必须是在文件全部删除的情况下,才可以在控制台 -- 空间设置中删除空间,删除文件可以参考[批量删除](/faq/kodo/basic-use-of/data-migration-issues/12959-kodo-batch-delete) |
| Q11: 可以给空间不同的文件设置不同的权限吗,只想让部分文件是私有访问的 |
| ------------------------------------------------------------------------------- |
| 同一个空间内的文件权限都是一样的,不能设置部分文件为私有,部分公开,这种场景,只能创建两个空间,将公开的文件放在公有空间,需要有私有权限的文件放在私有空间中。 |
| Q12: 访问空间的访问记录是否可以查询 |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 如果对应存储空间绑定的是CDN加速域名,空间资源访问日志可以在 [https://portal.qiniu.com/cdn/log](https://portal.qiniu.com/cdn/log) 下载CDN域名日志查看。top url、ip、ua、referer等信息,可以在 [https://portal.qiniu.com/cdn/statistics/log/top](https://portal.qiniu.com/cdn/statistics/log/top) 查看 |
| 如果对应存储空间绑定的是源站域名,空间访问日志可以参考 [/products/kodo/development-guidelines/management-of-storage-space/11-space-access-log](/products/kodo/development-guidelines/management-of-storage-space/11-space-access-log) |
| Q13: 有什么办法可以快速扫描全盘,搜索包含指定内容的文件有哪些? |
| ---------------------------------- |
| 存储无法扫描文件内容的,只能您将文件下载逐个读取的 |
| Q14: CDN回源流量资源包在哪里购买? |
| ------------------------------------------------------------------------------------- |
| 您可以在 [云商城](https://qmall.qiniu.com/template/MTEy?spec_combo=MzE3OA\&ref=index) 界面点击购买 |
| Q15: 如何根据 文件后缀或文件类型 查询文件? 比如 *.js,*.xml 后缀的文件 |
| ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| 可以使用 qshell 工具的 [listbucket2](http://github.com/qiniu/qshell/blob/master/docs/listbucket2.md) 命令实现,qshell工具安装与使用参考 [qshell](/products/kodo/0-qshell) |
| A、比如列举 .js和.xml 后缀的文件:qshell listbucket2 --suffixes js,xml 空间名称 -o 列表存放的本地文件名.txt |
| B、比如列举 js和 xml 类型的文件:qshell listbucket2 --mimetypes application/xml,application/javascript,text/xml,text/javascript 空间名称 -o 列表存放的本地文件名.txt |
| Q16: 为什么上传的视频无法在七牛控制台预览和下载? |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 一般是您在CDN加速域名或存储空间配置了referer防盗链策略导致的,可以参考 [Referer防盗链](/products/cdn/configuration-management-fusion/access-control-configuration/0-domain-name-hotlinking-prevention) 和 [设置Referer防盗链](/products/kodo/kodo-console-guide/bucket-management/space-settings/4-set-the-referer-hotlinking-prevention) 检查CDN加速域名或存储空间配置的referer防盗链策略是否拉黑或没有加白七牛控制台访问域名:portal.qiniu.com ? |
| Q17: 将文件转换为 归档存储或深度归档存储 类型后,为什么还能访问? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1、如果调用过 [解冻](/products/kodo/rs/12-restore-archive) 接口,解冻完成后可以访问是正常的;
2、如果没有进行过文件 [解冻](/products/kodo/rs/12-restore-archive) 操作,一般是CDN缓存导致的,刷新下对应文件的CDN缓存即可,CDN缓存刷新操作参考 [刷新预取](/products/cdn/2-refresh-the-prefetch-fusion) 说明文档。 |
| Q18: 上传失败,报579? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 579是上传成功,回调失败;需要确认回调服务器接受 POST 请求,并可以给出 200 的响应。其他上传失败错误码说明参考 [上传失败常见状态码](/faq/kodo/upload-download-problem/3881-upload-the-common-failure-status-code-and-solve-method) |
| Q19: 对象存储空间是否有大小限制? |
| --------------------------------- |
| 对象存储空间没有存储上限限制,根据您的实际存储文件量计算存储费用的 |
| Q20: 创建空间提示空间名称已被占用,如何处理? |
| -------------------------------------------------- |
| 七牛存储空间名称全局唯一,提示空间名称已被占用,说明已被其他用户创建使用,需要您更换其他空间名称创建 |
| Q21: 空间数量是否有限制? |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 每个存储区域空间数量限制默认20个,如需提升空间数量限制,可以 [提交工单](https://support.qiniu.com/tickets/new-for-person/form?category=%E5%85%B6%E4%BB%96%E7%B1%BB%E5%92%A8%E8%AF%A2\&space=%E5%AF%B9%E8%B1%A1%E5%AD%98%E5%82%A8) 申请 |
| Q22: 如何查询文件上传日志? |
| ----------------------------------------------------------------------------------------------------------------- |
| 存储空间文件上传日志您无法自行查询,如需查询,可以 [提交工单](https://support.qiniu.com/tickets/create) 提供需要查询的文件名、上传时间、上传空间名称等信息,由技术支持人员为您查询。 |
| Q23: 空间为什么存在0字节大小的空文件? |
| ----------------------------------------------------- |
| 如果空文件的名称是类似 test/ 或 123/ 以 / 结尾的,是您创建了文件夹或目录产生的,可以忽略。 |
| Q24: 空间文件被删除,如何查询删除记录? |
| --------------------------------------------------------------------------------------------------------------------- |
| 文件删除日志您无法自行查询,可以提供删除文件名、空间名、文件删除时间,需要的信息(比如ip、ua等),然后 [提交工单](https://support.qiniu.com/tickets/create) 由技术支持人员为您查询提供。 |
| Q25: 为什么使用空间自带S3域名或已绑定域名无法访问? |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1、S3协议域名需要走AWS S3协议生成下载凭证后,才能请求访问,具体参考:[AWS S3 兼容](/products/kodo/development-guidelines/aws-s3-compatible) 说明文档;
2、如果是通过绑定自定义域名访问失败,建议先确认下域名是否使用正确?必须使用绑定的自定义域名访问,不能使用七牛提供的CNAME地址访问;且绑定域名是否已经在域名购买商平台或DNS托管商平台添加了CNAME解析配置? |
| Q26: S3协议域名上传报跨域错误,如何处理? |
| -------------------------------------------------------------------------------------------------------------------------------------------- |
| S3协议域名支持配置跨域策略,配置操作参考:[设置跨域资源共享](/products/kodo/kodo-console-guide/bucket-management/space-settings/5-set-the-cross-domain-resource-sharing) |
| Q27: 如何对存储空间视频进行转码处理? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **1、上传时自动对视频进行转码处理:**
A、上传token中添加转码参数来实现,上传token策略参数说明:[上传策略](/products/kodo/development-guidelines/security/1-put-policy) |
| 
B、不需要修改上传代码的情况下,可以在七牛控制台 [创建任务触发器](/products/kodo/kodo-console-guide/bucket-management/the-data-processing/tasks-workflows/1-tigger) 来实现自动对新增视频文件进行转码处理。
**2、对存储空间已存在的资源进行转码处理:**
A、控制台手动 [创建转码任务](/products/kodo/kodo-console-guide/bucket-management/the-data-processing/tasks-workflows/2-task#3) 处理;
B、通过代码调用 [转码接口](/products/dora/processing-mechanism/persist/0-persistent-data-processing-pfop#3) 提交处理 |
| Q28: 已备案域名接入对象存储空间,需要做备案变更或接入操作吗? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 不需要,只要您的域名有ICP备案,且可以在 [工信部官网](https://beian.miit.gov.cn/#/Integrated/recordQuery) 可以查询到备案信息即可。 |
| Q29: 文件存储类型转换会影响文件访问吗? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 1、标准存储、低频存储、智能分层存储、归档直读 这4种存储类型相互转换:不会影响文件访问,但计费会有差异,计费说明参考 [计量项与计费项](/products/kodo/1-metering-and-billing)
2、如果是其他存储类型转换为归档存储或深度归档存储:转换后,无法直接访问,需要先做文件解冻,解冻成功后才可以访问,接口文档参考:[解冻归档/深度归档存储文件](/products/kodo/rs/12-restore-archive),另外,计费也会有差异,计费说明参考 [计量项与计费项](/products/kodo/1-metering-and-billing)
3、归档存储或深度归档转换为其他存储类型:无法直接转换,需要先将文件解冻成功后,才可以进行存储类型转换,解冻接口文档参考:[解冻归档/深度归档存储文件](/products/kodo/rs/12-restore-archive),文件存储类型转换接口参考 [修改文件存储类型](/products/kodo/rs/9-modify-the-file-storage-type),计费说明参考 [计量项与计费项](/products/kodo/1-metering-and-billing) |
| Q30: 批量提交了大量转码任务,如何取消未执行的任务? |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1、指定pipeline为私有队列名称提交的任务:可以在七牛控制台 - [队列](https://portal.qiniu.com/dora/media-gate/pipeline) 删除对应私有队列名称取消未执行任务;
2、没有指定私有队列名称,使用默认队列提交的任务:需要您 [提交工单](https://support.qiniu.com/tickets) 由技术支持为您处理取消未执行任务。
**`注意:只能取消还在排队且未开始执行的转码任务,已经在执行中或执行完成的任务无法取消`** |
| Q31: 退订服务器是否会影响对象存储使用? |
| ----------------------------------------------------------- |
| 是否影响,取决于您的服务器是否有对象存储相关的上传、下载、回调、转码触发、镜像回源或中转服务部署,如果没有,不会影响。 |
| Q32: 对象存储如何开通使用? |
| -------------------------------------------------------------------------------- |
| 注册七牛账号并完成实名认证后即可使用,无需开通。对象存储使用参考文档:[快速入门文档](/products/kodo/0-console-quickstart) |
| Q32: 对象存储怎么上传文件到指定目录? |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 上传到哪个“目录”不是单独设置目录参数,而是直接在上传时把目标路径写进文件名 key 里;控制台看到的目录是虚拟目录,/ 前面的前缀会自动显示成文件夹。比如图片传到 1 文件夹就把 key 设为 1/图片名.jpg,压缩包传到 2 文件夹就把 key 设为 2/压缩包名.zip;如果要更深层目录,就继续写成 1/a/xxx.jpg 这种格式。 |
| Q34: 存储空间绑定的自定义源站域名修改配置后,多久生效? |
| ------------------------------ |
| 配置修改完成后,全网生效一般需要5-15min左右。 |
| Q35: SDK支持根据文件类型或存储方式列举文件吗? |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 不支持,[资源列举](/products/kodo/rs/4-list) 接口仅支持根据空间和统一前缀列举获取;
如需根据文件类型或存储类型等更多条件列举,
1、推荐使用 [qshell工具](/products/kodo/0-qshell) 的listbucket2命令列举获取,Windows使用qshell参考文档:[windows环境下安装qshell与使用](/faq/kodo/tools-common-problems/12960-windows-environment-installation-qshell-tutorial#3)
2、或者调用 [资源列举](/products/kodo/rs/4-list) 接口,根据接口返回字段内容自行筛选记录需要的文件列表信息。 |
| Q36: 存储空间控制台的域名管理按钮灰色无法点击,是什么原因? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 一般是您查看的空间是其他七牛账号授权给您的,授权空间只能进行文件上传和下载,没有其他操作权限,说明参考:[设置空间授权](/products/kodo/kodo-console-guide/bucket-management/space-settings/3-set-the-space-authorization) 说明文档 |
| Q37: 对象存储提供永久使用的域名吗? |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 不提供,创建空间时默认分配的测试域名只有30天有效期,到期后系统会自动回收且无法恢复,需要绑定您自己的域名来访问空间资源。
1、测试域名限制说明:[测试域名使用规范](/faq/cdn/other-fusion/1319-test-domain-access-restriction-rules)
2、存储空间绑定域名参考:[域名管理](/products/kodo/kodo-console-guide/bucket-management/kodo-domain-name-management),中国大陆区域存储空间绑定的自定义域名必须有ICP备案。 |
| Q38: 对象存储自定义源站域名配置HTTPS证书失败,报406错误,怎么处理? |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 一般是您上传的自有证书不支持导致的,HTTPS配置证书不支持 `自签证书`或`Cloudflare平台签发证书`,只支持CA签发证书。七牛支持申请免费证书,可在 [证书管理 - 购买证书](https://portal.qiniu.com/certificate/apply) 选择 【TrustAsia限免】 - 【DV免费域名型】进行购买。SSL证书入门说明文档参考:[/products/ssl/quick-start/13469-ssl-certificate-quick-start](/products/ssl/quick-start/13469-ssl-certificate-quick-start) |
|  |
| Q39: 对象存储可以绑定多个域名,并每个域名绑定证书吗? |
| --------------------------------------------------------------------------------------------------------- |
| 支持,对象存储空间绑定域名操作参考:[域名管理](/products/kodo/kodo-console-guide/bucket-management/kodo-domain-name-management) |
| Q40: 对象存储文件如何禁用或启用? |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 方式1:可通过调用 [修改文件状态](/products/kodo/rs/11-modify-the-file-status) 接口启用或禁用文件; |
| 方式2:可使用 [qshell](/products/kodo/0-qshell) 命令行工具的 [forbidden](http://github.com/qiniu/qshell/blob/master/docs/forbidden.md) 命令处理,
启用文件命令:`qshell forbidden 空间名 文件名 -r`
禁用文件命令:`qshell forbidden 空间名 文件名`
如果需要批量处理文件,可使用qshell工具的 [batchforbidden](http://github.com/qiniu/qshell/blob/master/docs/batchforbidden.md) 命令批量处理 |
# 批量获取文件列表 (/faq/kodo/basic-use-of/12958-kodo-batch-keylist)
最近更新时间: 2025-04-10 15:16:23
目前存储控制台不支持直接获获取文件列表
## 七牛提供如下解决方案: [#七牛提供如下解决方案]
* [官方服务端SDK](/sdk-tools/sdk#official-sdk),调用各个语言SDK或者API获取文件列表,
* [命令行工具](/products/kodo/0-qshell),利用qshell的listbucket或者listbucket2命令批量获取,优先推荐使用listbucket2获取列表,具体参数说明参考[**listbucket2说明文档**](https://github.com/qiniu/qshell/blob/master/docs/listbucket2.md)。
## 使用经验 [#使用经验]
### qshell 获取文件列表 [#qshell-获取文件列表]
由于qshell是一个脚本命令行工具,所以需要在cmd或者终端中运行,mac与linux系统会经常使用到终端,下载合适版本到本地解压,直接chmod +x qshell 即可执行命令行。
`但是如果您需要使用windows操作系统的话,可能您对cmd不是那么熟悉,强列推荐参考这里`[**windows环境下安装qshell教程**](/faq/kodo/tools-common-problems/12960-windows-environment-installation-qshell-tutorial#2)
linux 和 mac 的话,直接在终端中执行
`listbucket2` 命令用于获取文件列表,可以根据不同的需求拉取不同的文件列表
这里只列举几种常见的获取文件列表的需求,更多参数叠加使用,参考[**listbucket2参数文档**](https://github.com/qiniu/qshell/blob/master/docs/listbucket2.md)
使用listbucket2前,必须先登录账号,使用qshell account 进行登录,如果已经登陆过,那么无需重复登录。ak sk 空间名称如果不了解是什么,可以阅读[常见的关键参数](/faq/kodo/7450-the-third-party-plug-in-key-parameters)
```bash
qshell account 您的ak 您的sk 空间名称
```
1.获取全部文件列表
```bash
qshell listbucket2 空间名称 -o 列表存放的本地文件名.txt
```
2.只获取文件名
```bash
qshell listbucket2 空间名称 --show-fields Key -o 列表存放的本地文件名.txt
```
3.获取指定前缀文件列表
比如想要获取前缀为 image文件夹的文件,通过 prefix
```bash
qshell listbucket2 空间名称 --prefix "iamge/" -o 列表存放的本地文件名.txt
```
4.获取指定时间范围内的文件列表
比如想要获取 2018-10-30 \~ 2018-11-03 之间上传的文件列表
```bash
qshell listbucket2 --start 2018-10-30 --end 2018-11-03 空间名称 -o 列表存放的本地文件名.txt
```
5.获取指定文件类型的文件列表
比如想要获取 空间内的低频文件列表
file-types参上个月:根据列举前缀列举整个空间,然后从中筛选出满足七牛存储类型的文件;配置多个存储类型时中间用逗号隔开(eg: 1,2,3);0:普通存储,1:低频存储,2:归档存储,3:深度归档存储,4:归档直读存储。
```bash
qshell listbucket2 空间名称 --file-types 2 -o 列表存放的本地文件名.txt
```
### SDK [#sdk]
以java
java为列,参考 [https://developer.qiniu.com/kodo/1239/java#rs-list](https://developer.qiniu.com/kodo/1239/java#rs-list) ,可以将列表信息根据需求自定义捕获输出即可
# 什么是样式以及样式分隔符? (/faq/kodo/basic-use-of/1327-what-is-the-style-and-the-style-separators)
最近更新时间: 2021-06-22 16:15:38
# 什么是样式 [#什么是样式]
样式是将冗长的数据处理重新定义的一个友好别名,其本质仍然是对图片的处理模式,
可以参考图片处理的相关文档:
[样式](/faq/kodo/basic-use-of/1327-what-is-the-style-and-the-style-separators#3)
[图片处理参数](/products/dora/image-processing-api/6-img-directions-for-use)
# 设置图片样式 [#设置图片样式]
可以在 [控制台](https://portal.qiniu.com/) - 对象存储 中选择需要配置的存储空间,在图片样式标签配置

# 什么是样式分隔符 [#什么是样式分隔符]
样式分隔符是用于连接资源链接和图片样式的特殊符号,为防止访问出错,样式名中不可出现当前所启用的识别符
# 设置样式分隔符 [#设置样式分隔符]
可以在 [控制台](https://portal.qiniu.com/) - 对象存储 中选择需要配置的存储空间,在图片样式-样式分隔符设置中做分隔符配置

# 示例 [#示例]
样式名称为imageFop,样式内容为:imageView2/0/w/48/h/48,样式分隔符为 -
原始图片链接[http://dn-odum9helk.qbox.me/qiniu-picture1.jpg](http://dn-odum9helk.qbox.me/qiniu-picture1.jpg)
通过访问[http://dn-odum9helk.qbox.me/qiniu-picture1.jpg-imageFop](http://dn-odum9helk.qbox.me/qiniu-picture1.jpg-imageFop) 即可获得效果缩放效果
注意事项:
1、创建分隔符时,不建议使用在样式名称中出现的符号作为分隔符。
2、修改分隔符是个危险操作,全网生效须24小时。
# 在七牛云存储上播放 HLS (/faq/kodo/basic-use-of/1339-in-seven-niuyun-stored-in-hls)
最近更新时间: 2020-05-15 16:34:16
# 在七牛云存储上播放 HLS [#在七牛云存储上播放-hls]
HLS 是在移动端使用广泛的播放协议,可以用于直播,也可以用于点播。七牛云存储提供多种类型的视频文件向 HLS 的转换功能:[音视频切片](/faq/kodo/basic-use-of/1339-in-seven-niuyun-stored-in-hls)。同时,也提供了 m3u8 和 ts 文件的分发下载功能。
用户有两种方式使用七牛云存储提供的 HLS 功能。如果用户已经有视频的 m3u8 文件和相应的 ts 文件,那么只需上传到七牛云存储中即可。播放时将 m3u8 文件的[下载 url](/faq/kodo/basic-use-of/1339-in-seven-niuyun-stored-in-hls) 作为播放地址,便可以播放 HLS 视频。但有两点需要注意:
1,m3u8 文件中,必须指向 ts 文件所在的位置。包括两种形态:相对引用和绝对引用。相对引用就是当 m3u8 文件同 ts 文件在同一 bucket 中时,可以直接将 ts 文件名放在 m3u8 文件中,不需要额外的前缀:
\#EXTM3U
\#EXT-X-VERSION:3
\#EXT-X-MEDIA-SEQUENCE:0
\#EXT-X-ALLOW-CACHE:NO
\#EXT-X-TARGETDURATION:300
\#EXTINF:300.000,
seg00000.ts
\#EXTINF:300.000,
seg00001.ts
\#EXTINF:300.000,
seg00002.ts
\#EXTINF:300.000,
seg00003.ts
\#EXTINF:300.000,
seg00004.ts
\#EXT-X-ENDLIST
对于 m3u8 文件同 ts 文件放在不同的 bucket 的情况,需要在 ts 文件名之前增加域名前缀:
\#EXTM3U
\#EXT-X-VERSION:3
\#EXT-X-MEDIA-SEQUENCE:0
\#EXT-X-ALLOW-CACHE:NO
\#EXT-X-TARGETDURATION:300
\#EXTINF:300.000,
[http://test-hls.u.qiniudn.com/seg00000.ts](http://test-hls.u.qiniudn.com/seg00000.ts)
\#EXTINF:300.000,
[http://test-hls.u.qiniudn.com/seg00001.ts](http://test-hls.u.qiniudn.com/seg00001.ts)
\#EXTINF:300.000,
[http://test-hls.u.qiniudn.com/seg00002.ts](http://test-hls.u.qiniudn.com/seg00002.ts)
\#EXTINF:300.000,
[http://test-hls.u.qiniudn.com/seg00003.ts](http://test-hls.u.qiniudn.com/seg00003.ts)
\#EXTINF:300.000,
[http://test-hls.u.qiniudn.com/seg00004.ts](http://test-hls.u.qiniudn.com/seg00004.ts)
\#EXT-X-ENDLIST
2,为了保证 flash 播放器能够正确播放 HLS 视频,必须在 m3u8 和 ts 文件所在的 bucket 中放置 crossdomain.xml 文件。
如果用户所用的是其他类型的视频格式,比如 MP4、FLV 等,可以上传至七牛云存储,然后使用七牛云存储的[音视频切片](/faq/kodo/basic-use-of/1339-in-seven-niuyun-stored-in-hls)功能,将其转化成 HLS 视频。用户可以在视频上传的同时启动转换操作:[数据预处理](/faq/kodo/basic-use-of/1339-in-seven-niuyun-stored-in-hls#put-policy-persistent-ops-explanation),也可以对已经上传的视频文件进行转换:[触发持久化处理](/faq/kodo/basic-use-of/1339-in-seven-niuyun-stored-in-hls)。
在启动 HLS 转换操作时,需要指定视频切片的长度。这个值过长会造成拖放响应降低,废流量增加;这个值过短,会造成 ts 文件过多,管理不便。通常,ts 文件片的长度取 5 分钟到 10 分钟比较合适。
有的用户希望将 m3u8 和 ts 文件所在的 bucket 置为私有,以保护视频内容。但是,一旦 bucket 置为私有,那么对 ts 文件的访问必须每次都进行授权,从而导致每次访问的 url 都不一样,进而使得每次播放都需要生成不同的 m3u8 文件。为解决这个问题,七牛云存储提供了[私有 m3u8 功能](/faq/kodo/basic-use-of/1339-in-seven-niuyun-stored-in-hls)。用户借助此功能,可以直接访问一个私有 bucket 中的 HLS 视频。
# 什么是原图保护? (/faq/kodo/basic-use-of/1359-what-is-the-original-protection)
最近更新时间: 2026-04-30 17:27:12
# 概述 [#概述]
原图保护是七牛云存储针对媒体类源文件的保护措施。
对整个存储空间内`所有的资源`生效,开启后,空间内的文件无法直接通过url进行访问,需要配合[样式分隔符](/faq/kodo/basic-use-of/1327-what-is-the-style-and-the-style-separators)和[图片样式](/faq/kodo/basic-use-of/1359-what-is-the-original-protection#3)才能访问
# 使用场景 [#使用场景]
用于控制客户只能访问处理后的资源,如:
1. 对于存储在七牛上的图片资源,只希望客户访问携带水印的图片
2. 对于存储在七牛上的图片资源,进行统一的规格化处理
特别需要注意的是,原图保护是一种空间属性,对整个空间的资源都会生效,因此强烈建议对于开启原图保护的空间只存储需要保护原图的图片文件,其他文件使用其他空间存放。
# 访问方式 [#访问方式]
开启原图(或源文件)保护后,不能通过如下方式访问:
* `http://绑定域名/文件key或相对路径`
* `http://绑定域名/文件key或相对路径?操作符/操作符参数`
可以通过如下方式进行公开访问(其中加号“+”忽略):
* `http://绑定域名/文件key或相对路径 + 已设定的样式分隔符 + 已设定的图片样式`
如配置分隔符为"-",图片样式名称为"watermarked.jpg",则以下形式的链接可以访问
* `http://(Domain)/(Key)-watermarked.jpg`
如果希望对源文件进行访问,可以通过[私有链接签名](/products/kodo/development-guidelines/download-process/1-download-private)的方式,携带鉴权参数访问,但不建议这样使用。
# 设置方法 [#设置方法]
1. 设置样式分隔符,可以在 [控制台](https://portal.qiniu.com/) - 对象存储 中选择需要配置的存储空间,在样式分隔符设置标签配置

2. 设置图片样式,可以在 [控制台](https://portal.qiniu.com/) - 对象存储 中选择需要配置的存储空间,在图片样式标签配置

3\. 设置原图保护
在 [控制台](https://portal.qiniu.com/) 的 对象存储中选择需要配置的存储空间,在访问设置下选择开启或关闭原图保护功能

# 公开空间和私有空间介绍 (/faq/kodo/basic-use-of/1363-public-space-and-private-space-is-introduced)
最近更新时间: 2020-05-15 16:34:16
创建空间时,可设置为公开空间或私有空间。
公开空间,可通过文件对象的 URL 直接访问。如果要使用七牛云存储的镜像存储功能,请设置空间的属性为公有。
私有空间,文件对象的访问则必须获得拥有者的授权才能访问。
公开和私有仅对空间的读文件生效,修改、删除、写入等对空间的操作均需要拥有者的授权才能进行操作。
# 关于 list 超时及规避方式 (/faq/kodo/basic-use-of/1443-on-the-list-and-avoid-overtime)
最近更新时间: 2020-05-15 16:34:16
一个空间存放了大量的文件,这个数量很大,用户 list 出一部分文件批量删除空间的大量文件,然后再次调用 list 接口整个空间的文件名,list 失败并报超时错误。
**问题截图(Java版本):**

遇到这个问题时,请修改如下配置文件的超时时间,改到 200s;或者使用 [qshell](/faq/kodo/basic-use-of/1443-on-the-list-and-avoid-overtime) 工具,使用 [listbucket](https://github.com/qiniu/qshell/wiki/listbucket) 命令对空间文件名打印输出。

如果依然显示超时,原因如下:
在七牛的存储系统中,当用户调用 list 接口时,系统程序会先查看 marker 参数是否为空,如果为空,则起点位置设为整个空间的第一个文件,然后过滤整个空间的所有文件名并返回。
每当用户删除了大量文件,这时用户调用 list 接口,系统还是先查看 marker 字段是否为空,如果为空,则开始过滤已经被标记删除文件的信息, **如果删除的文件很多,系统会过滤很长时间,list等待时间过长,导致list失败** 。
**规避方式:**
调用 list 接口时,设置 marker 参数,指定 list 标记位置,如此系统不会过滤之前被删除的文件,而之间从标记位置遍历下去。
**本文涉及接口:**
* [资源列举(list)](/products/kodo/rs/4-list)
* [资源删除(delete)](/products/kodo/rs/3-delete)
# 统计日志 (/faq/kodo/basic-use-of/1451-how-to-own-space-ip-access-number)
最近更新时间: 2026-04-29 17:34:49
# 1 首先要有 linux 系统或者 mac 系统 [#1-首先要有-linux-系统或者-mac-系统]
# 2 下载日志到本地 [#2-下载日志到本地]
# 3 统计最热资源的访问次数排名前 20 [#3-统计最热资源的访问次数排名前-20]
$ zcat qwe.gz | awk '\{a\[$7]+=1} END\{for (i in a) print a\[i] " ==> " i}' | sort -rn | head -20
# 4 统计访问 ip 的前 20 [#4-统计访问-ip-的前-20]
$ cat part01.txt | awk '\{a\[$1]+=1} END\{for (i in a) print a\[i] " ==> " i}' | sort -rn | head -20
# 5 查看某个文件的 ip 访问次数统计(例如文件名字叫 windows) [#5-查看某个文件的-ip-访问次数统计例如文件名字叫-windows]
$ cat part01 |grep Windows| awk '\{a\[$1]+=1} END\{for (i in a) print a\[i] " ==> " i}' | sort -rn | head -20
# 6 cdn 下载统计访问错误码分布 [#6-cdn-下载统计访问错误码分布]
$ cat install.banban.im.cn.log |awk '\{if ($10!=20000) \{a\[$10]++;s=NR}} END \{for (i in a) \{print a\[i],i,a\[i]/s\*100 "%"}}'|sort -rn
# 7 IO 下载统计访问错误码分布 [#7-io-下载统计访问错误码分布]
$ cat 14.215.165.50.log |awk -F '\t' '\{if ($8!\~/20000/) \{a\[$8]++}} END \{for (i in a) \{print a\[i],i,a\[i]/NR\*100 "%"}}'|sort -rn
# 空间属性maxAge实现对缓存控制 (/faq/kodo/basic-use-of/1475-space-maxage-attribute-to-the-cache-control)
最近更新时间: 2026-04-30 17:19:28
# 使用空间属性maxAge实现对缓存的控制 [#使用空间属性maxage实现对缓存的控制]
* 通过配置七牛的空间(如下图)属性中 maxAge, 达到配置 HTTP header 中 Cache-Control:max-age的目的。

# 什么是Cache-Control? [#什么是cache-control]
* Cache-Control 通用消息头被用于在http 请求和响应中通过指定指令来实现缓存机制,是一种缓存控制的方法。 HTTP header中,服务器可以通过对Cache-Control的设置来指定在文档过期之前将其缓存多长时间。
* 例如,七牛控制台可以通过配置Cache-Control: max-age的时间表示从服务器传来文档之时起,认为此文档处于新鲜状态的秒数。
# maxAge值和CDN缓存时间的区别? [#maxage值和cdn缓存时间的区别]
访问资源链接时,缓存通常分为浏览器缓存和CDN节点缓存。
用户在浏览器中输入资源链接访问时,优先使用浏览器缓存,缓存失效或禁用本地缓存后,会向CDN节点请求资源,当CDN缓存时间超时后,会向源站发起资源请求。
* Cache-Control:max-age:设置缓存存储的最大周期,超过这个时间缓存被认为过期(单位秒),控制用户浏览器端的缓存。
* CDN缓存:当CDN缓存超时后,节点认为缓存失效,会向源站重新请求资源。
# 如何查看Cache-Control的maxAge值? [#如何查看cache-control的maxage值]
* 以chrome控制台为例,打开 开发者工具 或 检查,在network标签页下查看。
# 设置 robots.txt 文件 (/faq/kodo/basic-use-of/1540-set-the-robots-txt-file)
最近更新时间: 2020-05-15 16:34:16
下面是设置robots.txt文件的地方和具体操作
请参考图片:


# 浏览器对 MP4 的支持 (/faq/kodo/basic-use-of/1561-various-browsers-support-for-mp4)
最近更新时间: 2020-05-15 16:34:16
# 浏览器的支持表 [#浏览器的支持表]
[参照如下文档](https://en.wikipedia.org/wiki/HTML5_video)
# MP4 视频格式解释 [#mp4-视频格式解释]
MP4有非常复杂的含义( 见 [http://en.wikipedia.org/wiki/Mp4](http://en.wikipedia.org/wiki/Mp4) ),普通人对MP4的理解是后缀为 `.mp4` 的文件。但 MP4 本身不是一种简单的视频格式,它是一个包装了视频和音频格式的容器。至于里面的视频和音频使用什么编码是可选的。MP4的视频格式可以使用 DivX 也可使用 H264,vp8,vp9,theora。
# 推荐浏览器 [#推荐浏览器]
Chrome浏览器支持 HTML5 ,它支持原生播放部分的 MP4 格式(不用通过 Flash 等插件)
# 遇到的问题 [#遇到的问题]
为什么是部分MP4呢?是因为 Chrome 只支持 H264。为什么 Chrome 不支持所有的视频编码格式?绝大部份的视频编码格式都是要付专利费的,Google 已经为 H264 买了单,Firefox 没有 Google 那么有钱不愿意买。
# 查看视频格式 [#查看视频格式]
在外链地址后面加上 `?avinfo`,如: [http://dn-odum9helk.qbox.me/mp4-v1?avinfo](http://dn-odum9helk.qbox.me/mp4-v1?avinfo)
这是可以在chrome中正常播放的:
"streams": \[
\{
"index": 0,
"codec\_name": "h264",
"codec\_long\_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
这个格式就是不OK的:
"streams": \[
\{
"index": 0,
"codec\_name": "mpeg4",
"codec\_long\_name": "MPEG-4 part 2",
# 播放效果 [#播放效果]
[可以播放的视频演示](http://dn-odum9helk.qbox.me/@/test/mp4-test1%20-%20%E5%89%AF%E6%9C%AC.html)
[不可以播放的视频效果](http://dn-odum9helk.qbox.me/@/test/mp4-test1.html)
# 解决方案 [#解决方案]
1. 使用js或者flash播放器来播放 针对部分格式,即使是播放器也不行。还是建议使用七牛的转码。
2. 使用七牛的异步转码服务。
3. 转码前,利用部分的播放器也播放不了。原视频:[http://dn-odum9helk.qbox.me/mpeg4.mp4](http://dn-odum9helk.qbox.me/mpeg4.mp4)
4. 转码后:[http://dn-odum9helk.qbox.me/mpeg4-zhuanma.mp4](http://dn-odum9helk.qbox.me/mpeg4-zhuanma.mp4)
# 如何利用七牛云存储实现 HLS 的多码率播放 (/faq/kodo/basic-use-of/1618-how-to-make-use-of-more-than-seven-niuyun-storage-of-hls-rate-play)
最近更新时间: 2020-05-15 16:34:16
当前的音视频应用必须面对各种不同的播放客户端,从 PC 端(Web)开始,到智能手机。这些播放客户端有不同的尺寸,因而需要不同的分辨率。视频不同的客户端也会有不同的网络环境,比如 PC 上通常都有 WiFi 或有线网络,有较高的带宽保证,而手机、平板电脑在室外时,使用 2G/3G 网络,往往带宽不足,或者不稳定。因而需要针对不同的网络环境采用不同的码率。
HLS 本身所具备的的多码率播放能力对于音视频应用而言,提供了很大的方便。
用户首先根据需要生成不同分辨率和码率的 HLS 视频,(生成的方法参考[在七牛云存储上播放 HLS](/faq/kodo/basic-use-of/1339-in-seven-niuyun-stored-in-hls))。这些不同分辨率的 HLS 视频都应当存放在同一个 bucket 中。然后构造出多码率的 m3u8 文件:
\#EXTM3U
\#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=15000000
[http://test-hls.u.qiniudn.com/ultra-high.m3u8](http://test-hls.u.qiniudn.com/ultra-high.m3u8)
\#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=10000000
[http://test-hls.u.qiniudn.com/high.m3u8](http://test-hls.u.qiniudn.com/high.m3u8)
\#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=5000000
[http://test-hls.u.qiniudn.com/standard.m3u8](http://test-hls.u.qiniudn.com/standard.m3u8)
\#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2500000
[http://test-hls.u.qiniudn.com/low.m3u8](http://test-hls.u.qiniudn.com/low.m3u8)
其中,ultra-high.m3u8、high.m3u8、standard.m3u8、low\.m3u8 分别是已经生成的各种分辨率和码率的 HLS 视频。
用户生成这个文件后,可以将其上传至 bucket,供以后使用。
# 列举条目时 delimiter 参数问题 (/faq/kodo/basic-use-of/1698-java-lists-delimiter-parameter-problem)
最近更新时间: 2020-05-15 16:34:16
## 列举文件时delimiter参数问题 [#列举文件时delimiter参数问题]
#### 参数描述: [#参数描述]
调用listFiles方法列举指定空间的指定文件
//参数一:bucket 空间名;
//参数二:prefix 文件名前缀
//参数三:marker 上一次获取文件列表时返回的marker
//参数四:limit 每次迭代的长度限制,最大1000,推荐值100
//参数五:delimiter 以指定参数为分隔符的所有公共前缀(模拟列出目录效果)。缺省值为空字符串
以 python 为例:
```
# -*- coding: utf-8 -*-
# flake8: noqa
from qiniu import Auth
from qiniu import BucketManager
import json
access_key = '...'
secret_key = '...'
q = Auth(access_key, secret_key)
bucket = BucketManager(q)
bucket_name = '...'
#前缀
prefix = None
#列举条目
limit = 10
#列举'/'为分隔的所有前缀
delimiter = '/'
#标识
marker ='eyJjIjowLCJrIjoibGludXjlhoXmoLgvbGludXgtMy4xMC4xMDQudGFyLnh6In0='
ret, eof, info = bucket.list(bucket_name, prefix, marker, limit, delimiter)
print(info)
assert len(info.text_body) is not None
```
#### 输出结果: [#输出结果]
【注】:输出结果包括不含delimiter中指定参数的key,以及delemiter指定参数为分隔符的公共前缀
#### 例: [#例]
```
"{
"marker": "eyJjIjowLCJrIjoicHl0aG9uL3RpbWVzaWduLnB5In0=",
"items": [
{
"mimeType": "image/jpeg",
"fsize": 66441,
"hash": "Fme36Zks7NJVopii5OPfZ2PwHE8o",
"key": "mtr.jpg",
"putTime": 14563802730506377
}
],
"commonPrefixes": [
"o1-vkxcxP1-28U_lCDR4OFOYDdc=/",
"php/",
"pili/",
"python/"
]
}
```
# 特殊key资源的访问 (/faq/kodo/basic-use-of/2636-special-access-to-key-resources)
最近更新时间: 2020-05-15 16:34:16
> 文件key为`/log.jpg`,为什么访问不了?
## 概要 [#概要]
一般情况下,访问公有资源可以通过以下形式的url:
```
http:///
```
例如:
```
http://qiniuphotos.qiniudn.com/gogopher.jpg
```
基于此种简单规则的url在实际应用中非常方便。七牛云存储对key的格式几乎没有限制,因此任何可打印字符皆可作为资源的key。但是,如果key中包含特殊字符,如首字符为`/`、两个连接以上的`/`、以及`?`等,则无法通过上面形式的url在浏览器中进行访问。产生此类key的来源主要有:
1. 使用 sdk 上传文件
2. 使用 qboxrsctl put 上传
> **注:采用qrsync工具时不会产生此类key**
这里强调了两点,一是key中包含了特殊字符,二是通过浏览器访问文件。 这是因为浏览器对这些符号是保留使用的,例如:`/`用于分隔目录,`?`用于分隔Url和查询,多个连续的`/`会被处理为一个等等。 对于这类key,需要对其进行转义,其方法为:
将特殊字符转换成 ASCII码,格式为:%加字符的 ASCII码,即一个百分号 %,后面跟对应字符的 ASCII(16进制)码值。例如 空格的编码值是 %20。
## 示例 [#示例]
下面4个资源:
* 资源1,`key:hello%2Fqiniu.jpg`
* 资源2,`key:hello/qiniu.jpg`
* 资源3,`key:hello?qiniu.jpg`
* 资源4,`key:/hello/qiniu2.jpg`
对于资源 1 和 2,无论在浏览器中输入下面的哪种形式的 url,最终访问到的是资源 2
```
http://test.qiniudn.com/hello%2Fqiniu.jpg
```
或
```
http://test.qiniudn.com/hello/qiniu.jpg
```
对于资源4,如果在浏览器中输入`http://test.qiniudn.com//hello/qiniu2.jpg`,浏览器中将会显示: `{"error":"E404"}`,说明这个资源不存在
## 解决方案 [#解决方案]
对于示例中的资源 1 和 3,可分别通过下面的 url 进行访问:
```
http://test.qiniudn.com/hello%252Fqiniu.jpg
http://test.qiniudn.com/hello%3Fqiniu.jpg
```
多数情况下不需要手工对 url 进行转换,例如php语言,可以调用 urlencode 方法对 key 进行编码,其它语言类似。
```
```
对于示例中的资源4,上面的解决方法失效。需要通过下面的url访问:
```
http://test.qiniudn.com/@/hello/qiniu2.jpg
```
具体的编码算法如下:
```
func qiniuescape(key string) string
{
needesc := true
for i, ch := range key {
if ch == '/' && needesc {
//转义为 "@/"
} else if ch == '@' && needesc {
//转义为 "@@"
}
needesc = (ch == '/')
}
}
```
> **如无特殊需求,建议开发者避免使用以上提到的特殊key**
# 私有空间的注意事项 (/faq/kodo/basic-use-of/4054-matters-needing-attention-of-private-space)
最近更新时间: 2020-05-15 16:34:16
公有空间与私有空间的区别,在于 [下载私有资源](/products/kodo/development-guidelines/download-process/1-download-private) ,需要带有 [下载凭证](/products/kodo/development-guidelines/security/0-download-token) 。
在七牛服务端 SDK 中,均有生成私有链接的 demo 。
另外,访问时,还需注意以下几点:
1. **测试域名不能用于私有空间。**
测试域名的缓存时间不能更改,只能是默认的 1 个月。因此,即使签出的私有链接过期时间短于 1 个月,也有可能在链接第一次访问过了 1 个月后才会过期。
2. **自定义域名必须开启回源鉴权。**
私有空间的自定义域名必须开启 [回源鉴权](/products/cdn/configuration-management-fusion/access-control-configuration/2-back-to-the-source-authentication)(私有空间的域名,开启回源鉴权将自动填充成私有空间的规则,无需手动输入)。这是因为,自定义域名的缓存过期时间也有可能和私有链接的过期时间有矛盾,且默认的缓存策略是带问号参数缓存。
如果**不**开启,可能会带来以下问题:
* CDN 缓存时间长于私有链接过期时间,导致私有签名过期后仍可访问。
* 访问时如果每次访问签出的链接不同,由于默认的缓存策略是带问号参数缓存,于是每次访问都回源,不会命中缓存,严重影响访问性能。
3. **播放 hls 文件需要使用 pm3u8 服务。**
播放 hls 文件时,需要用 [pm3u8](/products/dora/audio-and-video-processing-api/4-private-m3u8-pm3u8) 服务,对 m3u8 文件列表里的 ts 链接做签名。
# 带图片样式的私有空间文件授权 (/faq/kodo/basic-use-of/4069-take-pictures-style-file-authorization-private-space)
最近更新时间: 2020-05-15 16:34:16
# 带图片样式的私有空间授权 [#带图片样式的私有空间授权]
本文介绍了当使用了拼接了数据处理或者图片样式如何进行签名授权。
私有资源下载是通过 HTTP GET 的方式访问特定的 URL。私有资源 URL 与公开资源 URL 相比只是增加了两个参数 `e` 和 `token`,分别表示过期时间和[下载凭证](/products/kodo/development-guidelines/security/0-download-token)。一个完整的私有资源 URL 如下所示:
```
http:///?e=&token=
```
当使用了七牛的实时数据处理功能或者拼接了图片样式时在 sdk 中进行签名授权时需要带拼接参数进行一起进行签名授权。不能在原文件签名后进行拼接参数。
如 私用空间中的文件为
原文件: [http://xxx.qiniu.xxx/qiniu.jpg](http://xxx.qiniu.xxx/qiniu.jpg)
数据处理: [http://xxx.qiniu.xxx/qiniu.jpg?imageslim](http://xxx.qiniu.xxx/qiniu.jpg?imageslim)
图片样式: [http://xxx.qiniu.xxx/qiniu.jpg-style](http://xxx.qiniu.xxx/qiniu.jpg-style)
文件另存下载 [http://xxx.qiniu.xxx/qiniu.jpg?attname=lhs.jpg](http://xxx.qiniu.xxx/qiniu.jpg?attname=lhs.jpg)
\*\* 正确的使用:**[http://xxx.qiniu.xxx/qiniu.jpg?imageslim\&e=xxxx\&token=xxxx](http://xxx.qiniu.xxx/qiniu.jpg?imageslim\&e=xxxx\&token=xxxx)**\*\*
\*\* 错误的使用: **[http://xxx.qiniu.xxx/qiniu.jpg?e=xxxx\&token=xxxxx?imageslim](http://xxx.qiniu.xxx/qiniu.jpg?e=xxxx\&token=xxxxx?imageslim)**\*\*
\*\* 以 php-sdk 为例,其中的 `baseUrl` 需要为拼接参数后的 url \*\*
```
/
$baseUrl = 'http://xxx.qiniu.xxx/qiniu.jpg';
//签名时的Url需要为拼接参数后的url后进行签名
//$baseUrl= 'http://xxx.qiniu.xxx/qiniu.jpg?imageslim';
//$baseUrl = 'http://xxx.qiniu.xxx/qiniu.jpg-style';
//$baseUrl = 'http://xxx.qiniu.xxx/qiniu.jpg?attname=lhs.jpg';
// 对链接进行签名
$signedUrl = $auth->privateDownloadUrl($baseUrl);
echo $signedUrl;
```
# 存储空间的转码样式使用说明 (/faq/kodo/basic-use-of/5858-the-instructions-on-the-storage-space-of-transcoding-style)
最近更新时间: 2020-05-15 16:34:16
# **转码命令参数详解** [#转码命令参数详解]
| 转码命令 | 完整命令 | 命令参数 |
| ----------------------- | ------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------- |
| audio-AAC-64K | avthumb/mp4/ab/64k/ar/44100/acodec/libfaac | 封装:MP4,音频码率:64Kbps,音频采样率:44100Hz,音频编码格式:libfaac |
| audio-AAC-128K | avthumb/mp4/ab/128k/ar/44100/acodec/libfaac | 封装:MP4,音频码率:128Kbps,音频采样率:44100Hz,音频编码格式:libfaac |
| audio-AAC-256K | avthumb/mp4/ab/256k/ar/44100/acodec/libfaac | 封装:MP4,音频码率:256Kbps,音频采样率:44100Hz,音频编码格式:libfaac |
| audio-HLS-32k | avthumb/m3u8/segtime/10/ab/32k/ar/44100/acodec/libfaac | 封装:m3u8,切片时长:10s,音频码率:32Kbps,音频采样率:44100Hz,音频编码格式:libfaac |
| audio-HLS-48k | avthumb/m3u8/segtime/10/ab/48k/ar/44100/acodec/libfaac | 封装:m3u8,切片时长:10s,音频码率:48Kbps,音频采样率:44100Hz,音频编码格式:libfaac |
| audio-HLS-64k | avthumb/m3u8/segtime/10/ab/64k/ar/44100/acodec/libfaac | 封装:m3u8,切片时长:10s,音频码率:64Kbps,音频采样率:44100Hz,音频编码格式:libfaac |
| audio-MP3-128K | avthumb/mp3/ab/128k/ar/44100/acodec/libmp3lame | 封装:MP3,音频码率:128Kbps,音频采样率:44100Hz,音频编码格式:MP3 (MPEG audio layer 3) |
| audio-MP3-160K | avthumb/mp3/ab/160k/ar/44100/acodec/libmp3lame | 封装:MP3,音频码率:160Kbps,音频采样率:44100Hz,音频编码格式:MP3 (MPEG audio layer 3) |
| audio-MP3-192K | avthumb/mp3/ab/192k/ar/44100/acodec/libmp3lame | 封装:MP3,音频码率:192Kbps,音频采样率:44100Hz,音频编码格式:MP3 (MPEG audio layer 3) |
| audio-MP3-320K | avthumb/mp3/ab/320k/ar/44100/acodec/libmp3lame | 封装:MP3,音频码率:320Kbps,音频采样率:44100Hz,音频编码格式:MP3 (MPEG audio layer 3) |
| video-Generic-320x240 | avthumb/mp4/ab/128k/ar/22050/acodec/libfaac/r/30/vb/300k/vcodec/libx264/s/320x240/autoscale/1/stripmeta/0 | 封装:MP4,音频码率:128Kbps,音频采样率:22050Hz,音频编码格式:libfaac,视频帧率:30Hz,视频码率:300Kbps,视频编码:H.264,视频分辨率:320x240,视频按原比例缩放至分辨率,清除文件metadata |
| video-Generic-360p-16:9 | avthumb/mp4/ab/128k/ar/44100/acodec/libfaac/r/30/vb/720k/vcodec/libx264/s/640x360/autoscale/1/stripmeta/0 | 封装:MP4,音频码率:128Kbps,音频采样率:44100Hz,音频编码格式:libfaac,视频帧率:30Hz,视频码率:720Kbps,视频编码:H.264,视频分辨率:640x360,视频按原比例缩放至分辨率,清除文件metadata |
| video-Generic-360p-4:3 | avthumb/mp4/ab/128k/ar/44100/acodec/libfaac/r/30/vb/600k/vcodec/libx264/s/480x360/autoscale/1/stripmeta/0 | 封装:MP4,音频码率:128Kbps,音频采样率:44100Hz,音频编码格式:libfaac,视频帧率:30Hz,视频码率:600Kbps,视频编码:H.264,视频分辨率:480x360,视频按原比例缩放至分辨率,清除文件metadata |
| video-Generic-480p-16:9 | avthumb/mp4/ab/128k/ar/44100/acodec/libfaac/r/30/vb/1200k/vcodec/libx264/s/854x480/autoscale/1/stripmeta/0 | 封装:MP4,音频码率:128Kbps,音频采样率:44100Hz,音频编码格式:libfaac,视频帧率:30Hz,视频码率:1200Kbps,视频编码:H.264,视频分辨率:854x480,视频按原比例缩放至分辨率,清除文件metadata |
| video-Generic-480p-4:3 | avthumb/mp4/ab/128k/ar/44100/acodec/libfaac/r/30/vb/900k/vcodec/libx264/s/640x480/autoscale/1/stripmeta/0 | 封装:MP4,音频码率:128Kbps,音频采样率:44100Hz,音频编码格式:libfaac,视频帧率:30Hz,视频码率:900Kbps,视频编码:H.264,视频分辨率:640x480,视频按原比例缩放至分辨率,清除文件metadata |
| video-Generic-720P | avthumb/mp4/ab/160k/ar/44100/acodec/libfaac/r/30/vb/2400k/vcodec/libx264/s/1280x720/autoscale/1/stripmeta/0 | 封装:MP4,音频码率:160Kbps,音频采样率:44100Hz,音频编码格式:libfaac,视频帧率:30Hz,视频码率:2400Kbps,视频编码:H.264,视频分辨率:1280x720,视频按原比例缩放至分辨率,清除文件metadata |
| video-Generic-1080P | avthumb/mp4/ab/160k/ar/44100/acodec/libfaac/r/30/vb/5400k/vcodec/libx264/s/1920x1080/autoscale/1/strpmeta/0 | 封装:MP4,音频码率:160Kbps,音频采样率:44100Hz,音频编码格式:libfaac,视频帧率:30Hz,视频码率:5400Kbps,视频编码:H.264,视频分辨率:1920x1080,视频按原比例缩放至分辨率,清除文件metadata |
| video-HLS-150k | avthumb/m3u8/segtime/10/ab/128k/ar/44100/acodec/libfaac/r/30/vb/150k/vcodec/libx264/stripmeta/0 | 封装:m3u8,切片时长:10s,音频码率:128Kbps,音频采样率:44100Hz,音频编码格式:libfaac,视频帧率:30Hz,视频码率:150Kbps,视频编码:H.264,清除文件metadata |
| video-HLS-240k | avthumb/m3u8/segtime/10/ab/128k/ar/44100/acodec/libfaac/r/30/vb/240k/vcodec/libx264/stripmeta/0 | 封装:m3u8,切片时长:10s,音频码率:128Kbps,音频采样率:44100Hz,音频编码格式:libfaac,视频帧率:30Hz,视频码率:240Kbps,视频编码:H.264,清除文件metadata |
| video-HLS-640k | avthumb/m3u8/segtime/10/ab/128k/ar/44100/acodec/libfaac/r/30/vb/640k/vcodec/libx264/stripmeta/0 | 封装:m3u8,切片时长:10s,音频码率:128Kbps,音频采样率:44100Hz,音频编码格式:libfaac,视频帧率:30Hz,视频码率:640Kbps,视频编码:H.264,清除文件metadata |
| video-HLS-1000k | avthumb/m3u8/segtime/10/ab/128k/ar/44100/acodec/libfaac/r/30/vb/1000k/vcodec/libx264/stripmeta/0 | 封装:m3u8,切片时长:10s,音频码率:128Kbps,音频采样率:44100Hz,音频编码格式:libfaac,视频帧率:30Hz,视频码率:1000Kbps,视频编码:H.264,清除文件metadata |
| video-Web | avthumb/mp4/ab/160k/ar/44100/acodec/libfaac/r/30/vb/2200k/vcodec/libx264/s/1280x720/autoscale/1/stripmeta/0 | 封装:MP4,音频码率:160Kbps,音频采样率:44100Hz,音频编码格式:libfaac,视频帧率:30Hz,视频码率:2200Kbps,视频分辨率:1280x720,视频按原比例缩放至分辨率,视频编码:H.264,清除文件metadata |
| video-iPhone4 | avthumb/mp4/ab/160k/ar/48000/acodec/libfaac/r/30/vb/2200k/vcodec/libx264/s/1280x720/autoscale/1/stripmeta/0 | 封装:MP4,音频码率:160Kbps,音频采样率:48000Hz,音频编码格式:libfaac,视频帧率:30Hz,视频码率:2200Kbps,视频分辨率:1280x720,视频按原比例缩放至分辨率,视频编码:H.264,清除文件metadata |
| video-iPhone4s | avthumb/mp4/ab/160k/ar/48000/acodec/libfaac/r/30/vb/5000k/vcodec/libx264/s/1920x1080/autoscale/1/stripmeta/0 | 封装:MP4,音频码率:160Kbps,音频采样率:48000Hz,音频编码格式:libfaac,视频帧率:30Hz,视频码率:5000Kbps,视频分辨率:1920x1080,视频按原比例缩放至分辨率,视频编码:H.264,清除文件metadata |
# **目标文件名设置** [#目标文件名设置]
目标文件名指转码后的文件名,设置时支持使用[魔法变量](/products/kodo/development-guidelines/upload-types/0-vars#magicvar),魔法变量引用格式为$\{var},$(var)。
特别的,魔法变量仅支持:bucket、key、etag、fsize、mimeType、endUser、fname、ext、fprefix、keybase
举例:
1.目标文件名设置为$(fprefix)-transcode.$(ext)
2.上传文件名为butterfly.mp4,则转码后文件名为butterfly-transcode.mp4;上传文件名newcity.flv,则转码后文件名为newcity-transcode.flv
# 存储空间域名管理 (/faq/kodo/basic-use-of/5859-domain-name-to-access-the-storage-space)
最近更新时间: 2023-05-10 12:12:18
用户可以绑定自定义域名到存储空间,添加 CNAME 记录指向相应域名,然后通过自定义域名来访问存储空间里的文件。
* 自定义 CDN 加速域名:为空间绑定自定义 CDN 加速域名,可以通过 CDN 边缘节点缓存数据,提高存储空间内的文件访问响应速度。
* 自定义源站域名:绑定自定义域名为空间的源站域名,即可通过该域名直接访问存储空间内的文件。
**注意:按照中华人民共和国《互联网管理条例》的要求,所有需要绑定自定义域名的用户,必须提前将域名在工信部备案。**
# **自定义 CDN 加速域名** [#自定义-cdn-加速域名]
Bucket 可以绑定 CDN 加速域名,利用 CDN 节点缓存数据,来实现存储空间内文件的加速访问。
* 从空间列表点击任一空间名,进入空间管理界面。
* 点击「域名管理」,在「自定义 CDN 加速域名」设置卡片单击「绑定域名」,即可打开空间的 CDN 加速域名绑定界面。

* 域名需要能通过 ICP 备案检测,然后按需设置域名的通信协议、使用范围、应用场景和缓存策略即可。域名需要添加 CNAME 记录解析到指定的域名。

* 绑定好的域名,会在空间的自定义 CDN 加速域名列表中展示。
# **自定义源站域名** [#自定义源站域名]
Bucket创建后,用户可以绑定自定义域名为其源站域名,然后使用自定义域名直接访问存储空间内的文件。
* 从空间列表点击任一空间名,进入空间管理界面。
* 点击「域名管理」,在「自定义源站域名」设置卡片单击「绑定域名」,即可打开空间的源站域名绑定界面。

* 域名通过 ICP 备案检测后即可绑定成功。域名需要添加 CNAME 记录指向存储空间所在区域对应的 CNAME 域名,才能通过自定义域名访问存储空间,各区域 CNAME 域名如下:
* 华东-浙江 iovip.qiniuio.com
* 华东-浙江2 iovip-cn-east-2.qiniuio.com
* 华北-河北 iovip-z1.qiniuio.com
* 华南-广东 iovip-z2.qiniuio.com
* 北美-洛杉矶 iovip-na0.qiniuio.com
* 亚太-新加坡 iovip-as0.qiniuio.com
* 绑定好的域名,会在空间的自定义源站域名列表中展示。
## **开启HTTPS访问** [#开启https访问]
用户可以为源站域名开通HTTPS访问并绑定SSL证书,证书需要先行托管至七牛云的 [SSL证书服务](https://portal.qiniu.com/certificate/ssl)

## **设置防盗链** [#设置防盗链]
为了防止数据被其他人盗链,可以设置空间防盗链功能:
* Referer白名单,仅允许指定的域名访问资源;或黑名单,指定域名禁止访问资源。
* 是否允许空Referer。如果不允许空Referer,则只有HTTP或HTTPS header中包含Referer字段的请求才能访问资源。

## **验证域名所有权** [#验证域名所有权]
当您的域名被其他用户绑定时,可以通过验证域名所有权,强制解绑此域名。
**说明:此步骤仅在绑定自定义源站域名提示域名冲突时可查看和操作。**
1、域名绑定冲突时,界面会提示系统依据域名信息生成的 TXT 记录。

2、在域名解析商处添加对应的 TXT 记录,信息如下:

* 记录类型:TXT
* 主机记录:填写步骤1中显示的主机记录。
* 记录值:填写步骤1中显示的值
* 其他值保持默认
3、在**绑定域名**弹窗中,单击**我已添加TXT验证记录,提交**,若系统验证检测信息通过,则会执行解绑。
# 如何在 Xcode 导入七牛 objc-sdk (/faq/kodo/the-common-problems-in-the-sdk/1328-how-in-the-xcode-import-seven-cows-objc-sdk)
最近更新时间: 2025-04-09 21:45:25
## 一、 使用 pod 包管理工具导入(推荐方式)。 [#一-使用-pod-包管理工具导入推荐方式]
在项目跟目录创建 PodFile 文件,输入:
platform :ios, "8.0" # 第一行指定平台和版本
pod 'AFNetworking', '~~> 3.0'
pod "Qiniu", :git => '[https://github.com/qiniu/objc-sdk.git](https://github.com/qiniu/objc-sdk.git)', :branch => 'AFNetworking-3.x'
pod 'HappyDNS', '~~> 0.2'
项目跟目录下执行 `pod install` ,成功后使用 xcode 打开新生成的 `Project.xcworkspace` 文件。
参考:
[http://www.yeolar.com/note/2015/01/02/cocoapods/](http://www.yeolar.com/note/2015/01/02/cocoapods/)
[http://guides.cocoapods.org/using/getting-started.html](http://guides.cocoapods.org/using/getting-started.html)
## 二、直接复制源码到项目 [#二直接复制源码到项目]
源码地址: [https://github.com/qiniu/objc-sdk](https://github.com/qiniu/objc-sdk)
* 右键,选择添加文件到项目

* 选择文件`Added folders` 选择 `Create groups`

完成后:

在 `Build Phases` --- `Compile Sources` 中已自动添加了`*.m`文件

## 导入依赖(源码导入参考) [#导入依赖源码导入参考]
7.0.12 后依赖 `HappyDNS`: [https://github.com/qiniu/happy-dns-objc](https://github.com/qiniu/happy-dns-objc) 以上面相同方式导入`HappyDNS`的源码。
至此,可正常编译、运行项目。
**注意** :
* 若报 `Undefined symbols for architecture x86_64: "_crc32", referenced from:` ,项目中需导入 `libz.dylib`。(`Build Phases` ---`Link Binary With Libraries`)
* 若报`"_res_9_ninit", referenced from: _setup_dns_server in QNResolver.o` 等,
1. 项目中需导入 `libresolv.dylib`或`libresolv.9.dylib`。(`Build Phases` --- `Link Binary With Libraries`);
2. 或 (`Build Settings` --- `Linking` --- `Other Linker Flags`) 添加 `-lresolv` 选项
* 报 `Thread 1: EXC_BAD_ACCESS(code=1,address=0x180f4beb8)`类似错误,将 `QN` 打头的都设置 `arc` (`Build Phases` --- `Compile Sources`)

## 链接错误 [#链接错误]
有客户导入sdk后会报链接错误 (linker command failed with exit code 1),可以下载下这个打包好的文件,解压后直接导入工程使用
[点击下载zip](http://dn-odum9helk.qbox.me/QiniuStorageLibrary.zip)
# js sdk 使用常见问题 (/faq/kodo/the-common-problems-in-the-sdk/1329-js-sdk-using-common-problems)
最近更新时间: 2018-01-19 00:54:01
## 案例1: [#案例1]
Q:如何在文件上传后,删除上传成功的文件记录UI,只保留正在上传,和报错的文件UI。
A:要在FileUploaded方法中调用UI逻辑来实现。不要使用RemoveFile方法因为:这个方法是删除文件,终止上传的,跟UI没关系。具体的业务代码需要客户自己实现。
***
## 案例2: [#案例2]
Q:上传文件时,出现400:\{"error":"read exceed block size"} 报错
A:首先更换最新的qiniu.js,然后清除掉本地浏览器中的localstory,然后重试文件上传,如果还有错误,请用我们官方提供的默认main.js.如果成功说明是你们main.js修改的不正确导致。
***
## 案例3: [#案例3]
Q:上传的时候,如何初始化多个按钮绑定多个事件来上传? A:可以参照[https://github.com/qiniu/js-sdk/blob/master/src/qiniu.js#L278-L293](https://github.com/qiniu/js-sdk/blob/master/src/qiniu.js#L278-L293)
中var Qiniu = new QiniuJsSDK();这是每次初始化一个对象来上传,你可以新建多个对象来上传就可以了。你新建多个对象,每次新建一个对象就可以重新获取一次token。
***
## 案例4: [#案例4]
不设置 chunk\_size 、或 chunk\_size: 0、或 chunk\_size: '0'、或 chunk\_size: '0mb' ,在html5下也是使用直传
## 案例5: [#案例5]
报错信息:

解决方法:

将箭头的代码注释掉。
***
## 案例5: [#案例5-1]
Q:JS上传报 400,token is not spcified
A:在上传时指定upload\_url上传,需要明确在服务端生成的token的地址返回给客户端时需要返回的token是JSON格式。
***
## 案例6: [#案例6]
Q: 400 incorrect region
A: 使用静态服务器来运行demo,否则无法调用获取上传host的接口。或者更改qiniu.js中uploadhost为错误提示中的host

***
## 案例7: [#案例7]
Q: Moxie not defined
A: 使用2.1.1 \~ 2.1.9 版本的plupload
***
## 案例8: [#案例8]
Q: Filters在部分安卓机型微信浏览器中无法生效
A: 建议取消filters参数,直接在FileAdded里做判断,参考[http://jsdemo.gugaobai.top/scripts/main.js](http://jsdemo.gugaobai.top/scripts/main.js)
# 七牛鉴权QiniuToken (/faq/kodo/the-common-problems-in-the-sdk/3702-QiniuToken)
最近更新时间: 2024-01-29 10:32:19
本文解释了生成七牛鉴权管理凭证的字符串(QiniuToken)的详细过程,共三步。
* 参考[管理凭证](/products/kodo/development-guidelines/security/access-token),直接使用七牛支持的服务端语言 SDK 管理凭证
* 参考[上传凭证](/products/kodo/development-guidelines/security/2-upload-token)、[下载凭证](/products/kodo/development-guidelines/security/0-download-token),了解相关凭证的构造
# 准备工作:获取密钥(AK/SK) [#准备工作获取密钥aksk]
生成七牛鉴权凭证信息的字符串,需要用到[密钥](/faq/kodo/the-common-problems-in-the-sdk/3702-QiniuToken#aksk),密钥包含AccessKey/SecretKey。第一次使用七牛的API之前,用户需要在七牛开发者平台的密钥管理中取得密钥。
**注意:** 密钥(AccessKey/SecretKey)是非常重要且隐私的信息,泄露可能会造成严重的后果,请不要直接放在客户端。
具体步骤如下:
1)登录[七牛开发者平台](https://portal.qiniu.com/signin),
2)点击[个人面板],选择密钥管理,进入七牛的密钥管理页面,

3)在七牛的[密钥管理页面](https://portal.qiniu.com/user/key),获取一对AccessKey/SecretKey。
# Step1. 构造待签名的 Data [#step1-构造待签名的-data]
待签名的data字符串由以下几个参数构成,拼接规则为:
```
data = + " " + + "?" + "\nHost: " + + "\nContent-Type: " + + "\n\n" +
```
注:\<>里面的内容需替换成相应的变量。
| 参数 | 必选 | 说明 |
| :---------- | :- | :------------------------------------------------------------------------------------------------------------------------- |
| Method | Y | 支持 POST、PUT 和 GET 方式, 注意方法为全大写 |
| Path | Y | 请求路径。实际的请求路径详见各接口说明的请求包 |
| RawQuery | N | 如不存在则不用添加 ?\ |
| Host | Y | 请求域名,例如:atlab.ai |
| contentType | N | 请求内容类型,如果参数为空,则不用加 "\nContent-Type: " + \ |
| bodyStr | N | 请求Body\: 如果 \ 存在且 Body 不为空,同时 \ 存在且不为空也不等于 "application/octet-stream",才加上\ |
**注意:无论\和 \ 是否为空,中间的 "\n\n" 都一定要加。**
示例代码为:
```
data= + " " +
if "" != "" {
data += "?"
}
data += "\nHost: " +
if "" != "" {
data += "\nContent-Type: "
}
data += "\n\n"
if "" != "" and
"" != "" and
"" != "application/octet-stream" {
data += ""
}
```
人脸识别的待签名字符串示例为:
```
POST /v1/face/detect
Host: argus.atlab.ai
Content-Type: application/json
{"data": {"uri":"http://img3.redocn.com/20120528/Redocn_2012052817213559.jpg"}}
```
# Step2.计算 HMAC-SHA1 签名,并对签名结果做 URL 安全的 Base64 编码 [#step2计算-hmac-sha1-签名并对签名结果做-url-安全的-base64-编码]
```
import hmac
import base64
import hashlib
sign = hmac.new("", data, hashlib.sha1).digest()
encodedSign = base64.urlsafe_b64encode(sign)
```
# Step3.将 Qiniu 标识与 AccessKey、encodedSign 拼接得到管理凭证 [#step3将-qiniu-标识与-accesskeyencodedsign-拼接得到管理凭证]
```
= "Qiniu " + "" + ":" + encodedSign
```
# 镜像存储功能在源站 URL 含有问号时的抓取资源规则 (/faq/kodo/image-storage-common-problems/1358-image-storage-function-in-the-source-station-to-grab-resources-rules-in-effect-at-the-time-of-the-url-contains-a-question-mark)
最近更新时间: 2018-01-05 10:02:16
镜像存储功能在 [镜像存储与qrsync数据同步的使用](/faq/kodo/tools-common-problems/1345-the-combination-of-image-storage-and-qrsync-tool-data-migration-plan) 中已有介绍。在使用镜像存储的时候,七牛会回源站拉取文件,如果源 URL 中带有问号,资源会按照如下规则来抓取和存储:
1,
如果源站的 URL 是类似这样的:`http://example.com/a/b/c/d.txt?version=20130807`,那么镜像存储会将文件 `d.txt` 抓取过来,并在七牛保存为`a/b/c/d.txt` (在七牛云存储中称为 `key`),忽略问号后面的参数。
2,如果源站的 URL 是类似这样的:`http://example.com/?version=20130807`,那么镜像存储会将访问该 URL 得到的结果保存在七牛云存储,但是保存的 key 为空的 key 值(不是不存在)。
3,如果源站的url是这样:`http://example.com/xxx.js?v=12222333332`,如果存在xxx.js这个文件,并且问号后面不同的版本号对应不同的文件,那么在抓取文件时,需要将?进行url编码后才可以正常拉取
# 七牛镜像存储使用手册 (/faq/kodo/image-storage-common-problems/1376-seven-cattle-image-storage-instruction-manuals)
最近更新时间: 2019-10-17 20:35:36
# **简介** [#简介]
七牛的镜像存储服务是一种快速的数据迁移和加速服务。可以帮助用户实现无缝数据迁移,迁移过程中并不影响原有业务系统的访问。镜像存储适用于迁移原有业务系统的已有数据。七牛提供分布式存储和加速分发服务,以分布式存储为核心服务。客户在准备接入七牛的时候一般有两种场景:
场景一
客户业务从设计开发的时候就采用七牛的云存储服务,这种情况下直接将文件上传到七牛,然后再使用七牛的加速分发服务即可。
场景二
客户业务已经建立起来后才准备接入七牛。这种情况下会遇到两个问题,第一个是需要修改上传的业务逻辑,第二个是如何迁移已有的数据。修改上传的业务逻辑,可能涉及到很多项目代码的修改,持续时间可能比较长。已有的数据可以使用七牛提供的同步工具[qshell](/products/kodo/0-qshell)上传到七牛,但是在上传之后由业务系统产生的新数据总不能每次都找出增量来上传,所以这个时候就可以用到镜像存储了。
# **业务模型** [#业务模型]
在镜像存储的业务模型里面,原来的图片或者视频访问域名将被配置为七牛的源站,而页面里面引用图片或视频链接的地方必须使用新的访问域名。然后将新的访问域名绑定 (CNAME) 到七牛空间对应的域名。在这些操作完成之后,终端用户就可以通过七牛访问图片或者视频等非结构化资源了。在每个访问请求到七牛的时候,如果七牛空间中不存在这个资源,那么七牛将主动回客户源站抓取资源并存储在空间里面,这样七牛就不需要再次回源客户的资源站点了。镜像存储业务模型如下:

# **配置步骤** [#配置步骤]
### Step 1 [#step-1]
将非结构化数据的源站配置为七牛空间的镜像源站。选择空间,然后在空间的概览页面里,找到镜像存储,然后在镜像源对话框内填入用于回源抓取资源的源站域名。比如将空间 image1 的镜像源站配置为`http://image1.abc.com`。
### Step 2 [#step-2]
为空间申请自定义域名,该域名将是新的资源外链的域名。注意加速域名的填写,比如为空间 image1 申请自定义域名`image11.abc.com`,该域名必须是当前业务系统里面没有使用的子域名。
### Step 3 [#step-3]
自定义域名审核通过之后,在客户的DNS服务设置那里,就可以根据审核通过后提示的CNAME目标来将自定义域名绑 定到七牛的空间域名。
### Step 4 [#step-4]
修改页面中的资源引用域名为新的自定义域名。比如,将新的图片资源外链域名改为`http://image11.abc.com`。
# **常见问题** [#常见问题]
Q1. 七牛的镜像存储和传统的 CDN 区别是什么?
七牛镜像存储是一种数据迁移的方式,其回源客户的源站也仅仅回源一次,成功抓取资源到七牛的空间之后,不再回源。七牛的存储外面还有一层 CDN 分发网络,这一层的 CDN 分发网络才和传统的 CDN 具有相同的功能。
Q2. 七牛的镜像存储的情况下,如何将源站更新的内容同步更新到七牛的空间?
七牛镜像存储的回源操作对相同的文件只抓取一次,后面如果客户的源站更新了文件内容,需要手动调用[镜像资源更新](/products/kodo/rs/6-prefetch)接口来更新七牛空间中的文件,保持内容和客户源站内容相同。另外七牛外围的 CDN 如果需要及时更新缓存的话,也需要利用七牛后台提供的[刷新预取](https://portal.qiniu.com/domain/refresh)功能来刷新 CDN 的缓存。如果不需要及时更新,那么等待 CDN 自动更新即可。
Q3. 七牛的镜像存储是否需要永久保留?
七牛的镜像存储是数据迁移的一种方式,之所以提供这种数据迁移方式是为了方便客户修改上传的业务逻辑。在上传的逻辑改为直传七牛之后,后续产生的新的数据将直接存储在七牛的空间。这样在镜像存储保留一段时间之后,源站的回源流量将逐渐趋于 0,这个时候就可以将镜像功能删除了。
Q4. 七牛的镜像存储需要修改资源的访问外链域名,如何使用和原有的资源域名相同的域名?
七牛的镜像存储会将原始的资源访问域名设置为源站,而新的资源访问域名必须采用和原始资源访问域名不同的域名。如果需要使用和原有资源域名相同的域名的话,首先需要将镜像源站的域名替换为一个新的子域名或者直接使用 IP 地址,然后将原有的资源域名申请配置为七牛空间的自定义域名,配置成功之后,进行 CNAME 操作,这样原有的页面里面的资源就不需要更改外链域名了。
Q4. 七牛的镜像存储回源源站时,User-Agent是什么?
七牛云镜像存储回源源站时,请求会携带固定的User-Agent信息:`-qiniu-imgstg-spider-1.0`,RegionID为华东z0、华南z1、华北z2、北美na0、东南亚as0。
# 使用镜像存储注意事项 (/faq/kodo/image-storage-common-problems/4067-using-image-storage-considerations)
最近更新时间: 2019-10-17 20:31:24
# 使用镜像存储,更新源站文件后,如何访问最新文件? [#使用镜像存储更新源站文件后如何访问最新文件]
参考 [镜像存储刷新缓存方法](/faq/cdn/4215-image-storage-refresh-the-cache-method)
# 镜像源地址设置和拉取资源链接形式 [#镜像源地址设置和拉取资源链接形式]
拉取资源链接为:镜像空间绑定的加速域名 +(源站链接-镜像源地址设置部分)
例如:
源站资源链接:http(s)://sourceDomain/image/123.jpg
加速域名:a.b.com
若镜像源地址设置为:http(s)://sourceDomain/
则拉取资源链接:http(s)://a.b.com/image/123.jpg
若镜像源地址设置为:http(s)://sourceDomain/image
则拉取资源链接:http(s)://a.b.com/123.jpg
# 回源请求的User-Agent [#回源请求的user-agent]
回源源站时,请求会携带固定的User-Agent信息:`-qiniu-imgstg-spider-1.0`,RegionID为华东z0、华南z1、华北z2、北美na0、东南亚as0。
# windows环境下安装qshell与使用 (/faq/kodo/tools-common-problems/12960-windows-environment-installation-qshell-tutorial)
最近更新时间: 2026-05-28 20:39:45
# 教程简介 [#教程简介]
本教程用于命令行初学者下载使用,且能够运行简单的命令测试能否正常使用。
本教程仅供示范,其他命令及详细操作请参考命令的 [**说明文档**](/products/kodo/0-qshell#9)。
# 安装操作步骤 [#安装操作步骤]
1. 在七牛开发者中心的 SDK & 工具中,选择合适的版本,下载到本地并解压 [**qshell文档**](/products/kodo/0-qshell)。
2. 为了方便文件的使用,可以对解压后的文件重命名为 `qshell.exe`(如果显示时隐藏了后缀,修改为 `qshell` 即可),如果解压后的文件名已经是qshell,那么忽略此步骤,参考上图
3. 将qshell复制存放入D盘,或者其他的非系统盘
4. widowns通过菜单栏搜索cmd,单击打开cmd窗口
5. 由于此处我们的qshell存在在D盘,cmd进入D盘,输入 D: 切换D盘,切换后输入 qshell -v 有版本号输出后,表示qshell已经可用
**注意**:如果没有对文件进行重命名,需要完整输入 `qshell文件名 -v`。如果报错无法识别的命令,请重新检查是否已经使用cmd进入了qshell.exe存放的真实目录
6. 使用 qshell 命令操作对应账号前需要进行登陆操作,登陆时需要 AK、SK 信息,获取密钥对 AK SK 可以在控制台复制,在个人中心 - [**密钥管理**](https://portal.qiniu.com/developer/user/key)中查看。
7. 登陆时使用命令(见下图):
```bash
qshell account 填写您的ak 填写您的sk name
```
8. 登录后,通过 qshell account 可以展示出账号信息,表示已经登录成功

到此时,表示qshell已经可以正式使用,下面可以在此目录执行qshell的各种命令
> **注意**:
>
> 1. 如果 AK,SK,name 首字母是 "-",需要使用命令 `qshell account -- 填写您的ak填写您的sk name`(如图),可以避免把该项识别成命令行选项。
> 2. qshell account 登录只需要登录一次,会记住账号,无需每次使用重复登录
# 文件列表 [#文件列表]
`listbucket2` 命令用于获取文件列表,可以根据不同的需求拉取不同的文件列表
`使用该命令行前需要先进行登陆,登陆命令参考本教程第二部分安装操作步骤。`
这里只列举几种常见的获取文件列表的需求,更多参数叠加使用,参考[**listbucket2参数文档**](https://github.com/qiniu/qshell/blob/master/docs/listbucket2.md)
**`注意:如果出现列举超时失败,建议先确认下本地网络情况,然后使用返回的marker标记重新执行列举命令即可。`**
**`marker的使用示例:`** 假如要列举的 bucket 名字为 "test-marker", marker 为"eyJjIjowLCJrIjoiMDkzOWM1ODU4ZmI1NGZiNzk3NTJmNjVkN2U4MWY4MmVfMTUzNTM3NzI2MDMxNV8xNTM1MzgwMjYyNDYxXzgzMjgyODAzOC0wMDAwMS5tcDQifQ=", 如果要接着这个 marker 位置继续列举,可以使用如下命令:
`qshell listbucket2 -m eyJjIjowLCJrIjoiMDkzOWM1ODU4ZmI1NGZiNzk3NTJmNjVkN2U4MWY4MmVfMTUzNTM3NzI2MDMxNV8xNTM1MzgwMjYyNDYxXzgzMjgyODAzOC0wMDAwMS5tcDQifQ= test-marker`
*
获取全部文件列表
*
只获取文件名
*
获取指定前缀文件列表
*
获取指定时间范围内的文件列表
*
获取指定文件类型的文件列表
## 获取全部文件列表 [#获取全部文件列表]
```bash
qshell listbucket2 空间名称 -o 列表存放的本地文件名.txt
```
## 只获取文件名 [#只获取文件名]
```bash
qshell listbucket2 空间名称 --show-fields Key -o 列表存放的本地文件名.txt
```
## 获取指定前缀文件列表 [#获取指定前缀文件列表]
比如想要获取前缀为 image文件夹的文件,通过 prefix
```bash
qshell listbucket2 空间名称 --prefix "iamge/" -o 列表存放的本地文件名.txt
```
## 获取指定时间范围内的文件列表 [#获取指定时间范围内的文件列表]
比如想要获取 2018-10-30 \~ 2018-11-03 之间上传的文件列表
```bash
qshell listbucket2 --start 2018-10-30 --end 2018-11-03 空间名称 -o 列表存放的本地文件名.txt
```
## 获取指定文件类型的文件列表 [#获取指定文件类型的文件列表]
比如想要获取 空间内的低频文件列表
file-types参上个月:根据列举前缀列举整个空间,然后从中筛选出满足七牛存储类型的文件;配置多个存储类型时中间用逗号隔开(eg: 1,2,3);0:普通存储,1:低频存储,2:归档存储,3:深度归档存储,4:归档直读存储。
```bash
qshell listbucket2 空间名称 --file-types 2 -o 列表存放的本地文件名.txt
```
# 单文件上传 [#单文件上传]
`rput` 命令用于上传大文件,命令参数详解参考 [**rput说明文档**](https://github.com/qiniu/qshell/blob/master/docs/rput.md)。
1. 使用该命令行前需要先进行登陆,登陆命令参考本教程第二部分安装操作步骤。
2. 执行命令:
```bash
qshell rput bucket名 上传后文件名 本地文件的绝对路径或者相对路径(更简单的方式直接拖拽文件到cmd中)
```
# 批量上传 [#批量上传]
`qupload2` 命令用于批量上传本地或者主机服务器某个文件夹下的文件全部上传到存储,命令参数详解参考 [**qupload2说明文档**](https://github.com/qiniu/qshell/blob/master/docs/qupload2.md)。
`使用该命令行前需要先进行登陆,登陆命令参考本教程第二部分安装操作步骤。`
```bash
qshell qupload2 --src-dir=本地文件夹相对路径或者绝对路径 --bucket=空间名称
```
# 批量下载 [#批量下载]
`qdownload2` 用于批量下载空间内文件,命令参数详解参考 [**qdownload2说明文档**](https://github.com/qiniu/qshell/blob/master/docs/qdownload2.md)。
使用该命令行前需要先进行登陆,登陆命令参考本教程第二部分安装操作步骤。
## 批量下载空间内全部文件 [#批量下载空间内全部文件]
1. 执行命令:
```bash
qshell qdownload2 --dest-dir=本地文件夹相对路径或者绝对路径 --bucket=空间名称
```
> 注意:配置文件参数在当前 cmd 命令行所在目录下时,可以直接输入文件名。如果非本目录下,需要输入完整路径,如 `qshell qdownload2 --dest-dir=E:\qiniu-data\ --bucket=空间名称`。
2. 运行结果,保存路径不变的情况下会进行增量下载,详细日志信息可以在输出的 log 路径查看。
## 批量下载空间内指定目录的文件 [#批量下载空间内指定目录的文件]
比如想要下载 image 目录的文件, 通过设置 prefix 内容即可
```bash
qshell qdownload2 --dest-dir=本地文件夹相对路径或者绝对路径 --bucket=空间名称 --prefix="image/"
```
# 批量删除 [#批量删除]
`文件一旦删除,无法恢复,请务必慎重处理!`
`batchdelete` 用于批量下删除空间内的文件,需要先获对应的文件列表,然后基于列表删除,[batchdelete**说明文档**](https://github.com/qiniu/qshell/blob/master/docs/batchdelete.md)。
`使用该命令行前需要先进行登陆,登陆命令参考本教程第二部分安装操作步骤。`
## 批量删除空间内全部文件 [#批量删除空间内全部文件]
1. 执行命令,获取空间内全部文件:
```bash
qshell listbucket2 空间名称 --show-fields Key -o todelete.txt
```
2. 等待1执行完毕后,基于1的todelete.txt做文件批量删除
```bash
qshell batchdelete 空间名称 -i todelete.txt
```
## 批量删除指定时间内的文件 [#批量删除指定时间内的文件]
比如想要删除2024年6月之前上传的文件
1. 执行命令,获取指定时间内的文件列表名称:
```bash
qshell listbucket2 空间名称 --show-fields Key --start 2010-01-01 --end 2024-05-31 -o todelete.txt
```
2. 等待1执行完毕后,基于1的todelete.txt做文件批量删除
```bash
qshell batchdelete 空间名称 -i todelete.txt
```
# 批量修改历史文件生成周期 [#批量修改历史文件生成周期]
`空间的生命周期删除后,删除后上传的文件没有生命周期,但是删除前上传的生命周期默认不会消失!`
`batchchlifecycle` 用于批量修改文件生命周期,需要先获对应的文件列表,然后基于列表批量修改,[batchchlifecycle**说明文档**](https://github.com/qiniu/qshell/blob/master/docs/batchchlifecycle.md)。
`使用该命令行前需要先进行登陆,登陆命令参考本教程第二部分安装操作步骤。`
\--to-ia-after-days:指定文件上传后并在设置的时间后转换到 低频存储类型;值范围为 -1 或者大于 0,设置为 -1 表示取消已设置的转 低频存储 的生命周期规则,单位:天【可选】
\--to-archive-ir-after-days:指定文件上传后并在设置的时间后转换到 归档直读存储类型;值范围为 -1 或者大于 0,设置为 -1 表示取消已设置的转 归档直读存储 的生命周期规则,单位:天【可选】
\--to-archive-after-days:指定文件上传后并在设置的时间后转换到 归档存储类型;值范围为 -1 或者大于 0,设置为 -1 表示取消已设置的转 归档存储 的生命周期规则,单位:天【可选】
\--to-deep-archive-after-days:指定文件上传后并在设置的时间后转换到 深度归档存储类型;值范围为 -1 或者大于 0,设置为 -1 表示取消已设置的转 深度归档存储 的生命周期规则,单位:天【可选】
\--delete-after-days:指定文件上传后并在设置的时间后进行 过期删除,删除后不可恢复;值范围为 -1 或者大于 0,设置为 -1 表示取消已设置的 过期删除 的生命周期规则,单位:天【可选】
## 取消历史文件全部的生成周期 [#取消历史文件全部的生成周期]
1. 执行命令,获取空间内全部文件:
```bash
qshell listbucket2 空间名称 --show-fields Key -o releaselifecycle.txt
```
2. 等待1执行完毕后,基于1的releaselifecycle.txt,批量取消生命周期
```bash
qshell batchchlifecycle if-pbl -i releaselifecycle.txt
--to-ia-after-days -1 \
--to-archive-ir-after-days -1 \
--to-archive-after-days -1 \
--to-deep-archive-after-days -1 \
--delete-after-days -1
```
## 对历史文件设置生成周期,30天后自动删除 [#对历史文件设置生成周期30天后自动删除]
1. 执行命令,获取空间内全部文件:
```bash
qshell listbucket2 空间名称 --show-fields Key -o releaselifecycle.txt
```
2. 等待1执行完毕后,基于1的releaselifecycle.txt做文件批量修改生命周期
```bash
qshell batchchlifecycle 空间名称 -i releaselifecycle.txt --delete-after-days 30
```
# 批量解冻归档文件 [#批量解冻归档文件]
1. 执行命令,获取空间内的归档文件列表
`qshell listbucket2 空间名称 --file-types 2 --show-fields Key -o releaselifecycle.txt`
2. 等待1执行完毕后,基于1的releaselifecycle.txt做归档文件批量解冻操作,比如解冻5天
`qshell batchrestorear 空间名称 5 -i releaselifecycle.txt`
# 批量解冻深度归档文件 [#批量解冻深度归档文件]
1. 执行命令,获取空间内的深度归档文件列表
`qshell listbucket2 空间名称 --file-types 3 --show-fields Key -o releaselifecycle.txt`
2. 等待1执行完毕后,基于1的releaselifecycle.txt做深度归档文件批量解冻操作,比如解冻5天
`qshell batchrestorear 空间名称 5 -i releaselifecycle.txt`
# 批量修改存储类型 [#批量修改存储类型]
1. 归档或深度归档存储文件,转换前需要先做解冻操作,解冻完成后才能进行存储类型修改,解冻参考上述【批量解冻深度归档文件】和【批量解冻归档文件】步骤
2. 标准存储、归档直读、低频存储和智能分层存储类型可以直接转换
3. 转换命令示例
A、先列举出需要转换的文件名列表,参考上述【文件列表】步骤
B、在 列表存放的本地文件名.txt 文件中添加目标存储类型,0:标准存储 1:低频存储 2:归档存储 3:深度归档 4:归档直读存储 5:智能分层存储;处理命令示例
`awk '{print $1"\t0"}' 列表存放的本地文件名.txt > 新的列表存放的本地文件名.txt`
C、批量修改存储类型
`qshell batchchtype 空间名 新的列表存放的本地文件名.txt`
# 批量修改生命周期 (/faq/kodo/tools-common-problems/12969-kodo-batch-alt-lifecycle)
最近更新时间: 2026-08-18 11:55:55
## 关于生命周期 [#关于生命周期]
空间的生命周期删除后,删除后上传的文件没有生命周期,但是删除前上传的生命周期默认不会消失!
## 取消/修改文件生命周期 [#取消修改文件生命周期]
七牛提供如下解决方案:
* 七牛工具 [qshell](/products/kodo/0-qshell) 进行批量修改,`适用于大量文件、没有目录结构文件`,优先推荐使用qshell,,windows使用参考这里,[windows安装使用教程](/faq/kodo/tools-common-problems/12960-windows-environment-installation-qshell-tutorial#2)
* [官方服务端SDK](/sdk-tools/sdk#official-sdk),使用SDK方法和API修改文件生命周期,不推荐
## 使用经验 [#使用经验]
### qshell 修改生命周期 [#qshell-修改生命周期]
`使用batchchlifecycle 和 listbucket2 前,必须先登录账号,使用qshell account 进行登录,如果已经登陆过,那么无需重复登录`。ak sk 空间名称如果不了解是什么,可以阅读[常见的关键参数](/faq/kodo/7450-the-third-party-plug-in-key-parameters) , 想要获取指定的文件列表,可以参考[批量获取文件列表](/faq/kodo/basic-use-of/12958-kodo-batch-keylist),listbucket2的参数不同,就会获取不同的待修改的文件列表。
```bash
qshell account 您的ak 您的sk 账号邮箱(名称)
```
\--to-ia-after-days:指定文件上传后并在设置的时间后转换到 低频存储类型;值范围为 -1 或者大于 0,设置为 -1 表示取消已设置的转 低频存储 的生命周期规则,单位:天【可选】
\--to-archive-ir-after-days:指定文件上传后并在设置的时间后转换到 归档直读存储类型;值范围为 -1 或者大于 0,设置为 -1 表示取消已设置的转 归档直读存储 的生命周期规则,单位:天【可选】
\--to-archive-after-days:指定文件上传后并在设置的时间后转换到 归档存储类型;值范围为 -1 或者大于 0,设置为 -1 表示取消已设置的转 归档存储 的生命周期规则,单位:天【可选】
\--to-deep-archive-after-days:指定文件上传后并在设置的时间后转换到 深度归档存储类型;值范围为 -1 或者大于 0,设置为 -1 表示取消已设置的转 深度归档存储 的生命周期规则,单位:天【可选】
\--delete-after-days:指定文件上传后并在设置的时间后进行 过期删除,删除后不可恢复;值范围为 -1 或者大于 0,设置为 -1 表示取消已设置的 过期删除 的生命周期规则,单位:天【可选】
### 取消历史文件全部的生成周期 [#取消历史文件全部的生成周期]
1. 执行命令,获取空间内全部文件:
```bash
qshell listbucket2 空间名称 --show-fields Key -o releaselifecycle.txt
```
2. 等待1执行完毕后,基于1的releaselifecycle.txt,批量取消生命周期
```bash
qshell batchchlifecycle if-pbl -i releaselifecycle.txt
--to-ia-after-days -1 \
--to-archive-ir-after-days -1 \
--to-archive-after-days -1 \
--to-deep-archive-after-days -1 \
--delete-after-days -1
```
### 对历史文件设置生成周期,30天后自动删除,注意,文件一旦删除,不可恢复! [#对历史文件设置生成周期30天后自动删除注意文件一旦删除不可恢复]
1. 执行命令,获取空间内全部文件:
```bash
qshell listbucket2 空间名称 --show-fields Key -o releaselifecycle.txt
```
2. 等待1执行完毕后,基于1的releaselifecycle.txt做文件批量修改生命周期
```bash
qshell batchchlifecycle if-pbl -i releaselifecycle.txt --delete-after-days 30
```
### SDK删除 [#sdk删除]
以java为列:
参考
1:获取文件名称
/products/kodo#rs-list
2:基于list获取的文件名称,调用API进行处理
/products/kodo/rs/8062-modify-object-life-cycle
其他SDK类似,可参考[官方服务端SDK](/sdk-tools/sdk#official-sdk)
# 镜像存储与qshell工具相结合的数据迁移方案 (/faq/kodo/tools-common-problems/1345-the-combination-of-image-storage-and-qrsync-tool-data-migration-plan)
最近更新时间: 2025-04-09 15:28:15
>
传统的数据迁移方案是:关掉网站原来的数据上传通道,所有数据变成只读,然后将所有数据上传到新的存储节点,再将上传入口改为新的存储节点,之后开放网站的上传功能。这样带来的问题是,数据迁移过程中,用户长时间不能进行上传操作,用户体验非常差。如何解决这个问题呢?
七牛云提供一套结合镜像存储和[qshell工具](/products/kodo/0-qshell)的数据迁移方案,这套方案很好地绕开了传统迁移方案所带来的问题。先通过七牛的数据上传工具 qshell 将大量冷数据传到七牛平台上,并将数据访问地址切换成七牛的域名。由于用户生成的大量热数据还在自己的平台上,为了不出现数据丢失的情况,保证用户访问的流畅性,那就选用七牛的镜像存储服务吧。
七牛的镜像存储为整个数据迁移过程提供良好的过渡支持作用。当用户访问的数据不在七牛平台上时,镜像存储服务将回客户源站抓取数据,并保存在七牛平台上。故此,镜像存储对每个资源只需回源一次,后续访问的时候就不再回源了。另外,镜像存储与 qshell 数据同步工具一起使用,可以很好地将你的网站数据在无需中断服务的情况下迁移到七牛云。下面介绍一下具体数据迁移的步骤:
**假设源站所有的图片,放在一个叫 img.example.com 子域里。那么迁移的方式如下:**
1. 在七牛上建立一个镜像 bucket,设定源站为 img.example.com。假设镜像 bucket 是 example-img,镜像 bucket 对应的域名为 example-img.qiniudn.com。
2. 将所有对外使用的图片的域名改为 example-img.qiniudn.com。
3. 如果网站数据是 UGC(用户产生内容)的,调整上传流程,传到七牛的镜像 bucket。这样源站就变成只读。
4. 使用 qshell 同步工具将历史数据全部同步到七牛的镜像 bucket。
如此就完成整个迁移过程。此时 img.example.com 这个源站就可以废弃不用了。
你可能会问:如果我希望保留 img.example.com 这个对外的域名,而不是用 example-img.qiniudn.com,可以么?答案是肯定的,不过会相对麻烦点,额外的操作如下:
1. 您的源站需要指定为另一个域名(不能是 img.example.com 了),比如是 img-src.example.com,或者直接用 IP。
2. 将 img.example.com 作为自定义域名绑定到七牛的镜像 bucket,此时 img.example.com上没有进行解析操作。自定义域名的生效时间最长为12小时左右。
3. 测试镜像存储如你所愿正常工作后,将 img.example.com CNAME 到返回的地址上。这一步务必小心不要做错,因为这之后你的网站就通过七牛的镜像存储进行服务了。出于谨慎,建议先在本地修改 hosts 文件,将 img.example.com 指向 example-img.qiniudn.com 的 IP 地址进行测试。
# 使用 qshell 同步目录 (/faq/kodo/tools-common-problems/1685-using-qshell-synchronize-directories)
最近更新时间: 2018-12-06 15:26:25
# 简介 [#简介]
该文档主要介绍使用 qshell 如何同步本地文件目录到存储空间并体现出层级结构。
# 环境 [#环境]
系统介绍:Linux( ubuntu16.04 )
要上传的资源目录:

# 配置 [#配置]
## 第一步:工具下载 [#第一步工具下载]
命令行工具 qshell [传送门](/products/kodo/0-qshell)
本例下载工具版本如下:
| 文件名 | 描述 |
| ------------------ | ----------- |
| qshell\_linux\_x64 | Linux 64位系统 |
文件下载后重命名并赋予qshell执行权限,命令行操作如下:
```
$ mv qshell-linux-x64 qshell
$ chmod +x qshell
```
## 第二步:配置环境变量 [#第二步配置环境变量]
本例使用最简便的方法,直接放到环境变量。命令行操作如下:
```
$ sudo mv qshell /usr/bin/
```
操作完成后再重新开启一个终端既可运行 qshell,如下:
```
$ qshell
Use help or help [cmd1 [cmd2 [cmd3 ...]]] to see supported commands.
```
## 第三步:配置账户 [#第三步配置账户]
需要鉴权的命令都需要依赖七牛账号下的 AccessKey 和 SecretKey 。[传送门](https://portal.qiniu.com/user/key)
```
$ qshell account
```
操作完成后可以使用命令 `qshell account` 查看当前用户设置的 AccessKey 和 SecretKey 。
此处操作后在当前用户主目录中生成 qshell 目录:
```
$ ls ~/.qshell/
account.json
```
## 第四步:编写同步目录文件 [#第四步编写同步目录文件]
在上文提到的 qshell 目录中创建配置文件,文件内容如下:
```
$ cat upload.conf
{
"src_dir" : "/home/boponik/XBOX",
"bucket" : "xbox"
}
```
注意:
如果想要忽略本地文件的相对路径,比如本地存在一些层级;
但是层级里面的文件和外面的文件名称和内容都相同的情况下,为了避免重复上传不需要的文件,可以使用忽略本地文件的相对路径的方法。
则配置文件为:
```
$ cat upload.conf
{
"src_dir" : "/home/boponik/XBOX",
"ignore_dir" : true,
"bucket" : "xbox"
}
```
## 第五步:同步资源 [#第五步同步资源]
详细参数说明:[https://github.com/qiniu/qshell/blob/master/docs/qupload.md](https://github.com/qiniu/qshell/blob/master/docs/qupload.md)
```
qshell qupload [flags]
```
### 同步资源 [#同步资源]

### 查看同步日志 [#查看同步日志]

### 控制台查看资源 [#控制台查看资源]
到七牛云控制台进入空间 xbox

# 视频教程--命令行工具使用 (/faq/kodo/tools-common-problems/3858-video-of-how-to-use-qrs-tools)
最近更新时间: 2021-02-22 17:05:28
### qshell 工具使用教程 [#qshell-工具使用教程]
[qshell mac & linux](https://dn-odum9helk.qbox.me/spjc/7.mp4)
[qshell windows](https://dn-odum9helk.qbox.me/spjc/qshell-win.mp4)
### qrsctl 工具使用教程 [#qrsctl-工具使用教程]
[qrsctl mac & linux](https://dn-odum9helk.qbox.me/spjc/avthumb/qrsctl.mov.mp4)
[qrsctl windows](https://dn-odum9helk.qbox.me/spjc/qrsctl-win.mp4)
### qfetch 工具使用教程 [#qfetch-工具使用教程]
[qfetch mac & linux](https://dn-odum9helk.qbox.me/spjc/avthumb/qfetch.mov.mp4)
# 批量上传 (/faq/kodo/upload-download-problem/12950-kodo-batch-upload)
最近更新时间: 2026-05-26 13:55:51
# 关于上传 [#关于上传]
目前存储控制台不支持批量上传文件,存储这边也不支持上传压缩包在空间内解压;上传API都是单文件上传的API,每个API一次只能上传1个文件,如果需要批量上传文件到存储空间,只能使用工具或者SDK才可以
## 七牛提供如下解决方案: [#七牛提供如下解决方案]
* 服务端,在上传的业务逻辑里加个循环,或者开启多线程、多协程实现并发上传
* 客户端,使用多线程或多协程的方式,发送多个上传请求,每个请求各自上传各自的文件
### 服务端SDK [#服务端sdk]
七牛提供的SDK 默认都是使用单API上传文件,如果需要并发,建议在此基础上,创建线程池管理每个上传,服务端SDK可以参考[官方SDK](/sdk-tools/sdk#official-sdk)
## 批量上传工具 [#批量上传工具]
快速上手的工具推荐下面两个
* [图形界面化工具](/products/kodo/1-kodo-browser),可拖拽本地目录上传,适合少量文件上传,文件量过多不建议使用
* [命令行工具](/products/kodo/0-qshell),利用qshell的qupload或者qupload2命令批量上传,优先推荐使用qupload2上传
使用quload2前,必须先登录账号,使用qshell account 进行登录,如果已经登陆过,那么无需重复登录。ak sk 空间名称如果不了解是什么,可以阅读[常见的关键参数](/faq/kodo/7450-the-third-party-plug-in-key-parameters)
```bash
qshell account 您的ak 您的sk 空间名称
qshell qupload2 --src-dir=本地文件夹相对路径或者绝对路径 --bucket=空间名称
```
### 使用经验 [#使用经验]
由于qshell是一个脚本命令行工具,所以需要在cmd或者终端中运行,mac与linux系统会经常使用到终端,下载合适版本到本地解压,直接chmod +x qshell 即可执行命令行。
`但是如果您需要使用windows操作系统的话,可能您对cmd不是那么熟悉,推荐参考这里`
[**windows环境下安装qshell教程**](/faq/kodo/tools-common-problems/12960-windows-environment-installation-qshell-tutorial#2)
# 如何上传base64编码图片到七牛云 (/faq/kodo/upload-download-problem/1326-how-to-upload-photos-to-seven-niuyun-base64-code)
最近更新时间: 2023-05-08 10:15:37
## 接口说明 [#接口说明]
POST /putb64/\/key/\/mimeType/\/crc32/\/x:user-var/\
Host: upload.qiniup.com
Authorization: UpToken \
Content-Type: application/octet-stream
\
| 参数名称 | 必填 | 说明 |
| -------------------------- | -- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `/<Fsize>` | 是 | 文件大小。支持传入 -1 表示文件大小以 http request body 为准。 |
| `/<EncodedKey>` | 否 | 如果没有指定则:如果 uptoken.SaveKey 存在则基于 SaveKey 生产 key,否则用 hash 值作 key。EncodedKey 需要经过 base64 编码。具体可以参照:[URL 安全的 Base64 编码](/products/kodo/development-guidelines/0-appendix#urlsafe-base64)。 |
| `/<EncodedMimeType>` | 否 | 文件的 MIME 类型,默认是 application/octet-stream。EncodedMimeType 需要经过 base64 编码。具体可以参照:[URL 安全的 Base64 编码](/products/kodo/development-guidelines/0-appendix#urlsafe-base64)。 |
| `/<Crc32>` | 否 | 文件内容的 crc32 校验值,不指定则不进行校验。 |
| `Host` | | upload.qiniup.com(华东区域加速上传域名) ,不同区域的http 和 https 域名详见[不同存储区域对应的上传域名](/products/kodo/2-region-endpoint-fq) |
| `UpToken` | 是 | 上传凭证,需要自行使用七牛算法单独构造生成,具体参考文档[上传凭证](/products/kodo/development-guidelines/security/2-upload-token) |
返回包:
200 OK \{
hash: \
}
### 通过javascript方式上传 [#通过javascript方式上传]
javascript代码:
function putb64()\{
var pic = "填写你的base64后的字符串";
var url = "[http://upload.qiniup.com/putb64/20264](http://upload.qiniup.com/putb64/20264)"; //非华东空间需要根据注意事项 1 修改上传域名
var xhr = new XMLHttpRequest();
xhr.onreadystatechange=function()\{
if (xhr.readyState==4)\{
document.getElementById("myDiv").innerHTML=xhr.responseText;
}
}
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type", "application/octet-stream");
xhr.setRequestHeader("Authorization", "UpToken 填写你从服务端获取的上传token");
xhr.send(pic);
}
**注意事项:**
* upload.qiniup.com 上传域名适用于华东空间。华北空间使用 upload-z1.qiniup.com,华南空间使用 upload-z2.qiniup.com,北美空间使用 upload-na0.qiniup.com。
* `var url = "http://upload.qiniup.com/putb64/20264";`这里的 20264 是图片没经过 base64 处理的原图字节大小。
* `xhr.setRequestHeader("Authorization", "UpToken 填写你从服务端获取的上传token");`这里的 UpToken 与后面的字符串保留一个空格。后面跟上服务端请求的 token 字符串。
* 获取文件大小的时候,切记要通过文件流的方式获取。而不是通过图片标签然后转换后获取。
* `var url = "http://upload.qiniup.com/putb64/20264";`中可以扩展为以下方式:`http://upload.qiniup.com/putb64/Fsize/key/EncodedKey/mimeType/EncodedMimeType/x:user-var/EncodedUserVarVal`。
举例:
上传后并指定自定义的 key:`http://upload.qiniup.com/putb64/12345/key/usxxeigng=`
### 通过java后台方式上传 [#通过java后台方式上传]
import java.io.File;
import java.io.FileInputStream;
import com.qiniu.util.*;
import okhttp3.*;
public class put64 \{
String ak = "";
String sk = ""; // 密钥配置
Auth auth = Auth.create(ak, sk); // TODO Auto-generated constructor stub
String bucketname = ""; //空间名
String key = ""; //上传的图片名
public String getUpToken() \{
return auth.uploadToken(bucketname, null, 3600, new StringMap().put("insertOnly", 1));
}
public void put64image() throws Exception \{
String file = "D:\Documents\Pictures\1.png";//图片路径
FileInputStream fis = null;
int l = (int) (new File(file).length());
byte\[] src = new byte\[l];
fis = new FileInputStream(new File(file));
fis.read(src);
String file64 = Base64.encodeToString(src, 0);
String url = "[http://upload.qiniup.com/putb64/](http://upload.qiniup.com/putb64/)" + l+"/key/"+ UrlSafeBase64.encodeToString(key);
//非华东空间需要根据注意事项 1 修改上传域名
RequestBody rb = RequestBody.create(null, file64);
Request request = new Request.Builder().
url(url).
addHeader("Content-Type", "application/octet-stream")
.addHeader("Authorization", "UpToken " + getUpToken())
.post(rb).build();
System.out.println(request.headers());
OkHttpClient client = new OkHttpClient();
okhttp3.Response response = client.newCall(request).execute();
System.out.println(response);
}
public static void main(String\[] args) throws Exception \{
new put64().put64image();
}
}
demo:
[http://dn-odum9helk.qbox.me/base64-demo.html](http://dn-odum9helk.qbox.me/base64-demo.html)
# 上传 401 错误码 (/faq/kodo/upload-download-problem/1330-upload-error-code-401)
最近更新时间: 2025-04-10 15:38:53
## 一、报错:`{"error":"expired token"},{“error”:”token out of date”}` [#一报错errorexpired-tokenerrortoken-out-of-date]
### 处理方法: [#处理方法]
1、将token的有效期设置的长一些。对于比较大的文件,可以适当加长有效期(默认是3600秒)
2、看下自己的服务器时间是否是联网时间。如果时间不准,导致签名后的结果可能已经是过期的了
3、建议客户每次上传都重新请求一次上传token。或者设置的时间长些
## 二、报错:`{"error":"bad token","reqid":"t1wAAHuwANZHl9YT","details":["UP:4/401"],"code":401}` [#二报错errorbad-tokenreqidt1waahuwanzhl9ytdetailsup4401code401]
### 处理方法: [#处理方法-1]
1、检查密钥(ak,sk复制黏贴有误)信息是否正确。
2、数字签名错误(签名方法是自己写的), 建议使用sdk中封装的方法。
3、检查上传参数,上传token由三部分组成(由冒号隔开),最后一段,用base64解码,可以看到你的上传策略中的参数,如果参数有问题也会报401。
4、如果使用我们的sdk生成的token出现的问题,把token给我们(七牛后台耳机图标:提交工单), 如果是自己写的,请检查token生成的相关代码。
## 三、使用七牛sdk生成的token还是报错401 [#三使用七牛sdk生成的token还是报错401]
如果客户端获取到从服务端生成的token上传报错401,在确认ak和sk没有问题的情况下,则可以使用curl工具模拟上传一下。
curl -v -F 'key=1111' -F 'token=g8D\_Ledyo2iocGucAXSMEJqPFDly70AaHKCpQznb:5-oM4A7Hv8DTS1DVwBjE56x85sw=:eyJzY29wZSI6Inpob3VjaHVhbmciLCJkZWFkbGluZSI6MTQyNjc0NjY0Mn0=' -F 'file=/usr/local/test.txt' upload.qiniup.com
其中key为上传文件名,file为本地文件路径;
如果可以正常响应hash和key则说明token是没有问题,客户端获取token出现了问题。
# 七牛云上传下载操作指南 (/faq/kodo/upload-download-problem/1336-upload-download-instructions)
最近更新时间: 2022-02-17 12:06:53
# **上传方式** [#上传方式]
七牛云提供多种上传方式,包括命令行,及 11 种语言 SDK,都可以在我们的[七牛开发者中心](/faq/kodo/upload-download-problem/1336-upload-download-instructions)找到。
## **准备工作** [#准备工作]
在上传之前,你需要在 portal.qiniu.com 注册并激活成功,创建了一个 bucket,并且根据自己的情况将 bucket 设置为公开或者私有。
## **生成上传 token** [#生成上传-token]
为了安全起见,我们所有上传操作都是要有 token 的,各种 SDK 都有 token 生成函数。 生成 token 的必备要素:
* bucket,准备工作完成后已经创建了 bucket
* access key, secret key,我们的 SDK 验证都是通过这个进行验证,而不是账号密码,请到 portal 的账户设置中去查看
* 过期时间,各 SDK 默认是一小时的,您可以加长这个时间
* 上传策略,将 bucket,和过期时间放入上传策略的参数中,就可以生成最简单的策略,为了满足用户的不同需要具体策略还有很多配置,这里我们先不管。
根据上传策略,我们就可以利用 SDK 生成 token 了。从安全的角度考虑,我们不推荐在客户端直接用 access key 和 secret key 直接生成 token 的。您可以根据自己的情况,从我们的服务端 SDK 进行选择,来生成 token。
package util;
import com.qiniu.api.rs.\*;
import com.qiniu.api.config.Config;
import com.qiniu.api.auth.digest.Mac;
import com.qiniu.api.net.CallRet;
public class Qiniu \{
public static String uploadToken(String bucket, String accessKey, String secretKey)\{
PutPolicy upPolicy = new PutPolicy(bucket);
upPolicy.endUser = user;
upPolicy.callbackUrl = callbackUrl;
upPolicy.callbackBody = "key=$(key)\&hash=$(etag)\&width=$(imageInfo.width)\&height=$(imageInfo.height)\&user=$(endUser)\&size=$(fsize)\&mime=$(mimeType)";
String token = null;
Mac mac = new Mac(accessKey, secretKey);
try\{
token = upPolicy.token(mac);
}catch (Exception e)\{
e.printStackTrace();
}
return token;
}
}
## **开始上传** [#开始上传]
我们有两类上传 API,一种是简便的直接上传,另一种是加入断点续传及重传的 API,我们先从直传上手。如果没有任何报错,证明已经上传成功了。
PutPolicy putPolicy = new PutPolicy(bucketName);
Mac mac = new Mac(accessKey, secretKey);
String uptoken = putPolicy.token(mac);
String localFile = "test.png";
PutExtra extra = new PutExtra();
PutRet ret = IoApi.putFile(uptoken, key, localFile, extra);
## **浏览已经上传的文件** [#浏览已经上传的文件]
可以到 portal 中查看,或者使用列表 API 去下载,使用 stat API 去查看文件
## **如何实现客户服务器能够及时同步文件信息** [#如何实现客户服务器能够及时同步文件信息]
使用 callback, 或者 return url 的方式把文件信息通知到自己的服务器,因为七牛云讲究一个快字,所以如果用户上传到您那里,再从您那里上传到七牛就太慢了。所以我们提供了这样一种方式去同步信息,您只要按格式去填写关心的信息字段,生成 token 就好了,简单的说有 4 类字段
1. 文件信息字段
2. 文件内容信息字段,我们支持将图片文件的元信息传给您,比如宽,高
3. 自定义字段,上传时使用 x:custorm\_param 就可以传自己的字段。
4. 进行其他操作的预置字段,比如 endUser。
```
package util;
import com.qiniu.api.rs.*;
import com.qiniu.api.config.Config;
import com.qiniu.api.auth.digest.Mac;
import com.qiniu.api.net.CallRet;
public class Qiniu {
public static String uploadToken(String bucket, String user, String callbackUrl){
PutPolicy upPolicy = new PutPolicy(bucket);
upPolicy.endUser = user;
upPolicy.callbackUrl = callbackUrl;
upPolicy.callbackBody = "key=$(key)&hash=$(etag)&width=$(imageInfo.width)&height=$(imageInfo.height)&user=$(endUser)&size=$(fsize)&mime=$(mimeType)";
String token = null;
Mac mac = new Mac(Config.ACCESS_KEY, Config.SECRET_KEY);
try{
token = upPolicy.token(mac);
}catch (Exception e){
e.printStackTrace();
}
return token;
}
}
```
# **下载方式** [#下载方式]
## **公开下载** [#公开下载]
对于大部分空间公开用户来说,上传完后,通过通常的 http 直接访问就可以享受到我们的下载加速了。
具体可以参考:[公开资源下载](/products/kodo/development-guidelines/download-process/0-download-public)
## **私有下载** [#私有下载]
对于 bucket 内容不方便开放给所有用户的人来说,我们提供了下载鉴权机制。 生成一段时间内有效的下载 token , 用户可以下载在下载token有效期内的七牛文件资源。
具体可以参考:[私有资源下载](/products/kodo/development-guidelines/download-process/1-download-private)
## **批量下载** [#批量下载]
可以在 portal 上批量下载文件,但是需要在浏览器设置 **允许显示弹出式窗口**

点击上图中所示的浏览器拦截按钮,在弹窗中勾选 **始终允许显示弹出式窗口** 即可。

# 上传 403 错误码 (/faq/kodo/upload-download-problem/1348-upload-error-code-403)
最近更新时间: 2020-05-15 16:33:22
#### 1.putPolicy中bucket:key与上传方法中的key不同,报错: [#1putpolicy中bucketkey与上传方法中的key不同报错]
`{"error":"key doesn't match with scope"}`
Example:
java-sdk为例:
```
String token = auth.uploadToken("qiniu-java-demo", "test",3600,null,true);//(生成token代码)
Response r = uploadManager.put(file, "test.txt", token,null,null, true);//(上传代码段)
```
因为test和test.txt不匹配,所以报错。auth.uploadToken中指定的key和uploadManager.put中设置的key值不同导致403
#### 2.putPolicy中设置了limited mimeType,报错: [#2putpolicy中设置了limited-mimetype报错]
`{"error":"limited mimeType: this file type is forbidden to upload"}`
#### Example: [#example]
java-sdk:
```
String token = auth.uploadToken("qiniu-java-demo", "test",3600,new StringMap().put("mimeLimit", "image/*"),true);
Response r = uploadManager.put(file, "test.txt", token,null,null, true);
```
# 如何进行同名文件覆盖上传 (/faq/kodo/upload-download-problem/13491-overwrite-upload)
最近更新时间: 2026-07-15 17:46:11
1、控制台覆盖上传,参考文档[上传文件](/products/kodo/kodo-console-guide/file-management/0-upload-a-file)

2、api覆盖上传
上传token明确指定insertOnly: 0 和 bucket:key,并保持上传时传入的 key 与它完全一致就可以完成覆盖上传。

# 如何避免用户上传同名文件 (/faq/kodo/upload-download-problem/1365-how-to-avoid-the-users-to-upload-files-with-the-same-key)
最近更新时间: 2022-05-19 17:00:54
# 问题概述 [#问题概述]
## 标题: 如果避免用户上传同名文件呢(即相同key值的文件)? [#标题-如果避免用户上传同名文件呢即相同key值的文件]
以前自己做存储的时候,是自己计算文件 hash,上传时查询如果存在的就不保存了。
现在改用七牛做存储了,看七牛上传返回的有文件 hash,但是不知道七牛的是如何计算出来的。
有没有办法在上传之前就可以知道七牛的存储空间里有没有相同的 hash 已经存在了,这样就不用向七牛上传相同的文件了,还是仍然需要自己实现这种排重计算?
## 答: [#答]
上传到七牛云存储的时候,key 是可选的。如果你不指定 key,则自动以 hash 值作为 key,此时自动带了消重能力。两个用户用同样的上传姿势上传相同的文件,最终的 key 是一样的。
# 七牛回调及回调鉴权 (/faq/kodo/upload-download-problem/1409-seven-cattle-callback-and-callback-authentication)
最近更新时间: 2020-09-11 17:52:55
# 概述 [#概述]
客户上传文件到后,服务器会响应 200 状态码,响应内容包括 hash 和 key 。但是如果客户需要自定义响应内容,则可以通过设置回调来实现。
# 回调实现 [#回调实现]
客户端需要在上传 token 中设置 `callbackurl` 和 `callbody`
1、`callbackurl` 必须是公网上可正常进行 POST 请求并能正常响应的 url,并且业务服务器返回给的内容必须是 json 串.
这里给一个最简单的能响应200的php代码(获取 `callbackbody` 并打印一个字符串给客户端)
```
"test");
echo json_ encode($arr);
?>
```
2、`callbackbody` 是需要向业务服务器发送的回调内容,需使用的魔法变量或自定义变量来填充。
但是格式一定要正确,否则会报400格式错误.
例如 java 中正确的格式:
```
auth.uploadToken(bucket,key,3600,new StringMap()
.put("callbackUrl","callbackurl")
.put("callbackBody", "{"filename":$(fname),"filesize":$(fsize),"width":$(imageInfo.width)}") );
```
3、`callbodytype` 默认是 `application/x-www-form-urlencoded`, 也可在上传策略中设置为 `application/json`
# 回调鉴权 [#回调鉴权]
因为回调地址是公网可访问的,任何一台服务器都可以对其发起回调,如何确认回调是来自的呢?
在发起回调请求时会在请求头中带上 `Authorization` 字段,
```
Authorization:QBox iN7NgwM31j4-BZacMjPrOQBs34UG1maYCAQmhdCV:tDK-3f5xF3SJYEAwsll5g=
```
其中 QBox 为固定值,iN7Ngw\...dCV 为用户的 Accesskey,tDK-3f...5g= 为签名结果 encoded\_data。
业务服务器可以通过多种方法来对其进行验证, 例如如下面的代码php来进行验证:
```
verifyCallback($contentType, $authorization, $url, $callbackBody);
if ($isQiniuCallback) {
$resp = array('ret' => 'success');
} else {
$resp = array('ret' => 'failed');
}
echo json_encode($resp);
```
# 回调常见错误 [#回调常见错误]
## 1、400错误 [#1400错误]
这个是上传时表单格式错误,例如 `callbackbody` 设置的格式有问题等
## 2、579错误 [#2579错误]
1、上传成功回调失败,可以自己先用curl来验证callbackurl是否能成功响应200
```
curl -X POST -d "name=123.jpg" http://url
```
2、业务服务器返回给的 body 不是合法的 json 串
报错信息:`{"error":"unexcepted response"}`
这时可通过抓包,获取返回给客户端的 body ,通过 [http://jsonlint.com](http://jsonlint.com) 验证是否回调的 body 为合法的 json 串
3、业务服务器拒绝的回调请求
解决方案是配置允许的回调UA的访问。 回调UA:qiniu-callback/1.0
# 上传过程中,在使用魔法变量的情况下验证 app callback token (/faq/kodo/upload-download-problem/1428-upload-process-in-the-case-of-using-magic-variable-authentication-app-callback-token)
最近更新时间: 2020-05-15 16:33:22
上传过程中,在使用[魔法变量](/products/kodo/development-guidelines/upload-types/0-vars#1)的情况下验证 [callback token](/products/kodo/development-guidelines/upload-types/5-callback) ,此时签名的内容应该以魔法变量被替换前为准还是以魔法变量被替换后为准?
七牛的上传服务器 callback 客户的 app 服务器时会带有一个 `hmac_sha1` 签名,签名是针对最终请求来做的。
所以对于上面的问题,七牛的上传服务器先替换魔法变量的值,再对 callback 请求做签名。
可以参考:
* [上传策略](/products/kodo/development-guidelines/security/1-put-policy)
# webp 和 webm 格式图片上传后无法正常显示 (/faq/kodo/upload-download-problem/1434-webp-and-webm-format-to-upload-file-can-t-display-properly)
最近更新时间: 2020-05-15 16:33:22
如果webp和webm格式文件上传后无法正常显示,可能是由以下原因导致:
```
由于 webp 和 webm 都是由 Google 提出的图片和视频的编码格式,所以在 Chrome 浏览器上能得到很好的支持,其他浏览器不一定支持。
```
如果Chrome浏览器无法正常打开webp或者webm文件,可以去七牛开发者平台[https://portal.qiniu.com](https://portal.qiniu.com/)
通过前缀搜索资源,检查资源的mimeType,若不正确则手动将其修改为`image/webp`或者`video/webm`
# 从生成的 token 解析上传策略 (/faq/kodo/upload-download-problem/1488-from-the-generated-token-parsing-upload-strategy)
最近更新时间: 2020-05-15 16:33:22
**token 示例:**
```
JmTcjiVWsoRxql3OA2krgoW-Fu9bzBZZGCd2lXem:hnuOE5rHuQjyfTIBTH06IaFY0ME=:eyJzY29wZSI6ImF0ZXN0IiwiZGVhZGxpbmUiOjE1MDY5Mzg5NDF9
```
**token 字符串分为三段,以“:”分割,base64解码第二个”:“后的字符串,可以查看设置的上传策略,如下:**
```
base64 -D <<< eyJzY29wZSI6ImF0ZXN0IiwiZGVhZGxpbmUiOjE1MDY5Mzg5NDF9
{"scope":"atest","deadline":1506938941}
```
# 七牛上传 crc32 校检说明与用法 (/faq/kodo/upload-download-problem/1593-seven-cattle-upload-crc32-check-and-usage)
最近更新时间: 2020-05-15 16:33:22
首先关于 crc32 的相关概念可以参考这个文章详细介绍:[CRC32](https://en.wikipedia.org/wiki/Cyclic_redundancy_check)
七牛这边上传设置 crc32 之后,上传前会先计算本地文件的 crc32,然后和上传到七牛后文件的 crc32 进行对比,如果两者不同的话就不会保存并且会返回 406:上传的数据 CRC32 校验错误。
我们不同的 SDK 用法都是类似的,就是在上传的时候设置 checkCrc 参数为 true 就可以了。
比如 java sdk 里面上传的 put 方法里面将 checkCrc 设置为 true 就可以了:
public Response put(XXXX data, String key, String token, StringMap params, String mime, **boolean checkCrc** ) throws QiniuException
具体可以参考七牛这边关于设定 crc32 之后计算 crc32 以及参数传递的方法: [https://github.com/qiniu/java-sdk/blob/43713ccf93cf17fd21ddd919434e1df96d291ead/src/main/java/com/qiniu/storage/FormUploader.java#L78-L99](https://github.com/qiniu/java-sdk/blob/43713ccf93cf17fd21ddd919434e1df96d291ead/src/main/java/com/qiniu/storage/FormUploader.java#L78-L99)
private void buildParams() throws QiniuException \{
params.put("token", token);
if (key == null) \{
fileName = "filename";
} else \{
fileName = key;
params.put("key", key);
}
if (checkCrc) \{
long crc32 = 0;
if (file != null) \{
try \{
crc32 = Crc32.file(file);
} catch (IOException e) \{
throw new QiniuException(e);
}
} else \{
crc32 = Crc32.bytes(data);
}
params.put("crc32", "" + crc32);
}
}
下面是关于 java sdk 的简单的 demo:
public class UploadWithCrc32 \{
String ACCESS\_KEY = "AK";
String SECRET\_KEY = "SK";
Auth auth = Auth.create(ACCESS\_KEY, SECRET\_KEY);
UploadManager uploadManager = new UploadManager();
// 设置指定上传策略
public String getUpToken()\{
return auth.uploadToken("phpdemo", null, 3600,null);
}
public void upload() throws IOException\{
String FilePath = "/Users/dxy/sync/aaa.jpg";
try \{
//设置验证crc32
Response res = uploadManager.put(FilePath, null, getUpToken(), null, null, true);
System.out.println(res.bodyString());
} catch (QiniuException e) \{
Response r = e.response;
// 请求失败时简单状态信息
System.out.println(r.toString());
}
}
public static void main(String args\[]) throws IOException\{
// //可以根据七牛的计算crc32算法打印出crc32的值
// File f=new File("/Users/dxy/sync/aaa.jpg");
// System.out.println(Crc32.file(f));
new UploadWithCrc32().upload();
}
# 上传下载及管理凭证的生命周期 (/faq/kodo/upload-download-problem/1598-upload-the-token-download-token-and-token-of-the-life-cycle-management)
最近更新时间: 2020-05-15 16:33:22
七牛目前有三种凭证:[上传凭证](/products/kodo/development-guidelines/security/2-upload-token)、[下载凭证](/products/kodo/development-guidelines/security/0-download-token)、[管理凭证](/products/kodo/development-guidelines/security/access-token)。
其中:
* 上传凭证和下载凭证的算法均包含过期时间,过期时间在签名时指定。
* 管理凭证是根据请求内容签出的,没有过期时间。
* 服务端验证过期时间使用的是[Unix时间戳](/products/kodo/3-u#unixtime)。如果出现 token 意外超时,优先确认是不是过期时间使用了 Unix 时间戳造成的。
# 上传慢如何诊断? (/faq/kodo/upload-download-problem/2516-slowly-upload)
最近更新时间: 2022-11-29 15:45:24
# 解决思路 [#解决思路]
为了可以快速定位问题,需要用提供有问题用户的网络信息或截图 通过 [提交工单](https://support.qiniu.com/question) 发给我们 来帮助排查。
# 解决方法 [#解决方法]
需要提供问题用户提供如下内容
### 1. 上传下载带宽信息 [#1-上传下载带宽信息]
打开 [本地网络带宽测试](http://www.bandwidthplace.com/) 点击 start 获取
### 2. 用户本地网络信息 [#2-用户本地网络信息]
打开 [问题诊断系统](http://ping.huatuo.qq.com) 稍等片刻后会显示诊断结果
### 3. 用户上传速度检测 [#3-用户上传速度检测]
打开 [七牛云上传速度检测](https://kodo-utils.qiniu.com/upload-test) 根据不同的上传空间区域选择指定的区域测试
注:
* 服务端上传测试 `up`
* 客户端上传测试 `upload`
* https 上传测试 `qiniup.com` 的域名
例如:上传空间为华东,协议为https,点击开始测试

# 上传报400:incorrect region, please use xxxx.qiniu.com (/faq/kodo/upload-download-problem/3742-upload-to-400:-incorrect-region-both-please-use-xxxx-qiniu-com)
最近更新时间: 2020-05-15 16:33:22
上传的时候,如果遇到类似400:incorrect region, please use xxx.qiniu.com的错误,说明是上传域名和空间所在的区域不匹配,多发生在旧的sdk、工具和插件上。后面的 xxx.qiniu.com是正确的上传域名。
存储区域和上传域名的对应关系见[/products/kodo/2-region-endpoint-fq](/products/kodo/2-region-endpoint-fq)
出现这种情况,如果是使用的第三方插件,需要更新插件或询问第三方开发人员;如果是使用sdk,可以更新成最新的sdk,如果是使用七牛提供的工具,需要你更新为最新版本的qshell工具
# base64 上传自定义回调 (/faq/kodo/upload-download-problem/3821-base64-upload-custom-callback)
最近更新时间: 2020-05-15 16:33:22
#### Base64 上传自定义回调数据 [#base64-上传自定义回调数据]
Base64上传详见[/faq/kodo/upload-download-problem/1326-how-to-upload-photos-to-seven-niuyun-base64-code](/faq/kodo/upload-download-problem/1326-how-to-upload-photos-to-seven-niuyun-base64-code)。
这里讲一下x:user-var这个参数的使用
首先需要在生成上传token时指定 saveKey 或者 callbackBody 这类支持自定义变量或者魔法变量的参数,一般通过服务器端生成。以在生成token是指定上传策略时,指定saveKey:name=$(x:extension)。
生成的token为
FMVCRs2-LO1ivRNi4l7mEZE6ZDvPv-519D12kZCO:RbsOpgGA6p\_aJlXHYOvAuBt2fvc=:eyJzYXZlS2V5IjoibmFtZVx1MDAzZCQoeDpleHRlbnNpb24pIiwic2NvcGUiOiJodG1sIiwiZGVhZGxpbmUiOjE0OTg0NDE1NDl9\
#### 通过base64解码上传策略部分 [#通过base64解码上传策略部分]
eyJzYXZlS2V5IjoibmFtZVx1MDAzZCQoeDpleHRlbnNpb24pIiwic2NvcGUiOiJodG1sIiwiZGVhZGxpbmUiOjE0OTg0NDE1NDl9\
\{"saveKey":"name\u003d$(x:extension)","scope":"html","deadline":1498441549}
#### 在上传url中指定x:extension参数 [#在上传url中指定xextension参数]
上传url: [http://up-z2.qiniup.com/putb64/-1/x:extension/dGVzdA==](http://up-z2.qiniup.com/putb64/-1/x:extension/dGVzdA==)

# 上传失败常见状态码 (/faq/kodo/upload-download-problem/3881-upload-the-common-failure-status-code-and-solve-method)
最近更新时间: 2026-04-30 17:34:33
在上传失败返回信息中,可以看到 http 状态码,几种常见错误如下:
| 状态码 | 说明 |
| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 400 | 请求报文格式错误。
`incorrect region` 表示上传域名与上传空间的区域不符,此时需要升级 SDK 版本。 |
| 401 | 鉴权失败。
`token not specified` 表示上传请求中没有带 token ,可以抓包验证后排查代码逻辑。
`bad token` 表示 token 错误,说明生成 token 的算法有问题,建议直接使用七牛的服务端 SDK 生成 token。
`token out of date` 表示 token 过期,推荐 token 过期时间设置为 3600 秒(1 小时),如果是客户端上传,建议每次上传从服务端获取新的 token 。 |
| 403 | 权限不足。
`key doesn't match scope` 表示上传文件指定的 key 和上传 token 中,putPolicy 的 scope 字段不符。上传指定的 key 必须跟 scope 里的 key 完全匹配或者前缀匹配。
`ExpUser can only upload image/audio/video/plaintext` 表示账号是体验用户,体验用户只能上传文本、图片、音频、视频类型的文件,完成实名认证即可解决。 |
| 579 | 上传成功,回调失败。
需要确认回调服务器接受 POST 请求,并可以给出 200 的响应。 |
| 612 | 指定文件或资源不存在的。 |
| 614 | 指定文件名称已存在,表示该key名称的文件已经存在了,无法覆盖上传 |
| 大文件上传失败 | 大文件上传容易受到网络波动影响,推荐使用分片上传。如果使用上传工具,推荐使用 [qshell](/products/kodo/0-qshell) 工具。 |
# 上传慢、上传失败等常见FAQ (/faq/kodo/upload-download-problem/3882-upload-problem-faq)
最近更新时间: 2026-09-16 15:29:15
| Q1:ak sk 空间名称 和 默认域名是什么? |
| ----------------------------------------------------------------------- |
| 参考文档:[存储常见的关键参数](/faq/kodo/7450-the-third-party-plug-in-key-parameters) |
| Q2:上传失败,响应非 200 状态码,我应该怎么处理? |
| -------------------------------------------------------------------------------------------------------------------- |
| 参考文档:[上传失败常见状态码及解决方法](/faq/kodo/upload-download-problem/3881-upload-the-common-failure-status-code-and-solve-method) |
| Q3:上传报错 incorrect region Please use up-z(x).qiniu.com ,应该怎么办? |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 报错原因是上传域名与空间所属区域不匹配,目前最新版 SDK 均已支持自动切换区域,所以一般更新 SDK 版本到最新版即可解决。
如果不方便更新版本,可以参照 [存储区域和域名的对应关系](/products/kodo/2-region-endpoint-fq) ,修改上传域名,或者换一个默认的华东区域的空间。 |
| Q4:上传报错,找不到上传域名,应该怎么办? |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 找不到上传域名,一般来说,是使用的SDK客户端网络异常,不能根据上传token中的ak和bucket信息,调用[https://uc.qbox.me/query](https://uc.qbox.me/query) 和 [http://api.qiniu.com/query,去获取空间所在区域的上传域名,从而引发上传慢,耗时长,上传失败找不到上传域名的情况,这种情况,建议SDK直接指定上传域名](http://api.qiniu.com/query,去获取空间所在区域的上传域名,从而引发上传慢,耗时长,上传失败找不到上传域名的情况,这种情况,建议SDK直接指定上传域名) 或者 region即可,以java为例,其他各个版本SDK参考[官方SDK](/sdk-tools/sdk#official-sdk) |
```
//构造一个带指定Region对象的配置类 华东region0,华北region1,华南region2
Configuration cfg = new Configuration(Region.region0());
cfg.resumableUploadAPIVersion = Configuration.ResumableUploadAPIVersion.V2;// 指定分片上传版本
//...其他参数参考类注释
UploadManager uploadManager = new UploadManager(cfg);
//...生成上传凭证,然后准备上传
```
| Q5:上传报错,qiniup.com域名请求超时ping不通 ,应该怎么办? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 正常来说,七牛的上传域名 up-z(x).qiniup.com都可以正常ping通,无法ping通的情况,大部分情况下都是客户端网络异常导致,可以常识上传端切换网络,比如从手机网络切换到家庭、公司wifi,看下是否可以;如果还是不可以,常识修改下本地网络的DNS解析服务器,将解析指向114.114.114.114或者8.8.8.8公共DNS,如果不知道怎么修改的话,可以百度下即可,确认网络是否有开启代理,关闭代理后再次测试;在更换网络,关闭代理,修改DNS都无法正常上传的情况下,需要您提供下您的客户端IP 和 ping 的上传节点ip给到工单,然后进行详细排查 |
| Q6:我的客户反馈上传速度慢,我应该提供哪些诊断信息给七牛? |
| --------------------------------------------------------------------------------------------------- |
| 1:确认上传端和存储区域是否都在同一区域,如果是国内传海外,或者海外传国内,出现慢的情况符合预期,建议国内传国内,海外传海外 |
| 2:确认下上传端的网络带宽,上行带宽越高,上传速度越快,如果是主机上传,推荐使用客户端上传,客户端的上行带宽一把是远大于服务器代带宽的,可以百度下网络测速,测试上行带宽,上线带宽越高,上传速度越快。 |
| 3:确认网络是否有开代理,如果有开,关闭代理试试 |
| 4:直接在上传代码中,指定上传域名,不使用 autoregion ,减少获取上传域名的耗时 |
| 5:如果以上都不行 参考文档:[上传慢如何诊断?](/faq/kodo/upload-download-problem/2516-slowly-upload) |
| Q7:我上传的文件与预期的不符,有图片变大变小、实际大小不符、图片被压缩、文件不完整等情况。 |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 首先 [刷新CDN 缓存](/faq/cdn/refresh-the-cache-problem/1325-refresh-the-cache-and-the-effect-of-time),刷新完成后,[验证文件一致性](/faq/cdn/refresh-the-cache-problem/3644-refresh-the-cache-fails-consistency-method-validation-file) 。 |
| Q8: 我使用第三方插件,确定填写的参数都是对的,但是一直上传不了文件。 |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 七牛官方没有提供过任何插件。官方社区收录的 [插件](/sdk-tools/sdk#community-plugin) ,经过验证都是可以使用的,但一般更新不太及时,不会支持七牛的最新功能或产品。
上传报错,常见的问题是因为上传指定的空间不是华东的存储空间,换成华东的空间一般可以解决。
如果确认配置正确,但还是上传失败,建议咨询 【插件供应商】那边技术人员,插件底层实现逻辑只有他们最清楚。 |
| Q9: 七牛对象存储是否可以搭建网站? |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 对象存储只能用于文件存储,无法用来部署web网站或博客并运行。如果需要部署web网站或博客,建议购买 [云主机](/products/qvm/0-qvm-linux-quickstart) 或 [轻量应用服务器](/products/las/cloud-server/0-las-create-server) 来部署服务,web网站或博客中的静态资源(比如:图片、js、html、视频等)可以上传至七牛对象存储空间,然后通过外链来调用加载,对象存储使用参考 [对象存储快速入门文档](/products/kodo/0-console-quickstart) |
| Q10: 对象存储的文件大小是否有限制? |
| -------------------- |
| 存储空间的单个文件大小没有限制。 |
| Q11: 存储空间最大支持预览的视频或图片是多大? |
| ------------------------- |
| 视频或图片大小没有限制。 |
| Q12: 上传慢,上传速度怎么进一步提升 |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 上传速度主要取决于上传端的网络,客户端上行带宽越高,上传速度越快,理论上1Mbps的上行带宽理论峰值上传速度 = 1 / 8 = 0.125MB/s ,也就是125KB/s 。另外就是可以考虑使用加大并发上传,将有限的带宽更充分利用。
如果加大并发并且网络上行带宽充足的情况下,上传速度始终在200KB/s左右,那么有可能是本地网络的限制,可以考虑使用自定义上传加速域名上传,[传输加速](/products/kodo/development-guidelines/1-transfer-acceleration)。
`注意:自定义上传加速域名,需要配置cname解析,且上行流量是需要额外计费的` |
| Q13: 为什么存储空间的资源在七牛控制台无法预览查看? |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1:是否可以预览查看取决于资源格式在对应浏览器是否支持?浏览器支持的格式可以在控制台预览查看。 |
| 2:存储空间或CDN域名开启了referer防盗链功能,也会影响在线预览功能,开启空间referer防盗链或CDN域名referer防盗链的空间资源需要在七牛控制台预览查看的话,需要将 portal.qiniu.com 域名也加入referer白名单。空间referer防盗链配置文档参考:[设置Referer防盗链](/products/kodo/kodo-console-guide/bucket-management/space-settings/4-set-the-referer-hotlinking-prevention),CDN域名的referer配置文档参考:[Referer防盗链](/products/cdn/configuration-management-fusion/access-control-configuration/0-domain-name-hotlinking-prevention) |
| Q14: 如何使用七牛内网上传下载空间资源? |
| ------------------------------------------------------------------------------ |
| 目前仅支持【华东区域】存储空间与七牛云主机进行内网上传和下载,具体参考 [云主机和对象存储内网互通实践](/products/qvm/0-qvm-kodo) |
| Q15: 如何下载【违规邮件通知】中的违规资源? |
| ------------------------ |
| 违规资源禁止下载 |
| Q16: 控制台-敏感词问题 |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Q:为什么会有敏感词检查?哪些环节会有敏感词检查? |
| A:应网安管理部门要求,开发者平台 Portal 上不能展示包含有敏感词的文件,所以在 Portal 会过滤不展示包含敏感词的文件、并禁止上传名字包含敏感词的文件名;公司合规部门明确,国内和海外区域都需执行敏感词检查。名字包含敏感词的文件即便上传成功之后 Portal 也不会展示该文件。
如需查询或删除对应文件,可通过 [/products/kodo/1-kodo-browser](/products/kodo/1-kodo-browser) 图形化工具操作 |
| Q17: 控制台-未命名文件夹问题 |
| ------------------------------------------------------------------------------------ |
| Q:为什么会有未命名的文件夹? |
| A:文件名称不能使用/开头,不然会判断为文件夹的,例如上传文件后将文件名称设置为:/ABC,那么这个文件会被识别为ABC文件夹的,设置为:/,就会生成一个未命名的文件夹 |
| Q18: 小文件可以正常上传,大文件上传报413错误,是什么原因? |
| --------------------------------------------------------------------------------------------------------------------------------------------------- |
| 原因:一般是您在上传token中通过fsizeLimit限制了上传文件大小导致。
处理方式:
1、如果需要大文件上传,可以在生成上传token代码中调大fsizeLimit限制大小;
2、如果不需要限制,可以在生成上传token代码中去除fsizeLimit参数 |
| Q19: 文件上传失败,报401\{ error: user disabled },是什么原因? |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 一般是您的账号欠费冻结或账号异常导致的,可以先登录 [七牛控制台](https://portal.qiniu.com/home) 确认下对应账号状态;如果确认账号状态正常,但上传还是报401,获取到上传失败的上传token后 [提交工单](https://support.qiniu.com/tickets) 反馈技术支持进一步核实确认 |
| Q20: 如何删除未命名文件夹? |
| --------------------------------------- |
| 以 / 开头的文件即未命名文件夹 ,切换到 非目录格式即可删除这个未命名文件夹 |
# 上传报文组装 (/faq/kodo/upload-download-problem/3971-upload-a-message-assembly)
最近更新时间: 2020-05-15 16:33:22
本文介绍一些因特殊情况需要自行组装上传报文时遇到的问题
### 正确的报文 [#正确的报文]
```
POST HTTP/1.1
Host: up.qiniup.com
Cache-Control: no-cache
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file"; filename=""
Content-Type:
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="token"
FMVCRs2-LO1ivRNi4l7mEZE6ZDvPv-519D12kZCO:TMxdqAM3QilkUuZu6pIfoHa5Y2A=:eyJzY29wZSI6InJ0Y3Rlc3QiLCJkZWFkbGluZSI6MjUwMzI3NDkyOX0=
------WebKitFormBoundary7MA4YWxkTrZu0gW--
```
### 错误一 [#错误一]
invalid media parameter
### 可能原因 [#可能原因]
1. boundary之间有换行符
2. boundary中有“=”
### 解决方法 [#解决方法]
建议在boundary中不要采用特殊字符
### 错误二 [#错误二]
body/mutipart: NextPart: EOF;UP/400
### 可能原因 [#可能原因-1]
报文中指定的Content-Length值有误
### 解决方法 [#解决方法-1]
取消报文中的这个字段
# 云服务器QVM的入网带宽和出网带宽 (/faq/qvm/disk-cpu-memory-bandwidth/7061-cloud-server-qvm-network-bandwidth-and-network-bandwidth)
最近更新时间: 2026-05-07 15:38:15
# 概述 [#概述]
本文主要介绍云服务器QVM的入网带宽和出网带宽。
# 详细信息 [#详细信息]
> 七牛云提醒您:
>
> * 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
> * 如果您对实例(包括但不限于QVM、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
> * 如果您在七牛云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
本文从服务器角度出发,对入网带宽和出网带宽进行说明。下表给出了入网带宽和出网带宽的具体内容。
带宽类别 (Mbit/s) 描述
入网带宽 流入云服务器QVM的带宽。
从云服务器QVM内部下载外部网络资源,或者以FTP客户端等方式上传资源到云服务器QVM的都是入网带宽。 出网带宽 流出云服务器QVM的带宽。
从云服务器QVM对外提供访问,或者以FTP客户端等方式下载云服务器QVM内部资源的都是出网带宽。云服务器QVM出网带宽就是购买的带宽值。
下图为数据流的方向说明。

# 相关文档 [#相关文档]
* Windows实例带宽和CPU跑满或跑高排查
* Linux实例带宽和CPU跑满或跑高排查
# 适用于 [#适用于]
* 云服务器 QVM
# 监控CPU和内存的日志工具 (/faq/qvm/disk-cpu-memory-bandwidth/7062-monitor-the-log-tool-of-cpu-and-memory)
最近更新时间: 2020-08-13 19:24:48
# 概述 [#概述]
本文主要介绍监控CPU和内存的日志工具。
# 详细信息 [#详细信息]
> 七牛云提醒您:
>
> * 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
> * 如果您对实例(包括但不限于QVM、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
> * 如果您在七牛云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
以下分别在Linux和Windows系统中,介绍监控CPU和内存的日志工具。
## Linux工具 [#linux工具]
1. 下载如下工具。
* [get\_cpu\_mem\_info\_sh.rar](http://img01.taobaocdn.com/tfscom/TB1qE_WHFXXXXbuaXXXXXXXXXXX.rar)
2. 下载该文件并且解压后,上传到`/tmp`目录中。
3. 执行如下命令,进入指定目录。
cd /tmp
4. 执行如下命令,后台运行脚本。
nohup bash get\_cpu\_mem\_info.sh &
5. 该工具会在`/tmp`目录下生成一个日志文件,实时记录系统的CPU、内存的使用情况,等到系统异常时可以用于分析日志。
## Windows工具 [#windows工具]
1. 下载如下工具。
* [get\_cpu\_mem\_info\_bat.rar](http://img01.taobaocdn.com/tfscom/TB1G2AAHFXXXXXBXXXXXXXXXXXX.rar)
2. 下载该文件并解压后,上传到`c:\`目录中。
3. 打开文件运行后,请勿关闭,最小化即可。
4. 该工具会在`C:\`目录下生成一个日志文件,实时记录系统的性能状态,等到系统异常时可以用于分析日志。
# 适用于 [#适用于]
* 云服务器 QVM
# Linux实例磁盘空间满和inode满的问题排查方法 (/faq/qvm/disk-cpu-memory-bandwidth/7063-linux-instance-disk-space-and-full-inode-full-screen-problem)
最近更新时间: 2026-05-07 15:43:57
> \*\*免责声明:\*\*本文可能由社区贡献或涉及第三方产品信息,建议您访问社区或第三方产品的官方网站获取帮助与支持。第三方产品不在七牛云售后支持范围。本文仅供参考,七牛云不做任何暗示或其他形式的承诺。
# 问题描述 [#问题描述]
在Linux系统的云服务器QVM实例内创建文件时,出现类似如下空间不足的提示。
No space left on device …
# 问题原因 [#问题原因]
导致该问题的可能原因如下所示:
* 磁盘分区空间使用率达到百分之百。
* 磁盘分区inode使用率达到百分之百。
* 存在僵尸文件。
> **说明**:已删除文件因句柄被占用未释放,导致相应空间未释放的文件。
* 挂载点覆盖。
> **说明**:在原有文件系统的相应目录下已经存在大量文件。挂载新磁盘后,导致使用`df`命令能统计到相关空间使用,而使用`su`命令统计不到。
# 解决方案 [#解决方案]
> 七牛云提醒您:
>
> * 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
> * 如果您对实例(包括但不限于QVM、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
> * 如果您在七牛云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
要解决该问题,请根据不同的问题原因,通过以下方式进行处理:
* [分区容量满](#adPCB)
* [inode容量满](#ejmcJ)
* [修改inode数量](#jQPCQ)
* [僵尸文件分析删除](#HNddz)
* [挂载点覆盖](#h3-u6302u8F7Du70B9u8986u76D6)
## 分区容量满的处理 [#分区容量满的处理]
* 登录服务器,使用`df -h`命令查看磁盘使用率,其中的**Mounted on**指挂载的目录。

* 进入根目录,执行以下指令,逐级查看哪个目录占用磁盘空间较大,进入相应的目录,直到找到最精确的的文件或目录。
du -sh \*
系统显示类似如下。

* 最后,结合业务情况等判断对相关文件或目录进行删除,或者购买更大的数据盘分担处理。
## inode容量满的处理 [#inode容量满的处理]
通过如下操作,解决inode容量满的问题。
### **查询inode使用情况** [#查询inode使用情况]
Linux的inode节点中,记录了文件的类型、大小、权限、所有者、文件连接的数目、创建时间与更新时间等重要的信息,还有一个比较重要的内容就是指向数据块的指针。一般情况不需要特殊配置,如果存放文件很多,则需要配置。有时磁盘空间有剩余但是不能存放文件,可能是由于inode耗尽所致。
* 执行`df -i`命令,可以查询inode的使用情况。

* 如果inode使用率达到或者接近100%,可以通过以下两种方式进行处理:
* [清除inode占用高的文件或者目录](#trBFk)。
* [修改inode数量](#jQPCQ)。
### **清除inode占用高的文件或者目录** [#清除inode占用高的文件或者目录]
如果不方便格式化磁盘以增加inode数量,可以参考以下步骤,清理inode占用量高的文件或者目录。
* 登录服务器,执行以下命令,分析根目录下的每个二级目录下有多少个文件。
for i in /\*; do echo $i; find $i | wc -l; done
系统显示类似如下。

* 然后,逐层进入inode占用最高的目录,继续执行上述指令,逐步定位占用过高空间的文件或目录,最后进行相应清理。
### **修改inode数量** [#修改inode数量]
如果不允许清理磁盘中的文件,或者清理后inode使用率仍然较高,则需要通过以下步骤,增加inode节点数量。
> **说明**:inode的调整需要重新格式化磁盘,请确保数据已经得到有效备份后,再进行以下操作。
* 执行以下命令,卸载系统文件。
umount /home
* 执行以下命令,重新建立文件系统,指定inode节点数。
mkfs.ext3 /dev/xvdb -N 1638400
> **说明**:本文指定inode节点数1638400,现场实际环境请以实际为准。
* 执行以下命令,修改fstab文件。
vim /etc/fstab
* 执行以下命令,查看修改后的inode节点数。
dumpe2fs -h /dev/xvdb | grep node
系统显示类似如下。

## 僵尸文件分析与删除 [#僵尸文件分析与删除]
如果磁盘和inode都没有问题,则需要查看是否存在未被清除句柄的僵尸文件。这些文件实际上已经被删除,但是有服务程序在使用这些文件,导致这些文件一直被占用,无法释放磁盘空间。如果这些文件过多,会占用很大的磁盘空间。参考以下步骤查看并删除僵尸文件。
* 远程登录服务器。
* 执行以下命令,安装lsof。
yum install lsof -y
* 执行以下命令,查看僵尸文件占用情况。
lsof |grep delete | more
系统显示类似如下。

* 如果僵尸文件过多,会占用很大的磁盘空间。可以通过以下方法释放句柄,以清除僵尸文件。
* 重启服务器,验证效果。重启服务器,系统会退出现有的进程,开机后重新加载。该过程会释放调用的deleted文件的句柄。
* 根据`lsof`命令列出的pid进程号,使用`kill`命令正常停止或结束占用这些文件的服务进程。
> **说明**:如果服务器正在运行业务,可能会影响到业务,请慎重操作。
## 挂载点覆盖 [#挂载点覆盖]
先取消磁盘挂载,再检查原挂载目录下的空间占用情况。
# 适用于 [#适用于]
* 云服务器 QVM
如果您的问题仍未解决,您可以[提交工单](https://support.qiniu.com/tickets/new/?ref=developer.qiniu.com)联系七牛云技术支持。
# 使用ping命令丢包或不通时的链路测试方法 (/faq/qvm/qvm-network/7055-use-the-ping-command-packet-loss-or-not-the-link-test-method)
最近更新时间: 2026-05-07 16:21:04
> **免责声明:** 本文档可能包含第三方产品信息,该信息仅供参考。七牛云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。
# 概述 [#概述]
当客户端访问目标服务器出现ping丢包或ping不通时,可以通过tracert或mtr等工具进行链路测试来判断问题根源。本文介绍如何通过工具进行链路测试和分析。
# 详细信息 [#详细信息]
> 七牛云提醒您:
>
> * 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
> * 如果您对实例(包括但不限于QVM、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
> * 如果您在七牛云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
本文分别介绍如下链路测试方法。
* [链路测试工具](#Pxedd)
* [测试结果的简要分析](#eMWjW)
* [常见的链路异常场景](#ynsSx)
* [链路测试步骤](#nhPtf)
* [测试完成后的解决方法](#QGnym)
## 链路测试工具 [#链路测试工具]
操作系统类型不同,链路测试所使用的工具也有所不同。简要介绍如下。
### Linux系统 [#linux系统]
此处简单介绍两个链路测试工具。
##### 工具一:mtr命令 [#工具一mtr命令]
mtr(My traceroute)几乎是所有Linux发行版本预装的网络测试工具。其将ping和traceroute的功能合并,所以功能更强大。mtr默认发送ICMP数据包进行链路探测。您也可以通过“-u”参数来指定使用UDP数据包进行探测。相对于traceroute只会做一次链路跟踪测试,mtr会对链路上的相关节点做持续探测并给出相应的统计信息。所以,mtr能避免节点波动对测试结果的影响,所以其测试结果更正确,建议优先使用。
**用法说明**
mtr \[-BfhvrwctglxspQomniuT46] \[--help] \[--version] \[--report]
\[--report-wide] \[--report-cycles=COUNT] \[--curses] \[--gtk]
\[--csv|-C] \[--raw] \[--xml] \[--split] \[--mpls] \[--no-dns] \[--show-ips]
\[--address interface] \[--filename=FILE|-F]
\[--ipinfo=item\_no|-y item\_no]
\[--aslookup|-z]
\[--psize=bytes/-s bytes] \[--order fields]
\[--report-wide|-w] \[--inet] \[--inet6] \[--max-ttl=NUM] \[--first-ttl=NUM]
\[--bitpattern=NUM] \[--tos=NUM] \[--udp] \[--tcp] \[--port=PORT] \[--timeout=SECONDS]
\[--interval=SECONDS] HOSTNAME
**常见可选参数说明**
* \--report:以报告模式显示输出。
* \--split:将每次追踪的结果分别列出来,而非统计整个结果。
* \--psize:指定ping数据包的大小。
* \--no-dns:不对IP地址做域名反解析。
* \--address:主机有多个IP地址时,设置发送数据包的IP地址。
* -4:只使用IPv4协议。
* -6:只使用IPv6协议。
另外,也可以在mtr运行过程中,输入类似如下的字母来快速切换模式。
* ?或h:显示帮助菜单。
* d:切换显示模式。
* n:启用或禁用DNS域名解析。
* u:切换使用ICMP或UDP数据包进行探测。
**命令输出示例**\*\*
\*\*
**返回结果说明**
默认配置下,返回结果中各数据列的说明如下。
* 第一列(Host):节点IP地址和域名。按 **n** 键可切换显示。
* 第二列(Loss%):节点丢包率。
* 第三列(Snt):每秒发送数据包数。默认值是10,可以通过“-c”参数指定。
* 第四列(Last):最近一次的探测延迟。
* 第五、六、七列(Avg、Best、Worst):分别是探测延迟的平均值、最小值和最大值。
* 第八列(StDev):标准偏差。越大说明相应节点越不稳定。
##### 工具二:traceroute命令 [#工具二traceroute命令]
traceroute也是几乎所有Linux发行版本预装的网络测试工具,用于跟踪Internet协议(IP)数据包传送到目标地址时经过的路径。traceroute先发送小的具有最大存活时间值(Max\_TTL)的UDP探测数据包,然后侦听从网关开始的整个链路上的ICMP TIME\_EXCEEDED响应。探测从TTL=1开始,TTL值逐步增加,直至接收到ICMP PORT\_UNREACHABLE消息。ICMP PORT\_UNREACHABLE消息用于标识目标主机已经被定位,或命令已经达到允许跟踪的最大TTL值。traceroute默认发送UDP数据包进行链路探测。可以通过“-I”参数来指定使用ICMP数据包进行探测。
**用法说明**
traceroute \[-I] \[ -m Max\_ttl ] \[ -n ] \[ -p Port ] \[ -q Nqueries ] \[ -r ] \[ -s SRC\_Addr ] \[ -t TypeOfService ] \[ -f flow ] \[ -v ] \[ -w WaitTime ] Host \[ PacketSize ]
**常见可选参数说明**
* -d:使用Socket层级的排错功能。
* -f:设置第一个检测数据包的存活数值TTL的大小。
* -F:设置不要分段标识。
* -g:设置来源路由网关,最多可设置8个。
* -i:主机有多个网卡时,使用指定的网卡发送数据包。
* -I:使用ICMP数据包替代UDP数据包进行探测。
* -m:设置检测数据包的最大存活数值TTL的大小。
* -n:直接使用IP地址而非主机名称(禁用DNS反查)。
* -p:设置UDP传输协议的通信端口。
* -r:忽略普通的Routing Table,直接将数据包发送到目标主机上。
* -s:设置本地主机发送数据包的IP地址。
* -t:设置检测数据包的TOS数值。
* -v:详细显示指令的执行过程。
* -w:设置等待远端主机回包时间。
* -x:开启或关闭数据包的正确性检验。
**命令输出示例**
****
### Windows系统 [#windows系统]
此处简单介绍两个链路测试工具。
##### 工具一:WinMTR(建议优先使用) [#工具一winmtr建议优先使用]
WinMTR是mtr工具在Windows环境下的图形化实现,但进行了功能简化,只支持部分mtr的参数。WinMTR默认发送ICMP数据包进行探测,无法切换。和mtr一样,相比tracert,WinMTR能避免节点波动对测试结果的影响,所以测试结果更正确。所以在WinMTR可用的情况下,建议优先使用WinMTR进行链路测试。
**用法说明**
WinMTR无需安装,直接解压运行即可。操作方法非常简单,说明如下。
* 如下图所示,运行程序后,在 **Host** 字段输入目标服务器域名或IP,注意不要包含空格。

* 单击 **Start** 开始测试。开始测试后,相应按钮变成了 **Stop**。
* 运行一段时间后,单击 **Stop** 停止测试。
* 其它选项说明如下。
* Copy Text to clipboard:将测试结果以文本格式复制到粘贴板。
* Copy HTML to clipboard:将测试结果以HTML格式复制到粘贴板。
* Export TEXT:将测试结果以文本格式导出到指定文件。
* Export HTML:将测试结果以HTML格式导出到指定文件。
* Options:可选参数,包括的可选参数如下。
* Interval(sec):每次探测的间隔(过期)时间。默认为1秒。
* ping size(bytes):ping探测所使用的数据包大小,默认为64字节。
* Max hosts in LRU list:LRU列表支持的最大主机数,默认值为128。
* Resolve names:通过反查IP地址,以域名显示相关节点。
**返回结果说明**
默认配置下,返回结果中各数据列的说明如下。
* 第一列(Hostname):节点的IP或域名。
* 第二列(Nr):节点编号。
* 第三列(Loss%):节点丢包率。
* 第四列(Sent):已发送的数据包数量。
* 第五列(Recv):已成功接收的数据包数量。
* 第六、七、八、九列(Best 、Avg、Worst、Last):分别是到相应节点延迟的最小值、平均值、最大值和最后一次值。
##### 工具二:tracert命令行工具 [#工具二tracert命令行工具]
tracert(Trace Route)是Windows自带的网络诊断命令行程序,用于跟踪Internet协议(IP)数据包传送到目标地址时经过的路径。 tracert通过向目标地址发送 ICMP 数据包来确定到目标地址的路由。在这些数据包中,tracert使用了不同的IP“生存期”,即TTL值。由于要求沿途的路由器在转发数据包前必须至少将TTL减少1,因此TTL实际上相当于一个跃点计数器(hop counter)。当某个数据包的TTL达到0时,相应节点就会向源计算机发送一个ICMP超时的消息。
tracert第一次发送TTL为1的数据包,并在每次后续传输时将TTL增加1,直到目标地址响应或达到TTL的最大值。中间路由器发送回来的ICMP超时消息中包含了相应节点的信息。
**用法说明**
tracert \[-d] \[-h maximum\_hops] \[-j host-list] \[-w timeout] \[-R] \[-S srcaddr] \[-4] \[-6] target\_name
**常见可选参数说明**
* -d:不要将地址解析为主机名(禁用DNS反解)。
* -h:maximum\_hops,指定搜索目标地址时的最大跃点数。
* -j: host-list,指定沿主机列表的松散源路由。
* -w:timeout,等待每个回复的超时时间(以毫秒为单位)。
* -R:跟踪往返行程路径(仅适用于IPv6)。
* -S:srcaddr,要使用的源地址(仅适用于IPv6)。
* -4:强制使用IPv4。
* -6:强制使用IPv6。
* target\_host:目标主机域名或IP地址。
**命令输出示例**
C:\\> tracert -d 223.5.5.5
通过最多 30 个跃点跟踪到 223.5.5.5 的路由
1 请求超时。
2 9 ms 3 ms 12 ms 192.168.X.X
3 4 ms 9 ms 2 ms X.X.X.X
4 9 ms 2 ms 1 ms XX.XX.XX.XX
5 11 ms 211.XX.X.XX
6 3 ms 2 ms 2 ms 2XX.XX.1XX.XX
7 2 ms 2 ms 1 ms 42.XX.2XX.1XX
8 32 ms 4 ms 3 ms 42.XX.2XX.2XX
9 请求超时。
10 3 ms 2 ms 2 ms 223.5.5.5
跟踪完成。
## 测试结果的简要分析 [#测试结果的简要分析]
由于mtr(WinMTR)有更高的准确性,本文以其测试结果为例,参考如下要点进行分析。此处分析时以如下示例图为基础。

### 要点一:网络区域 [#要点一网络区域]
正常情况下,从客户端到目标服务器的整个链路中会包含如下区域。
* 客户端本地网络,即本地局域网和本地网络提供商网络。如上图中的区域A。如果该区域出现异常,并且是客户端本地网络中的节点出现异常,则需要对本地网络进行相应的排查分析。如果是本地网络提供商网络出现异常,则需要向当地运营商反馈问题。
* 运营商骨干网络。如上图中的区域B。如果该区域出现异常,可以根据异常节点的IP查询其所属的运营商,直接向对应运营商进行反馈,或者通过[七牛云技术支持](https://account.alibabacloud.com/login/login.htm),向运营商进行反馈。
* 目标服务器本地网络,即目标服务器所属提供商的网络。如上图中的区域C。如果该区域出现异常,需要向目标服务器所属的网络运营商反馈问题。
### 要点二:链路负载均衡 [#要点二链路负载均衡]
如上图中的区域D。如果中间链路某些部分启用了链路负载均衡,则mtr只会对首尾节点进行编号和探测统计。中间节点只会显示相应的IP或域名信息。
### 要点三:结合Avg(平均值)和StDev(标准偏差)综合判断 [#要点三结合avg平均值和stdev标准偏差综合判断]
由于链路抖动或其它因素的影响,节点的Best和Worst值可能相差很大。Avg统计了自链路测试以来所有探测的平均值,所以能更好的反应出相应节点的网络质量。而StDev越高,则说明数据包在相应节点的延时值越不相同,即越离散。所以标准偏差值可用于协助判断Avg是否真实反应了相应节点的网络质量。例如,如果标准偏差很大,说明数据包的延迟是不确定的。可能某些数据包延迟很小,例如25ms,而另一些延迟却很大,例如350ms,但最终得到的平均延迟反而可能是正常的。所以,此时Avg并不能很好的反应出实际的网络质量情况。
综上,建议的分析标准如下。
* 如果StDev很高,则同步观察相应节点的Best和Worst,来判断相应节点是否存在异常。
* 如果StDev不高,则通过Avg来判断相应节点是否存在异常。
> \*\*注:\*\*上述StDev高或者不高,并没有具体的时间范围标准。而需要根据同一节点其它列的延迟值大小来进行相对评估。比如,如果Avg为30ms,那么,当StDev为25ms,则认为是很高的偏差。而如果Avg为325ms,则StDev同样为25ms,反而认为是不高的偏差。
### 要点四:Loss%(丢包率)的判断 [#要点四loss丢包率的判断]
任一节点的Loss%(丢包率)如果不为零,则说明这一跳网络可能存在问题。导致相应节点丢包的原因通常有如下两种。
* 运营商基于安全或性能需求,限制了节点的ICMP发送速率,导致丢包。
* 节点确实存在异常,导致丢包。
结合异常节点及其后续节点的丢包情况,并参考如下内容,判定丢包原因。
* 如果随后节点均没有丢包,则通常表示异常节点丢包是由于运营商策略限制所致。可以忽略相关丢包。如上图中的第2跳所示。
* 如果随后节点也出现丢包,则通常说明异常节点确实存在网络异常,导致丢包。如上图中的第5跳所示。
另外,上述两种情况可能同时发生,即相应节点既存在策略限速,又存在网络异常。对于这种情况,如果异常节点及其后续节点连续出现丢包,而且各节点的丢包率不同,则通常以最后几跳的丢包率为准。如上图所示,在第 5、6、7跳均出现了丢包。所以,最终丢包情况,以第7跳的40%作为参考。
### 要点五:关于延迟 [#要点五关于延迟]
关于延迟,有如下两种场景。
##### 场景一:延迟跳变 [#场景一延迟跳变]
如果在某一跳之后延迟明显陡增,则通常判断该节点存在网络异常。如上图所示,从第5跳之后的后续节点延迟明显陡增,则推断是第5跳节点出现了网络异常。不过,高延迟并不一定完全意味着相应节点存在异常。如上图所示,第5跳之后,虽然后续节点延迟明显陡增,但测试数据最终仍然正常到达了目的主机。所以,延迟大也有可能是在数据回包链路中引发的。所以,需要结合反向链路测试一并分析。
##### 场景二:ICMP限速导致延迟增加 [#场景二icmp限速导致延迟增加]
ICMP策略限速也可能会导致相应节点的延迟陡增,但后续节点通常会恢复正常。如上图所示,第3跳有100%的丢包率,同时延迟也明显陡增。但随后节点的延迟马上恢复了正常。所以判断该节点的延迟陡增及丢包是由于策略限速所致。
## 常见的链路异常场景 [#常见的链路异常场景]
常见的链路异常场景及测试报告如下。
### 场景一:目标主机网络配置不当 [#场景一目标主机网络配置不当]
示例数据如下。
\[root\@mycentos6 \~]# mtr —no-dns [www.google.com](http://www.google.com)
My traceroute \[v0.75]
mycentos6.6 (0.0.0.0) Wed Jun 15 19:06:29 2016
Keys: Help Display mode Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1\. ???
2\. ???
3\. 1XX.X.X.X 0.0% 10 521.3 90.1 2.7 521.3 211.3
4\. 11X.X.X.X 0.0% 10 2.9 4.7 1.6 10.6 3.9
5\. 2X.X.X.X 80.0% 10 3.0 3.0 3.0 3.0 0.0
6\. 2X.XX.XX.XX 0.0% 10 1.7 7.2 1.6 34.9 13.6
7\. 1XX.1XX.XX.X 0.0% 10 5.2 5.2 5.1 5.2 0.0
8\. 2XX.XX.XX.XX 0.0% 10 5.3 5.2 5.1 5.3 0.1
9\. 173.194.200.105 100.0% 10 0.0 0.0 0.0 0.0 0.0
在该示例中,数据包在目标地址出现了100%的丢包。从数据上看是数据包没有到达,其实很有可能是目标服务器相关安全策略(比如防火墙、iptables 等)禁用了ICMP所致,导致目的主机无法发送任何应答。所以,该场景需要排查目标服务器的安全策略配置。
### 场景二:ICMP限速 [#场景二icmp限速]
示例数据如下。
\[root\@mycentos6 \~]# mtr --no-dns [www.google.com](http://www.google.com)
My traceroute \[v0.75]
mycentos6.6 (0.0.0.0) Wed Jun 15 19:06:29 2016
Keys: Help Display mode Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1\. 63.247.X.X 0.0% 10 0.3 0.6 0.3 1.2 0.3
2\. 63.247.X.XX 0.0% 10 0.4 1.0 0.4 6.1 1.8
3\. 209.51.130.213 0.0% 10 0.8 2.7 0.8 19.0 5.7
4\. aix.pr1.atl.google.com 0.0% 10 6.7 6.8 6.7 6.9 0.1
5\. 72.14.233.56 60.0% 10 27.2 25.3 23.1 26.4 2.9
6\. 209.85.254.247 0.0% 10 39.1 39.4 39.1 39.7 0.2
7\. 64.233.174.46 0.0% 10 39.6 40.4 39.4 46.9 2.3
8\. gw-in-f147.1e100.net 0.0% 10 39.6 40.5 39.5 46.7 2.2
在该示例中,在第5跳出现了明显的丢包,但后续节点均未见异常。所以推断是该节点ICMP限速所致。该场景对最终客户端到目标服务器的数据传输不会有影响,所以,分析的时候可以忽略。
### 场景三:环路 [#场景三环路]
示例数据如下。
\[root\@mycentos6 \~]# mtr —no-dns [www.google.com](http://www.google.com)
My traceroute \[v0.75]
mycentos6.6 (0.0.0.0) Wed Jun 15 19:06:29 2016
Keys: Help Display mode Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1\. 63.247.7X.X 0.0% 10 0.3 0.6 0.3 1.2 0.3
2\. 63.247.6X.X 0.0% 10 0.4 1.0 0.4 6.1 1.8
3\. 209.51.130.213 0.0% 10 0.8 2.7 0.8 19.0 5.7
4\. aix.pr1.atl.google.com 0.0% 10 6.7 6.8 6.7 6.9 0.1
5\. 72.14.233.56 0.0% 10 0.0 0.0 0.0 0.0 0.0
6\. 72.14.233.57 0.0% 10 0.0 0.0 0.0 0.0 0.0
7\. 72.14.233.56 0.0% 10 0.0 0.0 0.0 0.0 0.0
8\. 72.14.233.57 0.0% 10 0.0 0.0 0.0 0.0 0.0
9 ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0
在该示例中,数据包在第5跳之后出现了循环跳转,导致最终无法到达目标服务器。这通常是由于运营商相关节点路由配置异常所致。所以,该场景需要联系相应节点归属运营商处理。
### 场景四:链路中断 [#场景四链路中断]
示例数据如下。
\[root\@mycentos6 \~]# mtr —no-dns [www.google.com](http://www.google.com)
My traceroute \[v0.75]
mycentos6.6 (0.0.0.0) Wed Jun 15 19:06:29 2016
Keys: Help Display mode Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1\. 63.247.7X.X 0.0% 10 0.3 0.6 0.3 1.2 0.3
2\. 63.247.6X.X 0.0% 10 0.4 1.0 0.4 6.1 1.8
3\. 209.51.130.213 0.0% 10 0.8 2.7 0.8 19.0 5.7
4\. aix.pr1.atl.google.com 0.0% 10 6.7 6.8 6.7 6.9 0.1
5\. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0
6\. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0
7\. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0
8\. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0
9 ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0
在该示例中,数据包在第4跳之后就无法收到任何反馈。这通常是由于相应节点中断所致。建议结合反向链路测试做进一步确认。该场景需要联系相应节点归属运营商处理。
## 链路测试步骤 [#链路测试步骤]
通常情况下,链路测试步骤如下图所示。

相关步骤的详情说明如下。
### 步骤一:获取本地网络对应的公网IP [#步骤一获取本地网络对应的公网ip]
在客户端本地网络内访问淘宝IP地址库,获取本地网络对应的公网IP地址。

### 步骤二:正向链路测试(ping和mtr) [#步骤二正向链路测试ping和mtr]
从客户端向目标服务器做如下测试。
* 从客户端向目标服务器域名或IP做持续的ping测试,建议至少ping 100个数据包,记录测试结果。
* 根据客户端操作系统的不同,使用WinMTR或mtr,设置测试目的地址为目标服务器域名或IP,然后进行链路测试,记录测试结果。
### 步骤三:反向链路测试(ping和mtr) [#步骤三反向链路测试ping和mtr]
进入目标服务器系统内部做如下测试。
* 从目标服务器向[步骤一](#WixRs)获取的客户端IP做持续的ping测试,建议至少ping 100个数据包,记录测试结果。
* 根据目标服务器操作系统的不同,使用WinMTR或mtr,设置测试目的地址为客户端的IP地址,然后进行链路测试,记录测试结果。
### 步骤四:测试结果分析 [#步骤四测试结果分析]
参阅[测试结果的简要分析](#eMWjW),对测试结果进行分析。确认异常节点后,访问如下链接或其他可以查询IP归属地的网站,获取该异常节点的归属运营商信息。如果是客户端本地网络相关节点出现异常,则需要对本地网络进行相应排查分析。如果是运营商相关节点出现异常,则需要向运营商反馈问题。查询结果类似如下。

## 测试完成后的解决方法 [#测试完成后的解决方法]
* 当出现ping丢包或ping不通时,首先请参考云服务器QVM网络故障诊断,排查是否为网络故障。
* 如果确认是因系统中病毒导致使用ping命令测试QVM实例的IP地址间歇性丢包,则可参考使用ping命令测试QVM实例的IP地址间歇性丢包进行处理。
* 如果是因删除QVM实例的默认安全组规则导致无法ping通QVM实例,可参考删除QVM实例的默认安全组规则导致无法ping通QVM实例进行处理。
* 如果在Linux系统内核没有禁PING的情况下,是因系统内部防火墙策略设置导致QVM服务器PING不通。可参考Linux系统的QVM中没有禁PING却PING不通的解决方法。
# 适用于 [#适用于]
* 云服务器 QVM
# 无法访问 QVM 实例中运行网站的详细排查方法 (/faq/qvm/qvm-network/7056-don-t-have-access-to-detailed-screening-method-of-ecs-instance-running-in-the-web-site)
最近更新时间: 2026-05-07 16:24:58
> **免责声明:** 本文档可能包含第三方产品信息,该信息仅供参考。七牛云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。
# **概述** [#概述]
本文主要介绍无法访问QVM实例中运行网站的排查方法。
# 详细信息 [#详细信息]
> 七牛云提醒您:
>
> * 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
> * 如果您对实例(包括但不限于QVM、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
> * 如果您在七牛云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
无法打开网站时,应该先查看报错提示的含义,查看报错原因。如果没有返回状态码,可参考以下步骤进行排查。
* [网络通信问题](#h_3635120323071590042175297)
* [端口通信问题](#端口通信问题)
* [防火墙配置异常](#防火墙配置异常)
* [重新配置安全组公网规则](#安全组公网规则)
* [其他问题](#WSwYj)
## 网络通信问题 [#网络通信问题]
本节主要介绍分别在Linux系统和Windows系统中网络通信问题的排查方法。
### Linux实例网络通信问题排查 [#linux实例网络通信问题排查]
* 执行`ifconfig`或者`ip addr`命令,查看IP地址。系统显示类似如下。


* 执行以下命令,通过实例路由表查看网关。
route -n
系统显示类似如下。

* 使用ping命令访问公网,检查是否为网络通信问题。
### Windows实例网络通信问题排查 [#windows实例网络通信问题排查]
* 打开命令行窗口,执行以下命令,查看IP地址。
ipconfig
* 执行以下命令,通过实例路由表查看网关。
route print
> **说明**:
>
> * 若网卡驱动未开启或网卡配置有问题,请检查网卡驱动,并重新安装。
>
> * 关于网络相关问题的测试工具,请参见[ping 丢包或不通时链路测试说明](/faq/qvm/qvm-network/7055-use-the-ping-command-packet-loss-or-not-the-link-test-method)。
* 使用ping命令访问公网,检查是否为网络通信问题。
## 端口通信问题 [#端口通信问题]
本节主要介绍分别在Linux系统和Windows系统中端口通信问题的排查方法。
### Linux实例端口通信问题 [#linux实例端口通信问题]
* 执行以下命令,检测sshd服务的运行状态,确认端口是否有正常监听。
netstat -antpu | grep sshd
系统显示类似如下。

* 根据不同操作系统,执行下列命令查看服务运行状态。
* CentOS 6:`service sshd status`
* CentOS 7:`systemctl status sshd`
* 如果sshd服务没有正常运行,则根据不同操作系统,执行下列命令手动启动sshd服务。
* CentOS 6:`service sshd restart`
* CentOS 7:`systemctl restart sshd`
* 查看sshd程序日志。
* 如果无法正常启动sshd服务,CentOS 6系统一般会直接输出错误信息,而CentOS 7启动时没有输出信息,需要通过secure日志进行查看。sshd日志所在目录:`/var/log/secure`。
* 通过secure日志的报错信息,一般是可以定位绝大部分sshd启动异常的问题。
### Windows 实例端口通信问题 [#windows-实例端口通信问题]
依次执行以下命令,检测远程端口,其中\[$PID]为第一条命令返回的PID值。
Tasklist /svc | findstr "Ter"
netstat -ano | findstr "\[$PID]"
系统返回类似如下。

## 防火墙配置异常 [#防火墙配置异常]
本节主要介绍分别在Linux系统和Windows系统中防火墙配置异常的排查方法。
### Windows实例中关闭防火墙后连接恢复正常 [#windows实例中关闭防火墙后连接恢复正常]
> \*\*注意:\*\*只有在已授权可关闭防火墙的情况下,才能做该项排查。
* 调整防火墙配置策略。。
* 调整后,重新进行远程连接。
### Linux实例中关闭Iptables后连接恢复正常 [#linux实例中关闭iptables后连接恢复正常]
> \*\*注意:\*\*只有在已授权可关闭Iptables的情况下,才能做调整Iptables配置策略排查。
* 执行以下命令,查看防火墙规则。
iptables -nvL --line-number
> **说明**:
>
> * -n:不对IP地址进行反查,加上这个参数显示速度会快很多。
>
> * -v:输出详细信息,包含通过该规则的数据包数量、总字节数及相应的网络接口。
>
> * -L:查看当前表的所有规则,默认查看的是filter表,如果要查看NAT表,可以加上`-t NAT`参数。
* 修改iptables规则,具体操作步骤如下所示。
> **说明**:如果之前已设置过规则策略,则执行`cp -a /etc/sysconfig/iptables /etc/sysconfig/iptables.bak`命令保存一份原有的Iptables文件,避免丢失已设置过策略。
* 执行以下命令,清空实例上所有的规则。
iptables -F
* 执行以下命令,拒绝INPUT方向所有的请求。
iptables -P INPUT DROP
> **注意**:线上业务请勿直接操作,会导致业务直接中断。
* 依次执行下列命令,放行80端口。
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
或者您也可以参见以下命令,允许指定IP访问80端口,此处以“192.168.1.1”为例。
iptables -I INPUT -s 192.168.1.1 -p tcp --dport 80 -j ACCEPT
* 执行以下命令,查看添加的规则是否生效。
iptables -L
系统显示类似如下。

* 执行以下命令,保存添加的规则。
iptables-save > /etc/sysconfig/iptables
* 执行`service iptables restart`或`/etc/init.d/iptables restart`命令,重启Iptables。
* 执行以下命令,重启实例验证配置。
systemctl reboot
* 重新进行SSH连接实例。
## 重新配置安全组公网规则 [#重新配置安全组公网规则]
由于安全组默认没有放行网站使用的端口(如80端口),因此需要自行放行该端口。以下是放行该端口的具体操作步骤,添加安全组公网规则。
* 登录[QVM 控制台](https://portal.qiniu.com/qvm/dashboard "登陆 QVM 控制台"),定位实例。
* 单击实例ID,进入详情页,再单击**本实例安全组**>**安全组列表**>**配置规则**。
* 根据网站使用的端口配置新的安全组规则,放行网站使用的端口,最后单击**确定**。
# 适用于 [#适用于]
* 云服务器QVM
# 检查TCP 80端口是否正常工作 (/faq/qvm/qvm-network/7057-check-the-tcp-port-80-is-working-correctly)
最近更新时间: 2026-05-07 16:30:46
# 概述 [#概述]
本文主要介绍在不同操作系统中检查TCP 80端口是否正常工作的方法。
# 详细信息 [#详细信息]
> 七牛云提醒您:
>
> * 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
> * 如果您对实例(包括但不限于QVM、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
> * 如果您在七牛云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
如果实例无法对外提供HTTP服务,可以按以下思路检查Web服务相关的接口(默认为TCP 80)是否正常工作。
* 在QVM管理控制台,确认安全组已经放行该端口。
* 远程连接QVM实例,确认服务已经开启。
* 确认端口正常被监听。如没有,请修改监听地址。
* 确认实例防火墙已经放行服务。
* 若仍无法解决,请提交工单咨询。
本文分别介绍在以下不同操作系统中检查TCP 80端口是否正常工作的方法:
* [Windows Server 2012](#win2012)
* [Windows Server 2008](#win2008)
* [CentOS 7.3](#centos)
* [Ubuntu 16.04](#ubuntu)
以下是在Windows Server 2012系统中检查TCP 80端口是否正常工作的方法。
## Windows Server 2012 [#windows-server-2012]
> **说明**:在Windows 2012系统的Windows实例中安装IIS服务为例。
* 登录[QVM 管理控制台](https://portal.qiniu.com/qvm/dashboard "点击进入 QVM 管理控制台"),确认实例所在安全组里已经添加以下安全组规则。
| 网络类型 | 网卡类型 | 规则方向 | 授权策略 | 协议类型 | 端口范围 | 授权类型 | 授权对象 | 优先级 |
| ------ | ----- | ---- | ---- | -------- | ----- | ----- | ---------- | --- |
| VPC 网络 | 不需要配置 | 入方向 | 允许 | HTTP(80) | 80/80 | 地址段访问 | 10.0.0.0/8 | 1 |
| 经典网络 | 公网 | 入方向 | 允许 | HTTP(80) | 80/80 | 地址段访问 | 10.0.0.0/8 | 1 |
* 参见远程连接 Windows 实例,登录Windows实例。
* 以下是查看IIS服务是否已经开启的操作步骤:
* 在**服务器管理器**窗口,单击**工具**>**Internet Information Services (IIS)管理器**。如果找不到这个选项,则说明没有成功安装IIS服务,需要重新安装IIS服务。

* 在**Internet Information Services (IIS)管理器**窗口中确认以下信息:
* 在**连接**导航栏里,右键单击实例ID,如果**启动**处于灰色状态,表示IIS服务已经开启。
* 单击**网站**,在右边列表页查看您安装的网站的状态。如果网站**状态**为**已停止**,则单击网站,在右侧**操作**栏的**管理站点**部分,单击**启动**,启动网站。

* 以下是查看端口在实例中是否正常被监听的操作步骤:
* 启动**命令提示符**。
* 执行以下命令。
netstat -ano | findstr :80
如果返回类似`TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4`,则说明80端口正常全网监听。如果返回的不是该端口,请在Internet Information Services (IIS)管理器窗口中,单击指定网站,然后单击右侧**操作**栏中的**绑定**,将绑定的端口该为80端口。
* 以下是查看实例里防火墙是否已经放行Web服务的操作步骤:
* 单击**控制面板**>**系统与安全**>**Windows 防火墙**。
* 根据防火墙状态,执行不同操作。
* 如果防火墙处于关闭状态,不需要再做其他处理。如果仍无法访问网站,请提交工单咨询。
* 如果防火墙处于开启状态,则执行以下操作。
* 单击**高级设置**。
* 在弹出窗口的左侧导航栏中,单击**入站规则**。
* 选择**万维网服务(HTTP 流入量)**,如果处于禁用状态,在**操作**栏里,单击**启用规则**。

* 完成上述检查,如果仍不能访问实例,请提交工单咨询。
以下是在Windows Server 2008系统中检查TCP 80端口是否正常工作的方法。
## Windows Server 2008 [#windows-server-2008]
> **说明**:以在Windows 2008系统的Windows实例中安装IIS服务为例。
* 登录[QVM 管理控制台](https://portal.qiniu.com/qvm/dashboard "点击进入 QVM 管理控制台"),确认实例所在安全组里已经添加以下安全组规则。
| 网络类型 | 网卡类型 | 规则方向 | 授权策略 | 协议类型 | 端口范围 | 授权类型 | 授权对象 | 优先级 |
| ------ | ----- | ---- | ---- | -------- | ----- | ----- | ---------- | --- |
| VPC 网络 | 不需要配置 | 入方向 | 允许 | HTTP(80) | 80/80 | 地址段访问 | 10.0.0.0/8 | 1 |
| 经典网络 | 公网 | 入方向 | 允许 | HTTP(80) | 80/80 | 地址段访问 | 10.0.0.0/8 | 1 |
* 参见远程连接 Windows 实例,登录Windows实例。
* 以下是查看IIS服务是否已经开启的操作步骤。
* 在**服务器管理器**窗口,选择**角色**>**Web 服务器**。如果找不到这个选项,则说明没有成功安装IIS服务。
* 在**Web 服务器**窗口,确认**系统服务**部分显示为**全部正在运行**。如果不是这个状态,请启动所有服务。

* 以下是查看端口在实例中是否正常被监听的操作步骤。
* 启动**命令提示符**。
* 执行以下命令。
netstat -ano | findstr :80
如果返回`TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4`,则说明80端口正常全网监听。如果返回的不是该端口,请在Internet Information Services (IIS)管理器窗口中,单击指定网站,然后单击右侧**操作**栏中的**绑定**,将绑定的端口该为80端口。
* 以下是查看实例里防火墙是否已经放行Web服务的操作步骤。
* 单击**控制面板**>**系统与安全**>**检查防火墙状态**。
* 根据防火墙状态,执行不同操作。
* 如果防火墙处于关闭状态,不需要再做其他处理。如果仍无法访问网站,请提交工单咨询。
* 如果防火墙处于开启状态,则执行以下操作。
* 单击**高级设置**。
* 在弹出窗口的左侧导航栏中,单击**入站规则**。
* 选择**万维网服务(HTTP 流入量)**,如果处于禁用状态,在**操作**栏里,单击**启用规则**。

* 完成上述检查,如果仍不能访问实例,请提交工单咨询。
以下是在CentOS 7.3系统中检查TCP 80端口是否正常工作的方法。
## CentOS 7.3 [#centos-73]
> **说明**:以在CentOS 7.3系统的Linux实例中安装Nginx服务为例。
* 登录[QVM 管理控制台](https://portal.qiniu.com/qvm/dashboard "点击进入 QVM 管理控制台"),确认实例所在安全组里已经添加以下安全组规则。
| 网络类型 | 网卡类型 | 规则方向 | 授权策略 | 协议类型 | 端口范围 | 授权类型 | 授权对象 | 优先级 |
| ------ | ----- | ---- | ---- | -------- | ----- | ----- | ---------- | --- |
| VPC 网络 | 不需要配置 | 入方向 | 允许 | HTTP(80) | 80/80 | 地址段访问 | 10.0.0.0/8 | 1 |
| 经典网络 | 公网 | 入方向 | 允许 | HTTP(80) | 80/80 | 地址段访问 | 10.0.0.0/8 | 1 |
* 参见远程连接 Linux实例,登录Linux实例。
* 执行以下运行命令。
systemctl status nginx
如果系统返回类似如下,则说明Nginx已经启动。如果未开启,则执行`systemctl start nginx`命令。

* 执行以下命令,查看端口在实例中是否正常被监听。
netstat -an | grep 80
如果返回`tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN`,则说明80端口正常全网监听。如果返回的不是上述结果,请修改监听地址。关于如何修改监听地址,请参见如何修改Nginx服务端口监听地址。
* CentOS 7之后的版本默认安装Firewalld。如果已经启用`firewalld.service`,则需要放行 TCP 80 端口。执行以下命令。若返回结果为`success`,则表示已经放行TCP 80端口。
firewall-cmd --add-port=80/tcp --permanent
> 使用CentOS 7之前的版本并开启默认防火墙iptables时,应注意iptables默认不拦截访问,如果配置了iptables规则,需要执行以下步骤。
>
> * 查看规则列表:执行命令 `iptables --line -vnL`。根据返回结果执行不同操作。
> * 如果设置了默认拦截,添加规则放行TCP 80端口。执行命令`iptables -A INPUT -p tcp --dport 80 -j ACCEPT`。
> * 如果设置了DROP TCP 80端口,替换规则放行 80 端口。执行命令`iptables -R INPUT [80端口对应的规则编号] -p tcp --dport 80 -j ACCEPT`。
> * 保存上述规则,执行命令 `service iptables save`。
* 完成上述检查,如果仍不能访问实例,请提交工单咨询。
以下是在Ubuntu 16.04系统中检查TCP 80端口是否正常工作的方法。
## Ubuntu 16.04 [#ubuntu-1604]
> **说明**:以在Ubuntu 16.04系统的Linux实例中安装Apache2 Web服务器为例。
* 登录[QVM 管理控制台](https://portal.qiniu.com/qvm/dashboard "点击进入 QVM 管理控制台"),确认实例所在安全组里已经添加以下安全组规则。
| 网络类型 | 网卡类型 | 规则方向 | 授权策略 | 协议类型 | 端口范围 | 授权类型 | 授权对象 | 优先级 |
| ------ | ----- | ---- | ---- | -------- | ----- | ----- | ---------- | --- |
| VPC 网络 | 不需要配置 | 入方向 | 允许 | HTTP(80) | 80/80 | 地址段访问 | 10.0.0.0/8 | 1 |
| 经典网络 | 公网 | 入方向 | 允许 | HTTP(80) | 80/80 | 地址段访问 | 10.0.0.0/8 | 1 |
* 参见远程连接 Linux实例,登录Linux实例。
* 查看Apache2 Web服务器是否已经开启。执行命令`service apache2 status`。如果返回以下结果,说明 Apache2 Web服务器已经启动。如果未开启,执行命令 `service apache2 start`。

* 执行以下命令,查看端口在实例中是否正常被监听。
netstat -an | grep 80
如果返回`tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN`,则说明80端口正常全网监听。如果返回的不是上述结果,请修改监听地址。关于如何修改监听地址,请参见如何修改Apache服务端口监听地址。
* 如果您已经启用UFW(Ubuntu 预装防火墙),需要放行TCP 80端口或HTTP服务。执行命令`ufw allow 80/tcp`或`ufw allow http`。返回结果为`Rule added` 表示已经放行TCP 80端口或HTTP服务。
> **说明**:如果实例中已经安装Firewalld并且已经启用firewalld.service,若需要放行 TCP 80 端口,执行命令`firewall-cmd --add-port=80/tcp --permanent`。返回结果为`success`即表示已经放行TCP 80端口。
* 完成上述检查,如果仍不能访问实例,请提交工单咨询。
# 适用于 [#适用于]
* 云服务器QVM
# Linux实例网站访问丢包延时高的排查方法 (/faq/qvm/qvm-network/7058-linux-instance-website-lost-package-delay-high-screening-method)
最近更新时间: 2026-05-07 16:44:13
# 概述 [#概述]
当网站访问很慢或无法访问时,若已经排除显著的问题,而使用ping命令检测到有明显丢包时,建议您做链路测试。Linux环境下,推荐优先使用mtr命令行工具测试,或使用traceroute命令行工具进行链路测试来判断问题来源。通常情况下,链路测试步骤如下。
1. 利用链路测试工具探测网络状况和服务器状态。
2. 根据链路测试结果分析处理。
# 详细信息 [#详细信息]
> 七牛云提醒您:
>
> * 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
> * 如果您对实例(包括但不限于QVM、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
> * 如果您在七牛云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
如下分别介绍[mtr命令行工具](#TPrCz)和[tracert命令行工具](#h2-traceroute-2)的使用方法及如何分析链路测试结果。
## mtr命令行工具 [#mtr命令行工具]
mtr(My traceroute)几乎是所有Linux发行版本预装的网络测试工具,集成了tracert与ping这两个命令的图形界面,功能十分强大。ping与tracert通常被用来检测网络状况和服务器状态,具体说明如下。
| 命令名称 | 具体说明 |
| ------- | ----------------------------------------- |
| ping | 送出封包到指定的服务器。如果服务器有回应就会传送回封包,并附带返回封包来回的时间。 |
| tracert | 返回从用户的电脑到指定的服务器中间经过的所有节点(路由)以及每个节点的回应速度。 |
mtr默认发送ICMP数据包进行链路探测,通过“-u”参数指定UDP数据包用于探测。相对于traceroute只做一次链路跟踪测试,mtr会对链路上的相关节点做持续探测并给出相应的统计信息。mtr能避免节点波动对测试结果的影响,所以其测试结果更正确,建议优先使用。
### 用法说明 [#用法说明]
mtr \[-hvrctglspni46] \[--help] \[--version] \[--report]
\[--report-cycles=COUNT] \[--curses] \[--gtk]
\[--raw] \[--split] \[--no-dns] \[--address interface]
\[--psize=bytes/-s bytes]
\[--interval=SECONDS] HOSTNAME \[PACKETSIZE]
### 示例输出 [#示例输出]
\[root\@centos \~]# mtr 223.5.5.5
My traceroute \[v0.75]
mycentos6.6 (0.0.0.0) Wed Jun 15 23:16:27 2016
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1\. ???
2\. 192.X.X.20 0.0% 7 13.1 5.6 2.1 14.7 5.7
3\. 111.X.X.41 0.0% 7 3.0 99.2 2.7 632.1 235.4
4\. 111.X.X.197 0.0% 7 1.8 2.0 1.2 2.9 0.6
5\. 211.X.X.25 0.0% 6 0.9 4.7 0.9 13.9 5.8
6\. 211.X.X.70 0.0% 6 1.8 22.8 1.8 50.8 23.6
211.X.X.134
211.X.X.2
211.X.X.66
7\. 42.X.X.186 0.0% 6 1.4 1.6 1.3 1.8 0.2
42.X.X.198
8\. 42.X.X.246 0.0% 6 2.8 2.9 2.6 3.2 0.2
42.X.X.242
9\. ???
10\. 223.5.5.5 0.0% 6 2.7 2.7 2.5 3.2 0.3
### 常见可选参数说明 [#常见可选参数说明]
* -r或--report:以报告模式显示输出。
* -p或--split:将每次追踪的结果分别列出来,而非--report统计整个结果。
* -s或--psize:指定ping数据包的大小。
* -n或--no-dns:不对IP地址做域名反解析。
* -a或--address:设置发送数据包的IP地址。用于主机有多个IP的情况。
* -4:只使用IPv4协议。
* -6:只使用IPv6协议。
在mtr运行过程中,您也可以输入相应字母来快速切换模式,各字母的含义如下。
* ?或h:显示帮助菜单。
* d:切换显示模式。
* n:切换启用或禁用DNS域名解析。
* u:切换使用ICMP或UDP数据包进行探测。
### 返回结果说明 [#返回结果说明]
默认配置下,返回结果中各数据列的说明如下。
* 第一列(Host):节点IP地址和域名。按 **n** 键可切换显示。
* 第二列(Loss%):节点丢包率。
* 第三列(Snt):每秒发送数据包数。默认值是10,可以通过“-c”参数指定。
* 第四列(Last):最近一次的探测延迟。
* 第五、六、七列(Avg、Best、Worst):分别是探测延迟的平均值、最小值和最大值。
* 第八列(StDev):标准偏差。越大说明相应节点越不稳定。
## traceroute命令行工具 [#traceroute命令行工具]
traceroute是几乎所有Linux发行版本预装的网络测试工具,用于跟踪Internet 协议(IP)数据包传送到目标地址时经过的路径。traceroute先发送最大存活时间值(Max\_TTL)的UDP探测数据包,然后侦听从网关开始的整个链路上的ICMP TIME\_EXCEEDED响应。探测从TTL=1开始,TTL值逐步增加,直至接收到ICMP PORT\_UNREACHABLE消息。ICMP PORT\_UNREACHABLE消息用于标识目标主机已经被定位,或命令已经达到允许跟踪的最大TTL值。traceroute默认发送UDP数据包进行链路探测。可以通过“-I”参数来指定发送ICMP数据包用于探测。
### 用法说明 [#用法说明-1]
traceroute \[-I] \[ -m Max\_ttl ] \[ -n ] \[ -p Port ] \[ -q Nqueries ] \[ -r ] \[ -s SRC\_Addr ] \[ -t TypeOfService ] \[ -f flow ] \[ -v ] \[ -w WaitTime ] Host \[ PacketSize ]
### 示例输出 [#示例输出-1]
\[root\@centos \~]# traceroute -I 223.5.5.5
traceroute to 223.5.5.5 (223.5.5.5), 30 hops max, 60 byte packets
1 \* \* \*
2 192.X.X.20 (192.X.X.20) 3.965 ms 4.252 ms 4.531 ms
3 111.X.X.41 (111.X.X.41) 6.109 ms 6.574 ms 6.996 ms
4 111.X.X.197 (111.X.X.197) 2.407 ms 2.451 ms 2.533 ms
5 211.X.X.25 (211.X.X.25) 1.321 ms 1.285 ms 1.304 ms
6 211.X.X.70 (211.X.X.70) 2.417 ms 211.138.114.66 (211.X.X.66) 1.857 ms 211.X.X.70 (211.X.X.70) 2.002 ms
7 42.X.X.194 (42.X.X.194) 2.570 ms 2.536 ms 42.X.X.186 (42.X.X.186) 1.585 ms
8 42.X.X.246 (42.X.X.246) 2.706 ms 2.666 ms 2.437 ms
9 \* \* \*
10 public1.alidns.com (223.5.5.5) 2.817 ms 2.676 ms 2.401 ms
### 常见可选参数说明 [#常见可选参数说明-1]
* -d:使用Socket层级的排错功能。
* -f:设置第一个检测数据包的存活数值TTL的大小。
* -F:设置不要分段标识。
* -g:设置来源路由网关,最多可设置8个。
* -i:使用指定的网卡送出数据包。用于主机有多个网卡时。
* -I:使用ICMP数据包替代UDP数据包进行探测。
* -m:设置检测数据包的最大存活数值TTL的大小。
* -n:直接使用IP地址而非主机名称(禁用DNS反查)。
* -p:设置UDP传输协议的通信端口。
* -r:忽略普通的Routing Table,直接将数据包送到远端主机上。
* -s:设置本地主机送出数据包的IP地址。
* -t:设置检测数据包的TOS数值。
* -v:详细显示指令的执行过程。
* -w:设置等待远端主机回包时间。
* -x:开启或关闭数据包的正确性检验。
## 分析链路测试结果 [#分析链路测试结果]
以如下链路测试结果示例图为基础进行阐述。

1. 判断各区域是否存在异常,并根据各区域的情况分别处理。
* 区域A:客户端本地网络,即本地局域网和本地网络提供商网络。针对该区域异常,客户端本地网络相关节点问题,请对本地网络进行排查分析。本地网络提供商网络相关节点问题,请向当地运营商反馈。
* 区域B:运营商骨干网络。针对该区域异常,可根据异常节点IP查询归属运营商,然后直接或通过七牛云售后技术支持,向相应运营商反馈问题。
* 区域C:目标服务器本地网络,即目标主机归属网络提供商网络。针对该区域异常,需要向目标主机归属网络提供商反馈问题。
2. 结合Avg(平均值)和StDev(标准偏差),判断各节点是否存在异常。
* 若StDev很高,则同步观察相应节点的Best和Worst,来判断相应节点是否存在异常。
* 若StDev不高,则通过Avg来判断相应节点是否存在异常。
> \*\*注意:\*\*上述StDev高或者不高,并没有具体的时间范围标准。而需要根据同一节点其它列的延迟值大小来进行相对评估。比如,如果Avg为30ms,那么,当StDev为25ms,则认为是很高的偏差。而如果Avg为325ms,则同样的StDev为25ms,反而认为是不高的偏差。
3. 查看节点丢包率,若“Loss%”不为零,则说明这一跳路由的网络可能存在问题。导致节点丢包的原因通常有两种。
* 人为限制了节点的ICMP发送速率,导致丢包。
* 节点确实存在异常,导致丢包。
4. 确定当前异常节点的丢包原因。
* 若随后节点均没有丢包,说明当前节点丢包是由于运营商策略限制所致,可以忽略。如前文链路测试结果示例图中的第2跳路由的网络所示。
* 若随后节点也出现丢包,说明当前节点存在网络异常,导致丢包。如前文链路测试结果示例图中的第5跳路由的网络所示。
> \*\*说明:\*\*前述两种情况可能同时发生,即相应节点既存在策略限速,又存在网络异常。对于这种情况,若当前节点及其后续节点连续出现丢包,而且各节点的丢包率不同,则通常以最后几跳路由的网络的丢包率为准。如前文链路测试结果示例图所示,在第5、6、7跳路由的网络均出现了丢包。所以,最终丢包情况,以第7跳路由的网络的40%作为参考。
5. 通过查看是否有明显的延迟,来确认节点是否存在异常。通过如下两个方面进行分析。
* 若某一跳路由的网络之后延迟明显陡增,则通常判断该节点存在网络异常。如前文链路测试结果示例图所示,从第5跳路由的网络之后的后续节点延迟明显陡增,则推断是第5跳路由的网络节点出现了网络异常。
> 注:高延迟并不一定完全意味着相应节点存在异常,延迟大也有可能是在数据回包链路中引发的,建议结合反向链路测试一并分析。
* ICMP策略限速也可能会导致相应节点的延迟陡增,但后续节点通常会恢复正常。如前文链路测试结果示例图所示,第3跳路由的网络有100%的丢包率,同时延迟也明显陡增。但随后节点的延迟马上恢复了正常。所以判断该节点的延迟陡增及丢包是由于策略限速所致。
## 操作建议 [#操作建议]
* 若数据包在目标地址出现了100%的丢包,建议对目标服务器的安全策略配置进行排查。
* 若数据包出现循环跳转,导致无法到达目标服务器,建议联系相应节点归属运营商处理。
* 若数据包在跳转后无法收到任何反馈,建议结合反向链路测试做进一步确认,并联系相应节点归属运营商进行处理。
* 七牛云中国内地机房和其他国家或地区机房有网络通信的专线,为降低通信时候的丢包率,推荐使用高速通道。
* 若主机掉包和延迟非常高,建议做mtr双向测试,即本地到服务器的和服务器到本地的测试。无法远程登录时,请通过管理终端进行登录。
# 适用于 [#适用于]
* 云服务器 QVM
# Windows实例网络访问丢包延时高的排查方法 (/faq/qvm/qvm-network/7059-windows-instance-network-access-packet-delay-high-screening-method)
最近更新时间: 2026-05-07 16:47:13
# 概述 [#概述]
当网站访问很慢或无法访问时,若已经排除显著的问题,而使用ping命令检测到有明显丢包时,建议您做链路测试。在Windows环境中,推荐优先使用WinMTR工具,或者tracert命令行进行链路测试以判断问题来源。通常情况下,链路测试步骤如下。
1. 利用链路测试工具探测网络状况和服务器状态。
2. 根据链路测试结果分析处理。
# 详细信息 [#详细信息]
> 七牛云提醒您:
>
> * 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
> * 如果您对实例(包括但不限于QVM、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
> * 如果您在七牛云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
## WinMTR工具 [#winmtr工具]
mtr(My traceroute)作为一款网络测试工具,集成了tracert与ping这两个命令的图形界面。ping与tracert通常被用于检测网络状况和服务器状态,具体说明如下。
| 命令名称 | 具体说明 |
| ------- | ---------------------------------------- |
| ping | 送出封包到指定的服务器。如果服务器有回应就会传送回封包,并附带返回封包来回的时间 |
| tracert | 返回从用户的电脑到指定的服务器中间经过的所有节点(路由)以及每个节点的回应速度。 |
WinMTR是mtr工具在Windows环境下的图形化实现,适合Windows下做路由追踪及ping测试。WinMTR默认发送ICMP数据包进行探测,无法切换。
相比tracert命令行工具,WinMTR能避免节点波动对测试结果的影响,测试结果更正确。Windows环境下,建议优先使用WinMTR进行链路测试。下载[WinMTR工具](https://sourceforge.net/projects/winmtr/files/latest/download)。
1. 下载WinMTR工具后,直接解压运行。运行程序后,在 **Host** 字段输入目标服务器域名或IP。

2. 单击 **Start** 开始测试。开始测试后,相应按钮变成了 **Stop**。
3. 运行一段时间后,单击 **Stop** 停止测试。
> \*\*说明:\*\*您可以多测试几分钟,测试结束后,将结果导出。
### 常见可选参数说明 [#常见可选参数说明]
* Copy Text to clipboard:将测试结果以文本格式复制到粘贴板。
* Copy HTML to clipboard:将测试结果以HTML格式复制到粘贴板。
* Export TEXT:将测试结果以文本格式导出到指定文件。
* Export HTML:将测试结果以HTML格式导出到指定文件。
* Options:为可选参数。具体包括以下参数。
* Interval(sec):每次探测的间隔(过期)时间,默认为1秒。
* Ping size(bytes):ping 探测所使用的数据包大小,默认为64字节。
* Max hosts in LRU list:LRU列表支持的最大主机数,默认值为128。
* Resolve names:通过反查IP以域名显示相关节点。
### WinMTR运行后的返回结果说明 [#winmtr运行后的返回结果说明]
默认配置下,WinMTR测试结果说明如下。
* 第一列(Hostname):到目标服务器要经过的每个节点主机IP或域名。
* 第二列(Nr):节点编号。
* 第三列(Loss%):节点丢包率。ping数据包回复失败的百分比,由此可判断哪个节点(线路)出现故障,是服务器所在机房还是国际路由干路。
* 第四列(Sent):已发送的数据包数量。
* 第五列(Recv):已成功接收的数据包数量。
* 第六、七、八、九列(Best 、Avg、Worst、Last):分别是回应时间的最小值、平均值、最大值和最后一个数据包的回应时间。
## tracert命令行工具 [#tracert命令行工具]
tracert (Trace Route) 是Windows自带的网络诊断命令行实用程序,用于跟踪Internet协议(IP)数据包传送到目标地址时经过的路径。
tracert通过向目标地址发送ICMP数据包来确定到目标地址的路由。在这些数据包中,tracert使用了不同的IP生存期 (TTL) 值。由于要求沿途的路由器在转发数据包前至少必须将TTL减少1,因此TTL实际上相当于一个跃点计数器 (hop counter)。当某个数据包的TTL达到零时,相应节点就会向源计算机发送一个ICMP超时的消息。tracert第一次发送TTL为1的数据包,并在每次后续传输时将TTL增加1,直到目标地址响应或达到TTL的最大值。中间路由器发送回来的ICMP超时消息中包含了相应节点的信息。
1. 在桌面底部单击 **开始** 菜单,选择 **运行**。
2. 打开运行框后,在框中输入 **cmd**,并单击 **确定**。
3. 在命令运行界面中,输入 **tracert** ,按回车键后,界面将显示tracert的用法说明。

4. 根据具体用法,输入待跟踪的目标地址,示例如下。
C:\\> tracert -d 223.5.5.5
通过最多 30 个跃点跟踪到 223.5.5.5 的路由
1 \* \* \* 请求超时。
2 9 ms 3 ms 12 ms 192.X.X.20
3 4 ms 9 ms 2 ms 111.X.X.41
4 9 ms 2 ms 1 ms 111.X.X.197
5 11 ms \* \* 211.X.X.57
6 3 ms 2 ms 2 ms 211.X.X.62
7 2 ms 2 ms 1 ms 42.X.X.190
8 32 ms 4 ms 3 ms 42.X.X.238
9 \* \* \* 请求超时。
10 3 ms 2 ms 2 ms 223.5.5.5
## 分析链路测试结果 [#分析链路测试结果]
以如下链路测试结果示例图为基础进行阐述。

1. 判断各区域是否存在异常,并根据各区域的情况分别处理。
* 区域A:客户端本地网络,即本地局域网和本地网络提供商网络。针对该区域异常,客户端本地网络相关节点问题,请对本地网络进行排查分析;本地网络提供商网络相关节点问题,请向当地运营商反馈。
* 区域B:运营商骨干网络。针对该区域异常,可根据异常节点IP查询归属运营商,然后直接或通过七牛云售后技术支持,向相应运营商反馈问题。
* 区域C:目标服务器本地网络,即目标主机归属网络提供商网络。针对该区域异常,需要向目标主机归属网络提供商反馈问题。
2. 结合Avg(平均值)和StDev(标准偏差),判断各节点是否存在异常。
* 若StDev很高,则同步观察相应节点的Best和Worst,来判断相应节点是否存在异常。
* 若StDev不高,则通过Avg来判断相应节点是否存在异常。
> \*\*注意:\*\*上述StDev高或者不高,并没有具体的时间范围标准。而需要根据同一节点其它列的延迟值大小来进行相对评估。比如,如果Avg为30ms,那么,当StDev为25ms,则认为是很高的偏差。而如果Avg为325ms,则同样的StDev为25ms,反而认为是不高的偏差。
3. 查看节点丢包率,若“Loss%”不为零,则说明这一跳路由的网络可能存在问题。导致节点丢包的原因通常有两种。
* 人为限制了节点的ICMP发送速率,导致丢包。
* 节点确实存在异常,导致丢包。
4. 确定当前异常节点的丢包原因。
* 若随后节点均没有丢包,说明当前节点丢包是由于运营商策略限制所致,可以忽略。如前文链路测试结果示例图中的第2跳路由的网络所示。
* 若随后节点也出现丢包,说明当前节点存在网络异常,导致丢包。如前文链路测试结果示例图中的第5跳路由的网络所示。
> \*\*说明:\*\*前述两种情况可能同时发生,即相应节点既存在策略限速,又存在网络异常。对于这种情况,若当前节点及其后续节点连续出现丢包,而且各节点的丢包率不同,则通常以最后几跳路由的网络的丢包率为准。如前文链路测试结果示例图所示,在第5、6、7跳路由的网络均出现了丢包。所以,最终丢包情况,以第7跳的40%作为参考。
5. 通过查看是否有明显的延迟,来确认节点是否存在异常。通过如下两个方面进行分析。
* 若某一跳路由的网络之后延迟明显陡增,则通常判断该节点存在网络异常。如前文链路测试结果示例图所示,从第5跳路由的网络之后的后续节点延迟明显陡增,则推断是第5跳路由的网络节点出现了网络异常。
> 注:高延迟并不一定完全意味着相应节点存在异常,延迟大也有可能是在数据回包链路中引发的,建议结合反向链路测试一并分析。
* ICMP策略限速也可能会导致相应节点的延迟陡增,但后续节点通常会恢复正常。如前文链路测试结果示例图所示,第3跳路由的网络有100%的丢包率,同时延迟也明显陡增。但随后节点的延迟马上恢复了正常。所以判断该节点的延迟陡增及丢包是由于策略限速所致。
## 操作建议 [#操作建议]
* 若数据包在目标地址出现了100%的丢包,建议对目标服务器的安全策略配置进行排查。
* 若数据包出现循环跳转,导致无法到达目标服务器,建议联系相应节点归属运营商处理。
* 若数据包在跳转后无法收到任何反馈,建议结合反向链路测试作进一步确认,并联系相应节点归属运营商进行处理。
* 七牛云中国内地机房和其他国家或地区有网络通信的专线,为降低通信时候的丢包率,推荐使用高速通道。
* 若主机掉包和延迟非常高,建议做WinMTR双向测试,即本地到服务器的和服务器到本地的测试。无法远程登录时,请通过管理终端进行登录。
# 适用于 [#适用于]
* 云服务器 QVM
# 云主机安全事件 (/faq/qvm/qvm-other-faq/13580-qvm-security-events)
最近更新时间: 2026-09-30 14:56:07
Q: 收到主机安全事件通知或者短信 - 云主机实例被检测到严重级别的File containing malicious code包含恶意代码文件安全事件 ,去哪里查看
A: 如果收到安全事件通知,且是使用的qvm云主机,可以在[https://portal.qiniu.com/qvm/4service?type=sas](https://portal.qiniu.com/qvm/4service?type=sas) 中查看,可以在安全事件中查看一些异常行为

# 七牛主机礼品卡使用介绍 (/faq/qvm/qvm-other-faq/5675-seven-niuyun-host-gift-card-use-is-introduced)
最近更新时间: 2025-07-07 16:12:45
# 卡券介绍 [#卡券介绍]
七牛主机礼品卡,是用户通过参与七牛相关活动获取的购物优惠券,可用于购买云主机、云数据库、弹性公网带宽、云安全等服务和产品。
# 使用方法 [#使用方法]
用户登录七牛云管理控制台,选择七牛云主机服务中的产品加入订单,在支付订单时,按照界面提示输入优惠券号及密码,直接抵扣。

# 规则说明 [#规则说明]
1. 七牛云([www.qiniu.com](http://www.qiniu.com)) 是本礼品卡唯一的发放渠道。
2. 本礼品卡相当于折扣卡,券内预付价值一元等值于一元人民币,卡券面值50、100、200,订单分别满100、200、400时可使用;
3. 本礼品卡自2019年1月1日起生效,有效期为1年。
4. 使用抵用券购买的订单,抵用券不可退费。
5. 每张抵用券限一个订单使用。
6. 礼品卡不可以与网站其他促销优惠活动同时使用。
7. 礼品卡购买时若需要发票,请提前说明或在具体选项前标明,在购买预付费产品时,礼品卡支付部分不再提供发票。
8. 礼品卡禁止以获利为目的进行二次销售。
9. 本礼品卡相关最终解释权在法律范围内归七牛云所有。
# 云主机SSH连接 (/faq/qvm/the-remote-connection/13581-qvm-ssh-connection)
最近更新时间: 2026-09-30 17:37:29
Q: qvm云主机可以在IPV6的环境下SSH链接么
A: qvm云主机默认不支持IPV6的SSH连接,目前默认ssh的链接端口是22 ,需要使用 ipv4的环境和地址进行连接,连接命令 `ssh root@主机ipv4弹性公网IP -p 22`
# 为什么云主机连接不上 Redis? (/faq/qvm/the-remote-connection/5099-connection-on-redis)
最近更新时间: 2020-08-13 19:25:15
两者通过内网连接必须满足的条件如下:
* 云主机 QVM 和 Redis 在相同的地域
* 云主机 QVM 和 Redis 在相同的网络环境,即:必须都属于同一个 VPC 下
* 云主机 QVM 内网 IP 在 Redis 白名单中
# 如何为 Linux 服务器安装 GRUB (/faq/qvm/the-remote-connection/5146-how-to-install-grub-for-linux-server)
最近更新时间: 2020-08-13 19:25:15
当你无法通过[迁云工具](/products/qvm/1-server-migration-qiniu)迁移内核版本较低,自带系统引导程序 GRUB 版本为 0.97 及其以下的 Linux 服务器,例如,CentOS 5 和 Debian 7。而且日志文件提示`Do Grub Failed`时,可能是因为没有安装 1.9 以上版本的系统引导程序 GRUB(GRand Unified Bootloader)。本文档即将介绍如何为你的源服务器安装系统引导程序 GRUB 1.99 版本。
### **操作步骤** [#操作步骤]
\*\*1. \*\*登录源服务器
\*\*2. \*\*运行以下命令查看原 grub、grub-install 以及 grub-mkconfig 的路径:
```
which grub
which grub-install
which grub-mkconfig
```
\*\*3. \*\*使用`mv`命令为旧版本 grub、grub-install 以及 grub-mkconfig 改名以备份文件。你可以在使用迁云工具迁移服务器后,恢复原名以使用原配置。
```
mv /sbin/grub /sbin/grub-old
mv /sbin/grub-install /sbin/grub-install-old
mv /sbin/grub-mkconfig /sbin/grub-mkconfig-old
```
\*\*4. \*\*运行`yum install -y bison gcc make`安装 GRUB 依赖的 bison、gcc 以及 make 工具。
\*\*5. \*\*运行以下命令安装 flex。
```
test -d /root/tools || mkdir -p /root/tools
cd /root/tools
wget https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz
tar xzf flex-2.6.4.tar.gz
cd flex-2.6.4
mkdir -p build
cd build
../configure
make && make install
ln -s /usr/local/bin/flex /usr/bin/flex
```
\*\*6. \*\*运行以下命令安装 GRUB 1.99 依赖。
```
test -d /root/tools || mkdir -p /root/tools
cd /root/tools
wget https://alpha.gnu.org/gnu/grub/grub-1.99~rc1.tar.gz
tar xzf grub-1.99~rc1.tar.gz
cd grub-1.99~rc1
mkdir -p build
cd build
../configure
make && make install
ln -s /usr/local/sbin/grub-install /sbin/grub-install
ln -s /usr/local/sbin/grub-mkconfig /sbin/grub-mkconfig
```
说明:若编译过程中出现了`-Werror`报错,你可以定位到编译对象的编译文件 makefile 中,去掉`-Werror`选项重新编译。
\*\*7. \*\*运行`grub-install --version`检查 GRUB 版本是否更新为 1.99。
成功更新系统引导程序 GRUB 1.99 版本后,你可以使用[迁云工具](/products/qvm/1-server-migration-qiniu)迁移服务器至 QVM。
迁云成功后,运行以下命令恢复使用旧版本 GRUB:
```
rm /sbin/grub-install
rm /sbin/grub-mkconfig
rm /boot/grub/grub.cfg
mv /sbin/grub-old /sbin/grub
mv /sbin/grub-install-old /sbin/grub-install
```
# 远程连接Windows实例时出现身份验证错误的处理方法 (/faq/qvm/the-remote-connection/6869-remote-connection-windows-instances-when-solving-method-of-authentication-error)
最近更新时间: 2026-08-18 11:56:44
# 问题描述 [#问题描述]
通过微软的RDP协议客户端,远程连接Windows实例时,系统提示“出现身份验证错误,要求的函数不受支持(The function requested is not supported)”错误。

# 问题原因 [#问题原因]
微软官方2018年5月,更新了凭据安全支持提供程序协议(CredSSP)相关补丁和身份验证请求方式。当遇到如下一种情景时,就会出现该连接错误。
* 情景一:客户端未更新该补丁,服务器端已更新该补丁且加密Oracle修正的策略为强制更新的客户端。
* 情景二:客户端已更新该补丁且加密Oracle修正的策略为强制更新的客户端,服务器端未更新该补丁。
* 情景三:客户端已更新该补丁且加密Oracle修正的策略为缓解,服务器端未更新该补丁。
# 解决方案 [#解决方案]
## 方法一 :服务器端允许任意版本的远程桌面连接 [#方法一-服务器端允许任意版本的远程桌面连接]
由于Windows Server系统版本较多,且各版本之间操作略有差异,此处分别以Windows Server 2008 R2、Windows Server 2012 R2和Windows Server 2016三个主流版本为例,步骤如下。
### Windows Server 2008 R2系统版本 [#windows-server-2008-r2系统版本]
1. 通过 [VNC远程连接](/products/qvm/cloud-server/instances/qvm-windows-login/2-use-the-management-terminal-vnc-connection-windows-instance) 登录Windows实例,打开 **开始** ,右键单击 计**算机**,选择\*\* 属性\*\*。

2. 在系统控制面板中,单击\*\* 远程设置\*\*,在弹出的\*\* 远程桌面 \*\*选项中选择 允许运行任意版本远程桌面的计算机连接(较不安全) 并单击 **确定**。

### Windows Server 2012 R2系统版本 [#windows-server-2012-r2系统版本]
1. 通过 [VNC远程连接](/products/qvm/cloud-server/instances/qvm-windows-login/2-use-the-management-terminal-vnc-connection-windows-instance) 登录Windows实例,打开 **开始** ,右键单击 计**算机**,选择\*\* 属性\*\*。

2. 在系统控制面板中,单击 **远程设置**,在弹出的 **远程桌面** 选项中取消选择 **仅允许运行使用网络级别身份验证的远程桌面的计算机连接(建议)** 并单击 **确定**。

### Windows Server 2016系统版本 [#windows-server-2016系统版本]
1. 通过 [VNC远程连接](/products/qvm/cloud-server/instances/qvm-windows-login/2-use-the-management-terminal-vnc-connection-windows-instance) 登录Windows实例,打开 **开始** ,右键单击 计**算机**,选择\*\* 属性\*\*。

2. 在系统控制面板中,单击 **远程设置**,在弹出的 **远程桌面** 选项中取消选择 **仅允许运行使用网络级别身份验证的远程桌面的计算机连接(建议)** 并单击 **确定**。

## 方法二 :Windows安全更新 [#方法二-windows安全更新]
1. 通过 [VNC远程连接](/products/qvm/cloud-server/instances/qvm-windows-login/2-use-the-management-terminal-vnc-connection-windows-instance) 登录Windows实例,搜索并打开 **Windows 更新** 页面,单击 **检查更新** 下载更新。

2. 等待更新下载和安装。如果需要手动安装CredSSP对应安全更新包,请参考[微软官网地址](https://www.microsoft.com/zh-cn/windows/?spm=a2c4g.11186623.2.25.6a554c07N27Vca)进行选择对应版本的安全更新下载。
3. 重启实例或重启本地计算机以完成安装更新。
## 方法三:修改注册表 [#方法三修改注册表]
> 提示:此处以Windows Server 2016系统版本为例,其他Windows系统版本操作类似。
### **手动修改** [#手动修改]
当客户端或服务器端完成CredSSP相关补丁的更新后,请选择以下一种方式修改其注册表。如果修改注册表不当,可能会出现严重问题,您需要自行承担修改注册表风险。修改注册表之前,建议您先通过创建快照备份数据,以免数据丢失。
1. 登录Windows实例或者本地计算机,单击 **开始 > 运行**,输入**regedit**,单击 确定。
2. 单击 **HKEY\_LOCAL\_MACHINE > SOFTWARE > Microsoft > Windows > CurrentVersion > Policies > System > CredSSP > Parameters**。

3. 如果 **CredSSP** 项或者 **Parameters** 项不存在,请新建 **CredSSP** 项或者 **Parameters** 项,在 **Parameters** 项下新建 **REG\_DWORD** 类型的 **AllowEncryptionOracle** 值,并设置数据为2。

4. 重启实例或重启本地计算机。
### **脚本修改** [#脚本修改]
1. 登录Windows实例或者本地计算机,以管理员身份运行Windows PowerShell,执行如下脚本。
2. 重启实例或重启本地计算机。
脚本:
```
New-Item -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System -Name CredSSP -Force
New-Item -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP -Name Parameters -Force
Get-Item -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters | New-ItemProperty -Name AllowEncryptionOracle -Value 2 -PropertyType DWORD -Force
```
> 注:若您优先使用本方法修改了注册表,随后又更新了客户端和ECS实例安全补丁,我们建议您将AllowEncryptionOracle的值设为0或者1以获得更高的安全性。
# 无法连接到Windows实例 (/faq/qvm/the-remote-connection/7051-unable-to-connect-to-the-windows-instance)
最近更新时间: 2020-08-13 19:25:15
> \*\*免责声明:\*\*本文档可能包含第三方产品信息,该信息仅供参考。七牛云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。
# [](#概述)概述 [#概述]
本文主要介绍无法远程连接Windows实例的排查方法。
# 详细信息 [#详细信息]
> 七牛云提醒您:
>
> * 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
> * 如果您对实例(包括但不限于QVM、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
> * 如果您在七牛云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
无法远程连接Windows实例的原因较多,可通过以下排查方法,排查并解决无法远程连接Windows实例的问题。
* [步骤一:使用管理终端登录实例](#zfpkA)
* [步骤二:检查登录密码](#zfpkA)
* [步骤三:检查端口及安全组](#FQsdM)
* [步骤四:检查远程桌面服务](#h2-u8FDCu7A0Bu684Cu9762u670Du52A1u672Au5F00u542Fu5BFCu81F412)
* [步骤五:检查网络](#BRtjH)
* [步骤六:检查CPU负载、带宽及内存使用情况](#mGxfy)
* [步骤七:检查防火墙配置](#dFyni)
* [步骤八:设置系统的安全策略](#h2-u7CFBu7EDFu7684u5B89u5168u7B56u7565u8BBEu7F6Eu5BFCu81F411)
* [步骤九:检查远程终端服务的配置](#JzNpy)
* [步骤十:检查杀毒软件](#h3-u670Du52A1u5668u4FA7u81EAu7B7Eu540Du8BC1u4E66u635Fu574F)
* [步骤十一:尝试重启实例](#AnSBy)
* [常见报错案例](#ndFDW)
## 步骤一:使用管理终端登录实例 [#步骤一使用管理终端登录实例]
无论何种原因导致无法远程连接实例,请先尝试用七牛云提供的远程连接功能进行连接,确认实例还有响应,没有完全宕机,然后再按原因分类进行故障排查。
1. 登录[QVM管理控制台](https://portal.qiniu.com/qvm/dashboard),单击左侧导航栏中的**实例**,在目标实例右侧单击**远程连接**。
2. 在首次连接或忘记连接密码时,单击**修改远程连接密码**,修改远程连接的密码。
3. 然后通过远程连接密码连接实例。
## 步骤二:登录密码检查 [#步骤二登录密码检查]
在确保登录密码正确的情况下,确认之前是否曾重置过密码。检查重置实例密码后是否未重启实例,如果存在实例密码修改记录,但无重启实例记录,则参考以下操作步骤重启实例。
1. 登录QVM管理控制台,单击左侧导航栏中的**实例**。
2. 在页面顶部的选择对应的地域,目标实例右侧单击**更多**>**实例状态**>**重启**,再单击**确定**即可。
## 步骤三:端口及安全组检查 [#步骤三端口及安全组检查]
进一步检查端口是否正常,以及安全组规则是否有限制。
1. 参见如何查看和修改Windows实例远程桌面的默认端口,检查实例远程链接的端口是否被修改。如果登录方式改变或者QVM安全组规则中未放行修改后的端口号,则参考如下步骤放行修改后的端口。
> **说明**:QVM的安全组规则中默认放行3389端口。修改了远程桌面的端口后,需要在安全组规则中放行修改后的端口号。
1. 登录QVM管理控制台。
2. 找到该实例,单击**管理**进入**实例详情**页面,在左侧导航栏,单击**本实例安全组**。找到安全组,单击操作列下的**配置规则**。

3. 在安全组规则页面,单击**添加安全组规则**。
4. 在弹出的页面中,**端口范围**输入修改后的远程桌面端口号。**授权对象**输入客户端的公网IP地址。比如修改后的远程桌面端口号为4389,则**端口范围**应输入**4389/4389**。填写完成后,单击**确定**。

5. 通过“IP:端口”的方式进行远程桌面连接。连接方式类似如下。

2. 通过上一步获取的端口,参见以下命令,进行端口测试,判断端口是否正常。如果端口测试失败,请参见使用ping命令正常但端口不通时的端口可用性探测说明进行排查。
telnet \[$IP] \[$Port]
> **说明**:
>
> * \[$IP]指Windows实例的IP地址。
> * \[$Port]指Windows实例的RDP端口号。
系统显示类似如下,比如执行`telnet 192.168.0.1 4389`命令,正常情况下返回结果类似如下。
Trying 192.168.0.1 ...
Connected to 192.168.0.1 4389.
Escape character is '^]'
3. 检查Windows远程端口设置是否超出范围,如果超出范围,您需将端口重新修改为0到65535之间,且没有被占用的其它端口,具体操作请参见以下操作。
1. 登录实例,依次选择**开始**>**运行**,输入**regedit**,然后单击**确认**。
2. 打开注册表编辑器,依次选择**HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp**。
3. 双击**PortNumber**,单击**十进制**,将原端口由“113322”修改为0到65535之间且不与当前端口冲突的端口,例如5588等端口。
> **说明**:113322为PortNumber右侧显示的端口号。
4. 再打开**HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\Tenninal Server\WinStations\RDP-Tcp**。
5. 双击**PortNumber**,单击**十进制**,将原端口“113322”修改为与第3步一致的端口号。
6. 然后重启主机,确认远程连接成功。
## 步骤四:远程桌面服务检查 [#步骤四远程桌面服务检查]
您可以查看Windows服务器的系统是否开启了远程桌面服务。具体操作如下:
1. 使用控制台远程连接功能登录到Windows实例。
2. 右键单击**我的电脑**,选择**属性**>**高级系统设置**。
3. 在**系统属性**窗口,选择**远程**选项卡,在**远程桌面**区域,确认已勾选**允许远程连接到此计算机**。

4. 用户为了提高系统安全性,有时错误的将远程桌面服务所依赖的某些关键服务禁用,导致远程桌面服务异常。可通过以下操作进行检查。
1. 使用控制台远程连接功能登录到Windows实例。
2. 选择**开始**>**运行**。 输入`msconfig`,单击**确定**。

3. 在弹出的窗口中,选择**常规**选项卡,选择**正常启动**,然后重启服务器即可。

## 步骤五:网络检查 [#步骤五网络检查]
无法正常远程连接Windows实例时,需要先检查网络是否正常。
1. 用其他网络环境中(不同网段或不同运营商)的电脑连接对比测试,判断是本地网络问题还是服务器端的问题。如果是本地网络问题或运营商问题,请联系本地IT人员或运营商解决。如果是网卡驱动存在异常,则重新安装。排除本地网络故障后进行下一步检查。
2. 在客户端使用ping命令测试与实例的网络连通性。
* 网络异常时,请参见网络异常时如何抓取数据包进行排查。
* 当出现ping丢包或ping不通时,请参见使用ping命令丢包或不通时的链路测试方法进行排查。
* 如果出现间歇性丢包,QVM实例的网络一直处于不稳定状态时,请参见使用ping命令测试QVM实例的IP地址间歇性丢包进行解决。
3. 在实例中使用ping命令测试与客户端的连通性,提示“一般故障”的错误,请参见Windows实例ping外网地址提示“一般故障”进行解决。
## 步骤六:检查CPU负载、带宽及内存使用情况 [#步骤六检查cpu负载带宽及内存使用情况]
* 确认是否存在CPU负载过高的情况,如果存在,则参考本步骤解决问题,如果不存在,则执行下一步步骤。
* 检查CPU负载过高时,通过实例详情页面的终端登录实例,检查后台是否正在执行Windows Update操作。
* 运行Windows Update来安装最新的微软安全补丁。
* 若应用程序有大量的磁盘访问、网络访问行为、高计算需求,CPU负载过高是正常结果。您可以尝试升配实例规格来解决资源瓶颈问题。
* CPU负载过高的解决方法,请参见Windows系统QVM实例的CPU使用率较高的解决方法。
* 无法远程连接可能是公网带宽不足导致的,具体排查方法如下。可通过续费QVM实例,然后重启实例解决。详情请参见手动续费,或者请参见自动续费。
1. 登录QVM管理控制台。
2. 找到该实例, 单击**管理**进入实例详情页面,查看网络监控数据。
3. 检查服务器带宽是否为“1k”或“0k”。如果购买实例时没有购买公网带宽,后来升级了公网带宽,续费的时候没有选择续费带宽,带宽就会变成“1k”。
* 远程连接输入用户密码登录后,不能正常显示桌面直接退出,也没有错误信息。这种情况可能是服务器内存不足导致的,需要查看一下服务器的内存使用情况。具体操作如下。
1. 1. 使用控制台远程连接功能登录到Windows实例。
2. 2. 选择**开始**>**控制面板**>**管理工具**,双击**事件查看器**。查看一下是否有内存资源不足的警告日志信息。如有日志信息提示内存不足,具体解决方法参考Windows 虚拟内存不足问题的处理。
## 步骤七:防火墙配置检查 [#步骤七防火墙配置检查]
您只有在已授权可关闭防火墙的情况下,才能进行该项排查。确认防火墙是否已关闭,如果没有关闭,则通过调整防火墙配置策略修复,具体操作请参见如何配置Windows实例远程连接的防火墙。完成操作后,请再进行远程连接,确认连接成功。本文以Windows Server 2012初次登录开启防火墙为例。新购的Windows 2012实例,首次连接服务器是可以的。连接服务器并激活系统后,会提示如下图片中的信息,用户需要单击 **是**,如果单击 **否**,服务器会自动开启公网的防火墙,连接会直接断开。此问题可参考以下步骤进行解决。

1. 使用控制台远程连接功能登录到Windows实例。
2. 在菜单栏选择**开始**>**控制面板** 。
3. **查看方式**选择**小图标**,单击**Windows 防火墙**。

4. 在Windows防火墙窗口,单击**高级设置**。
5. 在弹出的窗口中,单击**入站规则**,在右侧拉至最下方,右键单击**远程桌面-用户模式(TCP-In)**,选择**启动规则**。

6. 返回上一个页面, 单击**Windows防火墙属性**。

7. 选择**启用(推荐)**,单击**应用**。
> **说明**:建议将**域配置文件**、**专用配置文件**、**公用配置文件**选项卡下的防火墙全部启用。

更多关于防火墙的设置,请参考设置Windows实例远程连接防火墙。
## 步骤八:系统的安全策略设置 [#步骤八系统的安全策略设置]
您可以查看Windows服务器上是否有阻止远程桌面连接的相关安全策略。具体操作如下。
1. 使用控制台远程连接功能登录到Windows实例。
2. 选择**开始**>**控制面板**>**管理工具**,双击**本地安全策略**。

3. 在弹出的窗口中,单击**IP安全策略**,查看是否有相关的安全策略。
4. 如果有,右键单击相关策略,选择**删除**,或双击该IP的安全策略来重新配置以允许远程桌面连接。然后再使用远程桌面连接。

## 步骤九:远程终端服务的配置检查 [#步骤九远程终端服务的配置检查]
无法连接Windows实例远程桌面可能是由于以下远程终端服务的配置异常而导致。
### 异常一:服务器侧自签名证书损坏 [#异常一服务器侧自签名证书损坏]
客户端如果是Windows 7以上版本的系统,会尝试与服务器建立TLS连接。若服务器侧用于TLS连接的自签名证书损坏,则会导致远程连接失败。
1. 使用控制台远程连接功能登录到Windows实例。
2. 选择**开始**>**管理工具**>**远程桌面服务**,然后双击**远程桌面会话主机配置**。

3. 选择**RDP-Tcp**。在RDP-Tcp属性窗口,将**安全层**修改成**RDP安全层**。

4. 在操作栏单击**禁用连接**,再单击**启用连接**即可。
### 异常二:远程桌面会话主机配置连接被禁用 [#异常二远程桌面会话主机配置连接被禁用]
使用netstat命令查询,发现端口未正常监听。使用控制台远程连接功能登录到Windows实例后,发现远程桌面RDP连接属性配置文件被禁用。参考[服务器侧自签名证书损坏](#h3-u670Du52A1u5668u4FA7u81EAu7B7Eu540Du8BC1u4E66u635Fu574F)找到RDP连接属性配置文件,如果**RDP-Tcp**被禁用,单击**启用连接**即可。

### 异常三:终端服务器角色配置 [#异常三终端服务器角色配置]
1. 用户在使用远程桌面访问Windows实例时,有时会出现如下提示。

2. 这种情况一般是由于在服务器上安装配置了**终端服务器**,但是没有配置有效的访问授权导致的。可参见如下两个解决方案处理。
* Windows服务器远程桌面提示“没有远程桌面授权服务器可以提供许可证”错误
* 远程登录Windows实例报“远程桌面用户组没有该权限”错误
## 步骤十:杀毒软件检查 [#步骤十杀毒软件检查]
无法连接远程桌面可能是由于第三方杀毒软件设置导致,可通过以下方法进行解决。此处列举两个安全狗配置导致远程访问失败的解决案例。
* 如果杀毒软件在后台执行,可通过实例详情页面的终端登录,将杀毒软件升级至最新版本或者直接删除。
* 请使用商业版杀毒软件,或者使用Microsoft Safety Scanner微软免费安全工具,在安全模式下扫描杀毒,相关信息请参见[安全扫描程序](https://www.microsoft.com/security/scanner/zh-cn/default.aspx)。
### 案例一:安全狗黑名单拦截 [#案例一安全狗黑名单拦截]
如果安装了安全狗后,出现如下情况,请确认防护软件中是否做了安全设置或对应的拦截。
* 客户端本地无法远程桌面连接Windows实例,但其他区域可以远程连接。
* 无法ping通服务器IP地址,且通过tracert命令跟踪路由,发现无法到达服务器。
* 云盾未拦截本地公网IP地址。
可打开**服务器安全狗**进行检查,选择**网络防火墙**。单击**超级黑名单**的**规则设置**,如果黑名单中存在实例公网IP,则将此黑名单规则删除,然后将公网IP添加到**超级白名单**。

> **说明**:如果云盾的阈值设置过低,则可能拦截实例公网IP。建议把清洗阈值调高,避免出现拦截实例公网IP的情况发生,具体请参见DDoS基础防护。
### 案例二:安全狗程序异常 [#案例二安全狗程序异常]
使用控制台远程连接功能登录到Windows实例后,在系统桌面右下角,安全狗弹出错误提示,系统显示类似如下。该问题可能是由于安全狗软件出现异常导致的。可通过Windows系统卸载安全狗软件后,重启服务器,网络即可恢复。

## 步骤十一:尝试重启实例 [#步骤十一尝试重启实例]
若用七牛云提供的远程连接功能仍无法成功连接实例,请尝试重启实例。重启操作会使实例停止工作,从而中断业务,请谨慎执行。
> **提示**:重启实例前,需给实例创建快照,用于数据备份或者制作镜像。创建快照的方法请参见创建快照。
1. 登录QVM管理控制台,单击左侧导航栏中的**实例**。
2. 在页面顶部的选择对应的地域,在目标实例右侧单击**更多**>**实例状态**>**重启**,再单击**确认**即可。
## 常见报错案例 [#常见报错案例]
* 协议相关报错常见案例如下。
* 远程连接Windows系统的QVM实例时提示协议错误
* 授权相关报错常见案例如下。
* 启用密码保护共享导致Windows系统远程访问出现“凭据无法工作”错误
* 远程桌面连接QVM实例时报"连接被拒绝,因为没有授权此用户帐户进行远程登录"错误
* Windows系统实例中未指定远程桌面授权服务器解决方法
* Windows 2008系统的QVM实例远程登录时提示“要登录到此远程计算机,您必须被授予允许通过终端服务登录的权限”
* 桌面无法显示的报错案例如下。
* Windows系统的QVM实例远程登录后无法显示桌面或显示异常
* 连接数相关报错案例及说明如下。
* Windows系统实例远程连接提示"终端服务器超出了最大允许连接"
* Windows Server实例远程连接数以及License授权服务器的相关说明
* 配置策略相关报错案例如下。
* 远程登录Windows Server 2008 R2系统时提示未知的用户名或密码错误
# [](#适用于)适用于 [#适用于]
* 云服务器QVM
# Windows实例提示“由于协议错误,会话将被中断。请重新连接到远程计算机。” (/faq/qvm/the-remote-connection/7052-windows-instance-prompt-error-due-to-the-agreement-the-session-will-be-interrupted-please-connect-to-the-remote-computer-again)
最近更新时间: 2026-05-07 16:09:44
> \*\*免责声明:\*\*本文档可能包含第三方产品信息,该信息仅供参考。七牛云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。
# 问题描述 [#问题描述]
远程连接Windows系统的QVM实例时,提示协议错误。具体的报错如下:
由于协议错误,会话将被中断。请重新连接到远程计算机。
# 问题原因 [#问题原因]
可能导致该问题的部分原因如下:
* 原因一
目标实例的远程会话配置错误。当远程会话配置错误,远程连接时会出现协议错误的提示。
* 原因二
目标实例的远程连接端口被其他应用占用。Windows系统默认远程桌面连接端口号为3389,当该端口被其他程序占用时,远程连接服务将无法正常运行。
# 解决方案 [#解决方案]
> 七牛云提醒您:
>
> * 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
> * 如果您对实例(包括但不限于QVM、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
> * 如果您在七牛云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
不同问题原因对应的解决方案不同,您可以根据现场实际情况选择对应的问题原因及解决方案。
> **说明**:本文中的操作步骤以Windows Server 2016版本为例。
## 原因一:目标实例的远程会话配置错误 [#原因一目标实例的远程会话配置错误]
处理步骤如下:
* [使用VNC登录](/products/qvm/cloud-server/instances/qvm-windows-login/2-use-the-management-terminal-vnc-connection-windows-instance)Windows实例。
* 单击**开始**,输入`gpedit.msc`。单击**Enter**按钮,打开**本地组策略编辑器**。
* 在**本地组策略编辑器**窗口中,依次单击**计算机配置**>**管理模板**>**Windows 组件**>**远程桌面服务**>**远程桌面会话主机**>**安全\*\*\*\*计算机配置**。
* 在**安全**目录中,双击**远程(RDP)连接要求使用指定的安全层**。

* 选择**已启用** ,在**安全层**选项中选择**RDP**,单击**确定**。

* 单击**开始**,输入`cmd`,单击**Enter**按钮,打开命令行。
* 执行以下命令,完成策略更新,使以上的设置生效。
gpupdate
系统显示如下图,计算机策略更新完成。

* 重试远程连接,确认问题已经修复。
## 原因二:目标实例的远程连接端口被其他应用占用 [#原因二目标实例的远程连接端口被其他应用占用]
如果目标实例的远程连接端口被其他应用占用,您可以从下列两种解决方案中选择其一。
### 方案一:修改远程连接端口号 [#方案一修改远程连接端口号]
参考下列步骤,修改远程连接的端口号,然后使用新的端口号重试远程连接:
* [使用VNC登录](/products/qvm/cloud-server/instances/qvm-windows-login/2-use-the-management-terminal-vnc-connection-windows-instance)Windows实例。
* 单击**开始**,输入`regedit`,单击**Enter**按钮,打开**注册表编辑器**。
* 依次进入以下目录。
HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
* 双击**RDP-Tcp**目录中名称为**PortNumber**的注册表项。


* 在编辑页面,选择**基数**选项中的**十进制**,修改**数值数据**中的值,该值即为远程桌面使用的端口号。
> **说明**:修改远程桌面默认端口时,请根据现场情况选择合适的TCP端口号。

> **说明**:图中的3389端口号为远程连接的默认端口号,仅作为示例。
* 重启Windows系统或重启该QVM实例。
### 方案二:关闭占用远程连接端口的应用进程 [#方案二关闭占用远程连接端口的应用进程]
参考下列步骤,关闭正在占用远程连接端口的应用进程,以释放端口号,然后重试远程连接:
* [使用VNC登录](/products/qvm/cloud-server/instances/qvm-windows-login/2-use-the-management-terminal-vnc-connection-windows-instance)Windows实例。
* 单击**开始**,输入`cmd`,单击**Enter**按钮,打开命令行。
* 执行以下命令,获取占用远程连接端口的进程号(PID)。
netstat -ano |findstr 3389
> **说明**:此处以远程连接默认端口号3389为例,现场需要以实际情况为准。
* 执行以下命令,根据PID查看进程对应的应用程序。正常情况下,远程连接端口被svchost.exe进程占用。
tasklist |findstr \[$PID]
> **说明**:\[$PID]指上一步获取的PID。
* 如果远程连接端口被svchost.exe之外的进程占用,则表明远程连接端口的确被其他应用所占用。您可以执行以下命令,根据PID关闭指定的进程,释放被占用的远程连接端口。
> **警告**:关闭进程属于风险操作,请确保关闭进程后不影响业务运行,方可执行此操作。
taskkill /f /pid \[$PID]
# [](#适用于)适用于 [#适用于]
* 云服务器QVM
如果您的问题仍未解决,您可以[提交工单](https://support.qiniu.com/tickets/new/?ref=developer.qiniu.com)联系七牛云技术支持。
# Windows实例提示“凭据无法工作”报错 (/faq/qvm/the-remote-connection/7053-windows-instance-prompt-error-credentials-will-not-work)
最近更新时间: 2026-05-07 16:14:08
> **免责声明:** 本文档可能包含第三方产品信息,该信息仅供参考。七牛云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。
# 问题描述 [#问题描述]
使用远程桌面访问Windows系统的QVM实例时,出现如下错误。使用管理终端连接服务器可正常登录。

# 问题原因 [#问题原因]
Windows操作系统内开启密码保护共享功能。
# 解决方案 [#解决方案]
> 七牛云提醒您:
>
> * 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
> * 如果您对实例(包括但不限于QVM、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
> * 如果您在七牛云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
参考如下操作步骤,关闭密码保护共享功能。
1. 使用管理终端登录QVM实例。
2. 打开 **控制面板** > **所有控制面板项** > **网络和共享中心** > **高级共享设置**。
3. 在 **密码保护的共享** 配置项,选择 **关闭密码保护共享** 即可。

# 适用于 [#适用于]
* 云服务器 QVM
如果您的问题仍未解决,您可以[提交工单](https://support.qiniu.com/tickets/new/?ref=developer.qiniu.com)联系七牛云技术支持。
# 父子账号说明 (/products/af/manual/1433-father-and-son-account-instructions)
最近更新时间: 2026-08-13 11:16:37
## 功能说明 [#功能说明]
OEM 父子账号功能,提供了资源隔离和子账号管理能力。您可以通过 OEM 模式,包装七牛的基础产品并为您的客户提供服务。您可以基于 OEM 子账号的用量,单独和您的客户进行结算,拥有独立的计费模式。
所有 OEM 子账号的产品用量将计入父账号,统一在父账号计费,享受阶梯优惠,七牛不会对 OEM 子账号额外收取费用。
注意:
1、目前仅 API 支持 OEM 模式,控制台暂不支持 OEM 模式
2、如需开通,可添加 [工单界面](https://support.qiniu.com/tickets) 左下角专属商务二维码申请开通。
## 子账号管理 API [#子账号管理-api]
首先要获取管理账号凭证,使用管理凭证进行其他操作,获取子账号信息,或者创建子账号等
* 获取账户信息(/v1/user/info)
* [创建子账号(/v1/user/create\_child)](/products/af/manual/1433-father-and-son-account-instructions)
* 禁用子账号(/v1/user/disable\_child)
* 启用子账号(/v1/user/enable\_child)
* 列举子账号(/v1/user/children)
* [查询子账号密钥(/v1/user/child\_key)](/products/af/manual/1433-father-and-son-account-instructions)
## 产品 API [#产品-api]
获取子账号 AK/SK 后,可以用子账号的身份,使用各类七牛产品的 API:
| 产品 | API 概览 | 计量 API |
| ------- | ----------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 对象存储 | [API 概览\_API 文档\_对象存储 - 七牛开发者中心](/products/kodo/3939-overview-of-the-api) | [空间统计信息 API](/products/kodo/1-statistic-interface) |
| CDN | [域名相关\_API 文档\_CDN - 七牛开发者中心](/products/cdn/4-fusion-api-domain-management) | [流量带宽\_API 文档\_CDN - 七牛开发者中心](/products/cdn/6-fusion-api-usage-stats) |
| 直播云miku | [创建流\_API 文档\_直播云 - 七牛开发者中心](/products/mikustream/mikustream-live-stream-api/0-mikustream-live-stream-create-api) | [查询直播上行流量](/products/mikustream/mikustream-live-statistics-api/3-mikustream-live-log-upflow-api)、 [查询直播下行流量](/products/mikustream/mikustream-live-statistics-api/4-mikustream-live-log-downflow-api) |
| 视频监控 | [API概述\_API 文档\_视频监控 - 七牛开发者中心](/products/qvs/0-summary-of-the-api) | [查询流量数据\_API 文档\_视频监控 - 七牛开发者中心](/products/qvs/data/0-query-the-network-traffic-data) |
| 智能多媒体服务 | [数据处理机制介绍\_API 文档\_智能多媒体服务 - 七牛开发者中心](/products/dora/processing-mechanism/1-directions-for-use-pfop) | Dora 计量接口\_API 文档\_智能多媒体服务 - 七牛开发者中心 |
| 内容审核 | [API调用图片审核\_API 文档\_内容审核 - 七牛开发者中心](/products/censor/image-censor) | 暂无(即将上线) |
## 使用示例 [#使用示例]
* Java 示例: [https://github.com/liangchao07115/qiniu-accountManager.git](https://github.com/liangchao07115/qiniu-accountManager.git)
# 冻结服务解释 (/products/af/manual/4162-freeze-service)
最近更新时间: 2026-05-08 18:29:52
**余额**
余额为客户 Portal 中看到的金额,包含现金金额及赠送金金额。

**已出账未扣费**
已经有账单,但是账单未扣费。
**已使用未出账**
已经使用但是并未在账单中体现的费用。例如目前七牛的很多账单为月粒度结算,也就是当月使用需要当月结束后才会体现在账单中,则未在账单体现钱
**欠费**
例如,假设时间为 2018.2.6,余额 1000 元,可以查到 2018.1 月账单 1500 元状态为未扣费,另还有 2018.2.1\~2018.2.6 的使用量未出账单,假设为未出账费用系统算出为 200 元。则用户实际费用 = 余额 - 已出账未扣费 - 已使用未出账 = 1000 - 1500 - 200 = -700 元,即用户欠费 700 元。
**最低充值金额**
最低充值金额为客户欠费的绝对值。当客户收到 24 小时后将被冻结的预警邮件后,需要至少按照最低充值金额充值,才不会在 24 小时后被冻结。
但是非常不建议完全依照该值充值,因为该值为收到冻结预警时刻的欠费金额,经过一天的使用又会在此基础上产生新的使用费用。
例如客户在 2.6 早上 9:10 收到 24 小时后冻结告知邮件,欠费 700 元,最低充值金额为 700 元。客户收到邮件后继续使用七牛服务,并照此充值 700 元。则到 2.7 日 9:10,客户不会被冻结。但是因为 2.7 的使用又产生了额外的费用,例如新增 100 元消费。则客户又将在 2.7 收到信的冻结告知邮件,通知将在 2.8 日将被冻结,最低充值金额为 100 元。
因此,最低充值金额只是一个门槛,但是不建议完全按照最低充值金额充值。
**建议充值金额**
建议充值金额为计算用户最近两月的平均消费,预估三个月费用。
# API 通用约定 (/products/agentapi/api/13618-agentapi-api-conventions)
最近更新时间: 2026-10-13 17:21:31
本页供查阅公共 API 的请求约定、资源范围和事件类型。完整请求与响应字段以 [OpenAPI 规范](/products/agentapi/api/13619-agentapi-openapi)为准;首次接入的任务流程见[通过 API 构建](/products/agentapi/quick_start/13587-agentapi-quickstart),按能力使用接口的步骤见下表中的使用指南。
AgentAPI 公共 API 会随版本更新增加资源和字段。客户端应忽略响应中的未知字段,并处理错误响应和事件中可选字段缺失的情况。
## 请求约定 [#请求约定]
### 服务地址和认证 [#服务地址和认证]
AgentAPI 服务地址按区域选择,并通过环境变量传入:
```bash
export AGENTAPI_BASE_URL="https://your-agentapi-endpoint"
export AGENTAPI_API_KEY="your-maas-api-key"
```
`/v1/*` 请求使用七牛 MaaS API Key 鉴权。推荐使用 `x-api-key` 请求头;JSON 请求还应设置 `content-type: application/json`。
```bash
curl --request GET "$AGENTAPI_BASE_URL/v1/agents" \
--header "x-api-key: $AGENTAPI_API_KEY"
```
### 资源范围 [#资源范围]
AgentAPI 当前提供以下资源 API:
| 资源 | 主要路径 | 使用指南 |
| ----- | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 智能体 | `/v1/agents` | [创建与管理智能体](/products/agentapi/development_guidelines/agentapi-agent-configuration/13590-agentapi-agent-configuration-agent) |
| 环境 | `/v1/environments` | [配置云端环境](/products/agentapi/development_guidelines/agentapi-execution-environments/13608-agentapi-execution-environments-environment)、[自托管执行器](/products/agentapi/development_guidelines/agentapi-execution-environments/13614-agentapi-execution-environments-self-hosted) |
| 会话 | `/v1/sessions` | [创建会话](/products/agentapi/development_guidelines/agentapi-sessions-and-tasks/13596-agentapi-sessions-and-tasks-session)、[会话操作](/products/agentapi/development_guidelines/agentapi-sessions-and-tasks/13598-agentapi-sessions-and-tasks-session-lifecycle) |
| 会话事件 | `/v1/sessions/{id}/events` | [事件和事件流](/products/agentapi/development_guidelines/agentapi-sessions-and-tasks/13597-agentapi-sessions-and-tasks-events) |
| 文件 | `/v1/files` | [附加和下载文件](/products/agentapi/development_guidelines/agentapi-data-and-integrations/13602-agentapi-data-and-integrations-files) |
| 技能 | `/v1/skills` | [Agent Skills](/products/agentapi/development_guidelines/agentapi-agent-configuration/13594-agentapi-agent-configuration-skills) |
| 凭证保管库 | `/v1/vaults` | [凭证管理](/products/agentapi/development_guidelines/agentapi-data-and-integrations/13606-agentapi-data-and-integrations-vaults) |
| 持久记忆 | `/v1/memory_stores` | [构建持久记忆](/products/agentapi/development_guidelines/agentapi-data-and-integrations/13603-agentapi-data-and-integrations-memory) |
| 定时部署 | `/v1/deployments` | [定时部署](/products/agentapi/development_guidelines/agentapi-sessions-and-tasks/13600-agentapi-sessions-and-tasks-scheduled-deployments) |
| 部署运行 | `/v1/deployment_runs` | [查询运行结果](/products/agentapi/development_guidelines/agentapi-sessions-and-tasks/13600-agentapi-sessions-and-tasks-scheduled-deployments) |
### 响应和分页 [#响应和分页]
* 成功响应使用 JSON;删除操作可能返回 `204 No Content`。
* 所有响应都包含 `X-Trace-ID`,可用于关联请求日志。
* 智能体、环境、会话、事件、技能、保管库、记忆和部署列表使用 `{ "data": [...], "next_page": "..." }`。将 `next_page` 原样作为下一次请求的 `page` 参数,不要自行解析或修改;没有更多数据时该字段为 `null`。
* Files API 使用另一种游标格式:`{ "data": [...], "has_more": true, "first_id": "...", "last_id": "...", "next_page": "..." }`。有下一页时优先把响应中的 `next_page` 原样作为 `page` 查询参数传回;兼容旧客户端的 `after_id` 和 `before_id` 仍可使用,但不能把 `last_id` 直接当作 `page`。
* 列表接口默认返回 20 条,具体上限以接口定义为准;Files API 的 `limit` 最大为 1,000,部署运行列表最多返回 1,000 条。
* 时间字段使用 RFC 3339 格式。
### 常见错误 [#常见错误]
| 状态码 | 含义 |
| ----- | ----------------- |
| `400` | 请求体、查询参数或事件格式无效 |
| `401` | API Key 缺失或无效 |
| `404` | 资源不存在,或不属于当前账户 |
| `409` | 资源状态不允许当前操作,例如已归档 |
| `503` | 依赖的运行时或服务暂时不可用 |
## 事件类型 [#事件类型]
会话事件通过 `POST /v1/sessions/{id}/events` 写入,通过事件列表或 SSE 接口读取。用户消息的结构化内容使用 `input.parts`,详见 [事件和事件流](/products/agentapi/development_guidelines/agentapi-sessions-and-tasks/13597-agentapi-sessions-and-tasks-events)。
### 用户事件 [#用户事件]
| 类型 | 描述 |
| ------------------------- | -------------- |
| `user.message` | 发送文本、图像或文件输入 |
| `user.interrupt` | 中断当前执行 |
| `user.custom_tool_result` | 返回自定义工具的执行结果 |
| `user.tool_confirmation` | 批准或拒绝需要确认的工具调用 |
| `user.define_outcome` | 定义需要智能体完成的结果 |
### 智能体事件 [#智能体事件]
| 类型 | 描述 |
| ----------------------- | ------------ |
| `agent.message` | 智能体输出 |
| `agent.thinking` | 智能体正在处理的进度信号 |
| `agent.tool_use` | 调用内置工具 |
| `agent.tool_result` | 内置工具返回结果 |
| `agent.mcp_tool_use` | 调用 MCP 工具 |
| `agent.mcp_tool_result` | MCP 工具返回结果 |
| `agent.custom_tool_use` | 调用应用提供的自定义工具 |
### 会话状态事件 [#会话状态事件]
| 类型 | 描述 |
| ---------------------------- | ------------- |
| `session.status_running` | 会话正在执行 |
| `session.status_idle` | 当前轮次完成或等待用户操作 |
| `session.status_rescheduled` | 会话将在稍后重试 |
| `session.status_terminated` | 会话已终止 |
| `session.deleted` | 会话已删除 |
| `session.updated` | 会话配置已更新 |
| `session.error` | 会话执行发生错误 |
`session.status_idle` 表示当前轮次暂停或结束执行,不能作为任务成功的唯一依据。请读取其 `stop_reason.type`,确认停止原因:
| `stop_reason.type` | 含义 |
| ------------------- | --------------------------------------------------- |
| `end_turn` | 正常完成当前轮次,或 `native` 本轮被中断;需结合 `user.interrupt` 事件区分 |
| `interrupted` | `claudecode`、`codex` 本轮被 `user.interrupt` 中断 |
| `requires_action` | 等待工具结果或工具确认;按 `event_ids` 处理后会恢复执行 |
| `retries_exhausted` | 瞬时失败重试次数耗尽;请结合相邻的 `session.error` 排查 |
| `budget_reached` | Native 本轮执行达到限制;核对已完成的部分后决定是否继续 |
### Span 事件 [#span-事件]
Span 事件用于标记模型请求或结果评估的开始、进行中和结束:
* `span.model_request_start`、`span.model_request_end`
* `span.outcome_evaluation_start`、`span.outcome_evaluation_ongoing`、`span.outcome_evaluation_end`
### 系统事件 [#系统事件]
* `system.message`:为当前及后续轮次追加系统级指导。
## 支持的 MCP 服务器类型 [#支持的-mcp-服务器类型]
AgentAPI 支持在智能体上配置远程 MCP 服务器。服务器端点和工具权限通过 [MCP 连接器](/products/agentapi/development_guidelines/agentapi-agent-configuration/13592-agentapi-agent-configuration-mcp) 配置。`claudecode` 和 `codex` 从会话沙箱连接 MCP 服务;`native` 由 AgentAPI 服务端连接,但仍会校验会话环境的网络配置。使用 `limited` 网络时,MCP 服务主机必须包含在 `allowed_hosts` 中。Native 中显式设置 `allow_mcp_servers: false` 会禁止 MCP 工具接入;设置为 `true` 不会绕过主机白名单。
## 相关页面 [#相关页面]
* [事件和事件流](/products/agentapi/development_guidelines/agentapi-sessions-and-tasks/13597-agentapi-sessions-and-tasks-events):发送事件、读取历史和建立 SSE 连接。
* [使用 SDK](/products/agentapi/quick_start/13587-agentapi-quickstart):配置客户端并传入 AgentAPI 扩展字段。
# OpenAPI 规范 (/products/agentapi/api/13619-agentapi-openapi)
最近更新时间: 2026-10-14 14:03:34
完整请求、响应字段和数据结构见 [下载 OpenAPI YAML](https://dn-odum9helk.qbox.me/FvPJkqgApx2DcsC4EdR9Ym2mYv_t)。该文件可导入支持 OpenAPI 的接口工具。
## 接口索引 [#接口索引]
| 方法 | 路径 | 说明 |
| ------ | -------------------------------------------------------------------------------- | ----------------------------------- |
| GET | `/v1/agents` | List agents |
| POST | `/v1/agents` | Create agent |
| DELETE | `/v1/agents/{id}` | Delete agent |
| GET | `/v1/agents/{id}` | Get agent |
| PATCH | `/v1/agents/{id}` | Patch agent |
| POST | `/v1/agents/{id}` | Update agent |
| POST | `/v1/agents/{id}/archive` | Archive agent |
| GET | `/v1/agents/{id}/versions` | List agent versions |
| GET | `/v1/deployment_runs` | List deployment runs |
| GET | `/v1/deployment_runs/{deployment_run_id}` | Get deployment run |
| GET | `/v1/deployments` | List deployments |
| POST | `/v1/deployments` | Create deployment |
| GET | `/v1/deployments/{deployment_id}` | Get deployment |
| POST | `/v1/deployments/{deployment_id}` | Update deployment |
| POST | `/v1/deployments/{deployment_id}/archive` | Archive deployment |
| POST | `/v1/deployments/{deployment_id}/pause` | Pause deployment |
| POST | `/v1/deployments/{deployment_id}/run` | Run deployment now |
| POST | `/v1/deployments/{deployment_id}/unpause` | Unpause deployment |
| GET | `/v1/environments` | List environments |
| POST | `/v1/environments` | Create environment |
| GET | `/v1/environments/{environment_id}/work` | List self-hosted work |
| GET | `/v1/environments/{environment_id}/work/poll` | Poll self-hosted environment work |
| GET | `/v1/environments/{environment_id}/work/stats` | Get self-hosted work queue stats |
| GET | `/v1/environments/{environment_id}/work/{work_id}` | Get self-hosted work |
| POST | `/v1/environments/{environment_id}/work/{work_id}` | Update self-hosted work metadata |
| POST | `/v1/environments/{environment_id}/work/{work_id}/ack` | Acknowledge self-hosted work |
| POST | `/v1/environments/{environment_id}/work/{work_id}/heartbeat` | Heartbeat self-hosted work |
| POST | `/v1/environments/{environment_id}/work/{work_id}/stop` | Stop self-hosted work |
| DELETE | `/v1/environments/{id}` | Delete environment |
| GET | `/v1/environments/{id}` | Get environment |
| POST | `/v1/environments/{id}` | Update environment |
| POST | `/v1/environments/{id}/archive` | Archive environment |
| GET | `/v1/files` | List files |
| POST | `/v1/files` | Upload file |
| DELETE | `/v1/files/{id}` | Delete file |
| GET | `/v1/files/{id}` | Get file metadata |
| GET | `/v1/files/{id}/content` | Download file content |
| GET | `/v1/memory_stores` | List memory stores |
| POST | `/v1/memory_stores` | Create memory store |
| DELETE | `/v1/memory_stores/{memory_store_id}` | Delete memory store |
| GET | `/v1/memory_stores/{memory_store_id}` | Get memory store |
| POST | `/v1/memory_stores/{memory_store_id}` | Update memory store |
| POST | `/v1/memory_stores/{memory_store_id}/archive` | Archive memory store |
| GET | `/v1/memory_stores/{memory_store_id}/memories` | List memories |
| POST | `/v1/memory_stores/{memory_store_id}/memories` | Create memory |
| DELETE | `/v1/memory_stores/{memory_store_id}/memories/{memory_id}` | Delete memory |
| GET | `/v1/memory_stores/{memory_store_id}/memories/{memory_id}` | Get memory |
| POST | `/v1/memory_stores/{memory_store_id}/memories/{memory_id}` | Update memory |
| GET | `/v1/memory_stores/{memory_store_id}/memory_versions` | List memory versions |
| GET | `/v1/memory_stores/{memory_store_id}/memory_versions/{memory_version_id}` | Get memory version |
| POST | `/v1/memory_stores/{memory_store_id}/memory_versions/{memory_version_id}/redact` | Redact memory version |
| GET | `/v1/sessions` | List sessions |
| POST | `/v1/sessions` | Create session |
| DELETE | `/v1/sessions/{id}` | Delete session |
| GET | `/v1/sessions/{id}` | Get session |
| POST | `/v1/sessions/{id}` | Update session |
| POST | `/v1/sessions/{id}/archive` | Archive session |
| GET | `/v1/sessions/{id}/events` | List session events |
| POST | `/v1/sessions/{id}/events` | Send session events |
| GET | `/v1/sessions/{id}/events/stream` | Stream session events |
| GET | `/v1/sessions/{id}/resources` | List session resources |
| POST | `/v1/sessions/{id}/resources` | Add session resource |
| DELETE | `/v1/sessions/{id}/resources/{resource_id}` | Delete session resource |
| GET | `/v1/sessions/{id}/resources/{resource_id}` | Get session resource |
| POST | `/v1/sessions/{id}/resources/{resource_id}` | Update session resource |
| GET | `/v1/skills` | List skills |
| POST | `/v1/skills` | Create skill |
| DELETE | `/v1/skills/{skill_id}` | Delete skill |
| GET | `/v1/skills/{skill_id}` | Get skill |
| GET | `/v1/skills/{skill_id}/versions` | List skill versions |
| POST | `/v1/skills/{skill_id}/versions` | Create skill version |
| DELETE | `/v1/skills/{skill_id}/versions/{version}` | Delete skill version |
| GET | `/v1/skills/{skill_id}/versions/{version}` | Get skill version |
| GET | `/v1/skills/{skill_id}/versions/{version}/content` | Download skill version content |
| GET | `/v1/skills/{skill_id}/versions/{version}/files` | List skill version files |
| GET | `/v1/skills/{skill_id}/versions/{version}/files/content` | Download skill version file content |
| GET | `/v1/vaults` | List vaults |
| POST | `/v1/vaults` | Create vault |
| DELETE | `/v1/vaults/{vault_id}` | Delete vault |
| GET | `/v1/vaults/{vault_id}` | Get vault |
| POST | `/v1/vaults/{vault_id}` | Update vault |
| POST | `/v1/vaults/{vault_id}/archive` | Archive vault |
| GET | `/v1/vaults/{vault_id}/credentials` | List credentials |
| POST | `/v1/vaults/{vault_id}/credentials` | Create credential |
| DELETE | `/v1/vaults/{vault_id}/credentials/{credential_id}` | Delete credential |
| GET | `/v1/vaults/{vault_id}/credentials/{credential_id}` | Get credential |
| POST | `/v1/vaults/{vault_id}/credentials/{credential_id}` | Update credential |
| POST | `/v1/vaults/{vault_id}/credentials/{credential_id}/archive` | Archive credential |
# 计费说明 (/products/agentapi/buying_guide/13623-agentapi-billing-instructions)
最近更新时间: 2026-10-16 09:58:23
AgentAPI 的费用按实际使用情况计量,现阶段限时免费。
* **模型调用费用**:模型调用使用七牛云大模型推理服务,按实际 Token 用量及所选模型价格计费。具体模型价格请以[七牛云大模型推理服务模型列表](https://portal.qiniu.com/ai-inference/model)为准。
* **AgentAPI 服务费**:现阶段限时免费,暂不收取服务费。
## 模型调用费用 [#模型调用费用]
一个任务可能包含多次模型调用,费用会随着实际模型用量产生。实际费用取决于模型调用产生的 Token 用量和所选模型的价格。
# 术语表 (/products/agentapi/glossary/13621-agentapi-glossary)
最近更新时间: 2026-10-13 17:20:58
| 术语 | 英文或字段 | 定义与详细说明 |
| ------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| MaaS | MaaS | 七牛大模型推理服务,提供模型调用与 API Key 管理。AgentAPI 使用 MaaS API Key 鉴权,见[接入准备](/products/agentapi/quick_start/13585-agentapi-access)。 |
| 智能体 | Agent | 可复用、带版本的模型、提示、工具与运行时配置。见[智能体](/products/agentapi/development_guidelines/agentapi-agent-configuration/13590-agentapi-agent-configuration-agent)。 |
| 智能体版本 | AgentVersion | 智能体的一份固定配置;已有会话继续引用固定版本。见[版本与会话](/products/agentapi/development_guidelines/agentapi-agent-configuration/13590-agentapi-agent-configuration-agent)。 |
| 运行时 | `runtime` | 智能体的执行方式,可选择 `claudecode`、`codex` 或 `native`。见[运行时和模型](/products/agentapi/development_guidelines/agentapi-agent-configuration/13589-agentapi-agent-configuration-runtime-and-models)。 |
| 模型 | `model` | 执行推理与生成的模型配置。见[模型选择](/products/agentapi/development_guidelines/agentapi-agent-configuration/13589-agentapi-agent-configuration-runtime-and-models)。 |
| 环境 | Environment | 定义工具执行所需的软件与网络条件。见[云端环境](/products/agentapi/development_guidelines/agentapi-execution-environments/13608-agentapi-execution-environments-environment)和[自托管执行器](/products/agentapi/development_guidelines/agentapi-execution-environments/13614-agentapi-execution-environments-self-hosted)。 |
| 会话 | Session | 保存持续交互的历史、执行状态和文件,并引用固定的智能体版本。见[会话](/products/agentapi/development_guidelines/agentapi-sessions-and-tasks/13596-agentapi-sessions-and-tasks-session)。 |
| 执行轮次 | Turn | 会话中一次由输入触发的执行,可以包含多次模型请求和工具调用。见[任务与执行轮次](/products/agentapi/development_guidelines/agentapi-sessions-and-tasks/13596-agentapi-sessions-and-tasks-session)。 |
| 事件 | Event | 任务输入、智能体输出、工具活动或生命周期变化的记录。见[事件和事件流](/products/agentapi/development_guidelines/agentapi-sessions-and-tasks/13597-agentapi-sessions-and-tasks-events)。 |
| 事件流 | SSE | 通过持久 HTTP 连接回放历史并推送实时事件。见[订阅事件流](/products/agentapi/development_guidelines/agentapi-sessions-and-tasks/13597-agentapi-sessions-and-tasks-events)。 |
| 工具 | Tool | 智能体调用的执行能力,包括内置工具和应用提供的自定义工具。见[工具](/products/agentapi/development_guidelines/agentapi-agent-configuration/13591-agentapi-agent-configuration-tools)。 |
| MCP 连接器 | MCP | 通过 Model Context Protocol 接入远程工具服务。见[MCP 连接器](/products/agentapi/development_guidelines/agentapi-agent-configuration/13592-agentapi-agent-configuration-mcp)。 |
| 智能体技能 | Agent Skills | 按任务需要加载的工作说明和辅助文件。见[Agent Skills](/products/agentapi/development_guidelines/agentapi-agent-configuration/13594-agentapi-agent-configuration-skills)。 |
| 凭证保管库 | Vault | 管理会话使用的凭证及其注入配置。见[凭证管理](/products/agentapi/development_guidelines/agentapi-data-and-integrations/13606-agentapi-data-and-integrations-vaults)。 |
| 持久记忆 | Memory Store | 在会话之外管理可复用的记忆及其版本。见[构建持久记忆](/products/agentapi/development_guidelines/agentapi-data-and-integrations/13603-agentapi-data-and-integrations-memory)。 |
| 结果 | Outcome | 通过评分标准定义预期结果,供执行后的评估与修订使用。见[定义结果](/products/agentapi/development_guidelines/agentapi-sessions-and-tasks/13599-agentapi-sessions-and-tasks-outcomes)。 |
| 定时部署 | Deployment | 按计划或手动触发会话的配置。见[定时部署](/products/agentapi/development_guidelines/agentapi-sessions-and-tasks/13600-agentapi-sessions-and-tasks-scheduled-deployments)。 |
| 自托管执行器 | Worker | 领取自托管环境中的工作并回传执行结果的程序。见[自托管执行器](/products/agentapi/development_guidelines/agentapi-execution-environments/13614-agentapi-execution-environments-self-hosted)。 |
# 迁移到 AgentAPI (/products/agentapi/development_guidelines/13617-agentapi-migration)
最近更新时间: 2026-10-13 15:32:36
本页介绍从 OpenAI Responses API、LangChain 自定义循环及 Claude Managed Agents/Claude Agent SDK 迁移到 AgentAPI 的方法。
迁移后,应用管理智能体、云端环境、会话及业务状态;AgentAPI 在云端运行智能体循环、执行内置工具并保存事件。请先按下表确定迁移范围。
## 迁移范围 [#迁移范围]
| 原有架构 | 需要保留在应用中的内容 | 迁移到 AgentAPI 的内容 |
| ------------------------- | -------------------- | ----------------------------------------------------------------------------- |
| Claude Managed Agents API | 业务鉴权、业务状态和结果展示 | Base URL、MaaS API Key、Agent/Environment/Session 资源,以及 AgentAPI 的 `runtime` 扩展 |
| Claude Agent SDK(本地运行) | 业务工具实现、审批界面和业务数据 | 云端环境、会话事件流、文件/仓库资源;本地 SDK 的进程生命周期不再由应用管理 |
| OpenAI Responses API | 业务输入输出转换和自定义函数 | 智能体循环、内置工具执行、云端沙箱和事件持久化 |
| LangChain 自定义循环 | 检查点中的业务状态、自定义工具和业务超时 | 智能体版本、会话状态机和事件流 |
使用 CMA Session API 的应用,请先按[接入准备](/products/agentapi/quick_start/13585-agentapi-access)验证地址和 MaaS API Key,并核对三项差异:
* 智能体增加 AgentAPI 扩展字段 `runtime`。
* 结构化 HTTP 输入使用 `input.parts`。
* SDK 可能仍生成兼容字段 `content`。

## 从 OpenAI Responses API 迁移 [#从-openai-responses-api-迁移]
如果应用通过 `responses.create` 调用模型、遍历函数调用并将 `function_call_output` 追加到下一轮输入,那么应用本身承担了智能体循环的职责。迁移到 AgentAPI 后,这部分循环和内置工具执行可以交给云端服务。

### 执行职责迁移 [#执行职责迁移]
| 之前 | 之后 |
| -------------------------------------------------------- | ---------------------------------------------------------------- |
| 应用维护 Responses 输入,并在每轮调用中传递已有输出或 `previous_response_id`。 | AgentAPI 在服务端保存会话历史;应用只需发送和接收事件。 |
| 应用遍历 `function_call`,执行函数,再追加 `function_call_output`。 | 文件和命令工具在云端沙箱中执行;网页工具按运行时执行。应用通过 `agent.custom_tool_use` 处理自定义工具。 |
| 应用自行准备沙箱,运行智能体生成的代码。 | AgentAPI 根据云端环境配置准备沙箱,并在其中执行代码、文件操作和 Bash 命令。 |
| 应用自行判断智能体循环何时结束。 | AgentAPI 通过状态事件报告本轮停止,应用需检查停止原因、错误与业务结果。 |
### 代码对比 [#代码对比]
迁移前(简化的 Responses API 函数调用循环):
Python
```python
import json
input_items = [{"role": "user", "content": task}]
while True:
response = client.responses.create(
model="gpt-5.6",
input=input_items,
tools=tools,
)
input_items.extend(response.output)
function_calls = [item for item in response.output if item.type == "function_call"]
if not function_calls:
break
for call in function_calls:
result = execute_tool(call.name, json.loads(call.arguments))
input_items.append(
{
"type": "function_call_output",
"call_id": call.call_id,
"output": result,
}
)
```
TypeScript
```typescript
const input: any[] = [{ role: "user", content: task }];
while (true) {
const response = await client.responses.create({
model: "gpt-5.6",
input,
tools
});
input.push(...response.output);
const functionCalls = response.output.filter(
(item) => item.type === "function_call"
);
if (functionCalls.length === 0) {
break;
}
for (const call of functionCalls) {
const result = await executeTool(call.name, JSON.parse(call.arguments));
input.push({
type: "function_call_output",
call_id: call.call_id,
output: result
});
}
}
```
迁移后(AgentAPI):
以下示例假设已按照[接入准备](/products/agentapi/quick_start/13585-agentapi-access)配置 SDK 客户端,并创建了云端环境。智能体和云端环境可以跨多个会话复用。
以下内置工具示例显式选择 `native`。模型从 `AGENTAPI_MODEL_ID` 读取,请先在[七牛 MaaS 模型管理页](https://portal.qiniu.com/ai-inference/model)获取模型 ID,并确认所用 Key 在所选区域可调用该模型。SDK 通过扩展请求参数传入运行时,客户端初始化见[通过 API 构建](/products/agentapi/quick_start/13587-agentapi-quickstart)。
cURL
```bash
TASK="${TASK:-请分析当前项目并给出改进建议。}"
agent=$(
curl --fail-with-body -sS "$AGENTAPI_BASE_URL/v1/agents" \
-H "x-api-key: $AGENTAPI_API_KEY" \
-H "content-type: application/json" --data @- < "${stream_log}" &
stream_pid=$!
curl --fail-with-body -sS \
"$AGENTAPI_BASE_URL/v1/sessions/${session_id}/events" \
-H "x-api-key: $AGENTAPI_API_KEY" \
-H "content-type: application/json" --data "$(jq -n --arg text "${TASK}" \
'{events: [{type: "user.message", input: {parts: [{type: "text", text: $text}]}}]}')" \
> /dev/null
# 等待会话进入空闲状态。grep 在首次匹配时退出,并且
# 通过进程替换读取意味着 shell 不会等待
# tail(前台的 `tail -f | grep -m1` 管道会挂起:tail
# 只会在下一次写入时终止,而流空闲后不会再有写入)。
grep -m1 '"session.status_idle"' <(tail -f -n +1 "${stream_log}") > /dev/null
kill "${stream_pid}" 2>/dev/null || true
rm -f "${stream_log}"
```
Python
```python
import os
agent = client.beta.agents.create(
name="任务执行助手",
model={"id": os.environ["AGENTAPI_MODEL_ID"]},
tools=[{"type": "agent_toolset_20260401"}],
extra_body={"runtime": "native"},
)
session = client.beta.sessions.create(
agent={"type": "agent", "id": agent.id, "version": agent.version},
environment_id=environment.id,
)
with client.beta.sessions.events.stream(session.id) as stream:
client.beta.sessions.events.send(
session.id,
events=[{"type": "user.message", "content": [{"type": "text", "text": task}]}],
)
for event in stream:
if event.type == "session.status_idle":
break
```
TypeScript
````typescript
const agentParams = {
name: "任务执行助手",
model: { id: process.env.AGENTAPI_MODEL_ID! },
tools: [{ type: "agent_toolset_20260401" }]
} satisfies Parameters[0];
const agent = await client.beta.agents.create(agentParams, {
body: { ...agentParams, runtime: "native" },
});
const session = await client.beta.sessions.create({
agent: { type: "agent", id: agent.id, version: agent.version },
environment_id: environment.id
});
const stream = await client.beta.sessions.events.stream(session.id);
await client.beta.sessions.events.send(session.id, {
events: [
{
type: "user.message",
content: [{ type: "text", text: task }]
}
]
});
for await (const event of stream) {
if (event.type === "session.status_idle") {
break;
}
}
```csharp
```csharp
using Anthropic.Models.Beta.Agents;
using System.Text.Json;
using System.Linq;
var agentParams = new AgentCreateParams
{
Name = "任务执行助手",
Model = new BetaManagedAgentsModelConfigParams { ID = System.Environment.GetEnvironmentVariable("AGENTAPI_MODEL_ID")! },
Tools =
[
new BetaManagedAgentsAgentToolset20260401Params
{
Type = "agent_toolset_20260401",
},
],
};
var agentBody = agentParams.RawBodyData.ToDictionary(entry => entry.Key, entry => entry.Value);
agentBody["runtime"] = JsonSerializer.SerializeToElement("native");
agentParams = AgentCreateParams.FromRawUnchecked(
agentParams.RawHeaderData, agentParams.RawQueryData, agentBody);
var agent = await client.Beta.Agents.Create(agentParams);
var session = await client.Beta.Sessions.Create(new()
{
Agent = new BetaManagedAgentsAgentParams
{
Type = "agent",
ID = agent.ID,
Version = agent.Version,
},
EnvironmentID = environment.ID,
});
var stream = client.Beta.Sessions.Events.StreamStreaming(session.ID);
await client.Beta.Sessions.Events.Send(session.ID, new()
{
Events =
[
new BetaManagedAgentsUserMessageEventParams
{
Type = "user.message",
Content = [new BetaManagedAgentsTextBlock { Type = "text", Text = task }],
},
],
});
await foreach (var streamEvent in stream)
{
if (streamEvent.Value is BetaManagedAgentsSessionStatusIdleEvent)
{
break;
}
}
````
Go
```go
agent, err := client.Beta.Agents.New(ctx, anthropic.BetaAgentNewParams{
Name: "任务执行助手",
Model: anthropic.BetaManagedAgentsModelConfigParams{
ID: os.Getenv("AGENTAPI_MODEL_ID"),
},
Tools: []anthropic.BetaAgentNewParamsToolUnion{{
OfAgentToolset20260401: &anthropic.BetaManagedAgentsAgentToolset20260401Params{
Type: anthropic.BetaManagedAgentsAgentToolset20260401ParamsTypeAgentToolset20260401,
},
}},
}, option.WithJSONSet("runtime", "native"))
if err != nil {
log.Fatal(err)
}
session, err := client.Beta.Sessions.New(ctx, anthropic.BetaSessionNewParams{
Agent: anthropic.BetaSessionNewParamsAgentUnion{
OfBetaManagedAgentsAgents: &anthropic.BetaManagedAgentsAgentParams{
Type: anthropic.BetaManagedAgentsAgentParamsTypeAgent,
ID: agent.ID,
Version: anthropic.Int(agent.Version),
},
},
EnvironmentID: environment.ID,
})
if err != nil {
log.Fatal(err)
}
stream := client.Beta.Sessions.Events.StreamEvents(ctx, session.ID, anthropic.BetaSessionEventStreamParams{})
defer stream.Close()
_, err = client.Beta.Sessions.Events.Send(ctx, session.ID, anthropic.BetaSessionEventSendParams{
Events: []anthropic.BetaManagedAgentsEventParamsUnion{{
OfUserMessage: &anthropic.BetaManagedAgentsUserMessageEventParams{
Type: anthropic.BetaManagedAgentsUserMessageEventParamsTypeUserMessage,
Content: []anthropic.BetaManagedAgentsUserMessageEventParamsContentUnion{{
OfText: &anthropic.BetaManagedAgentsTextBlockParam{
Type: anthropic.BetaManagedAgentsTextBlockTypeText,
Text: task,
},
}},
},
}},
})
if err != nil {
log.Fatal(err)
}
for stream.Next() {
event := stream.Current()
if event.Type == "session.status_idle" {
break
}
}
if err := stream.Err(); err != nil {
log.Fatal(err)
}
```
Java
```java
var agent = client.beta().agents().create(
AgentCreateParams.builder()
.putAdditionalBodyProperty("runtime", com.anthropic.core.JsonValue.from("native"))
.name("任务执行助手")
.model(BetaManagedAgentsModelConfigParams.builder().id(System.getenv("AGENTAPI_MODEL_ID")).build())
.addTool(
BetaManagedAgentsAgentToolset20260401Params.builder()
.type(BetaManagedAgentsAgentToolset20260401Params.Type.AGENT_TOOLSET_20260401)
.build()
)
.build()
);
var session = client.beta().sessions().create(
SessionCreateParams.builder()
.agent(
BetaManagedAgentsAgentParams.builder()
.type(BetaManagedAgentsAgentParams.Type.AGENT)
.id(agent.id())
.version(agent.version())
.build()
)
.environmentId(environment.id())
.build()
);
try (var stream = client.beta().sessions().events().streamStreaming(session.id())) {
client.beta().sessions().events().send(
session.id(),
EventSendParams.builder()
.addEvent(
BetaManagedAgentsUserMessageEventParams.builder()
.type(BetaManagedAgentsUserMessageEventParams.Type.USER_MESSAGE)
.addTextContent(task)
.build()
)
.build()
);
stream.stream()
.takeWhile(event -> !event.isSessionStatusIdle())
.forEach(_ -> {});
}
```
PHP
```php
$agent = $client->beta->agents->create(
name: '任务执行助手',
model: ['id' => getenv('AGENTAPI_MODEL_ID')],
tools: [
BetaManagedAgentsAgentToolset20260401Params::with(
type: 'agent_toolset_20260401',
),
],
requestOptions: ['extraBodyParams' => ['runtime' => 'native']],
);
$session = $client->beta->sessions->create(
agent: BetaManagedAgentsAgentParams::with(
type: 'agent',
id: $agent->id,
version: $agent->version,
),
environmentID: $environment->id,
);
$stream = $client->beta->sessions->events->streamStream($session->id);
$client->beta->sessions->events->send(
$session->id,
events: [
[
'type' => 'user.message',
'content' => [['type' => 'text', 'text' => $task]],
],
],
);
foreach ($stream as $event) {
if ($event->type === 'session.status_idle') {
break;
}
}
```
Ruby
```ruby
agent = client.beta.agents.create(
name: "任务执行助手",
model: {id: ENV.fetch("AGENTAPI_MODEL_ID")},
tools: [{type: "agent_toolset_20260401"}],
request_options: {extra_body: {runtime: "native"}}
)
session = client.beta.sessions.create(
agent: {type: "agent", id: agent.id, version: agent.version},
environment_id: environment.id
)
stream = client.beta.sessions.events.stream_events(session.id)
client.beta.sessions.events.send_(
session.id,
events: [{type: "user.message", content: [{type: "text", text: task}]}]
)
stream.each do
break if it.type == :"session.status_idle"
end
```
### 应用职责 [#应用职责]
* 系统提示和模型: 仍由应用决定,但配置从单次模型请求移到智能体定义中。
* 自定义工具: 仍然使用 JSON Schema 声明。执行方式从循环内直接调用,改为处理 `agent.custom_tool_use` 事件并返回结果。请参阅[事件和事件流](/products/agentapi/development_guidelines/agentapi-sessions-and-tasks/13597-agentapi-sessions-and-tasks-events)。
* 网页访问: `claudecode` 和 `codex` 使用各自运行时提供的网页能力;`native` 提供 `web_search` 和 `web_fetch`,由 AgentAPI 执行,不在自托管 worker 上运行。
* 任务上下文: 可以通过系统提示、[文件资源](/products/agentapi/development_guidelines/agentapi-data-and-integrations/13602-agentapi-data-and-integrations-files)或[技能](/products/agentapi/development_guidelines/agentapi-agent-configuration/13594-agentapi-agent-configuration-skills)向智能体提供上下文。
## 从基于 LangChain 的自定义智能体循环迁移 [#从基于-langchain-的自定义智能体循环迁移]
如果应用使用 LangChain 的模型和工具抽象,但通过 `bind_tools` 或 `bindTools` 自行维护消息列表、分派工具并控制循环结束条件,那么迁移方式与直接调用模型类似。主要变化是将这套循环交给 AgentAPI 在云端运行,并将原有配置映射为智能体、云端环境、会话和事件。

### 架构映射 [#架构映射]
| LangChain 智能体循环 | AgentAPI |
| -------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 使用 `model.bind_tools(...)` 或 `model.bindTools(...)` 绑定工具 | 在[智能体定义](/products/agentapi/development_guidelines/agentapi-agent-configuration/13590-agentapi-agent-configuration-agent)中配置工具,AgentAPI 在服务端保存配置并管理版本。 |
| 应用保存消息列表并反复调用 `model.invoke(...)` | 创建会话并发送用户事件;AgentAPI 保存会话历史并运行智能体循环。 |
| 应用读取 `tool_calls`、执行工具并追加 `ToolMessage` | 内置工具由 AgentAPI 在云端沙箱中执行;自定义工具通过 `agent.custom_tool_use` 和 `user.custom_tool_result` 事件衔接。 |
| 本地工具直接访问应用所在机器的文件系统 | 将[文件](/products/agentapi/development_guidelines/agentapi-data-and-integrations/13602-agentapi-data-and-integrations-files)作为会话资源上传或挂载;智能体在隔离的云端沙箱中处理文件。 |
| 每次调用时传入系统提示和模型配置 | 在智能体的 `system` 和 `model` 中配置;更新智能体时生成新版本。 |
| 应用自行保存检查点并恢复消息历史 | AgentAPI 持久保存会话和事件;应用通过会话 ID 继续交互。 |
| 应用在循环中实现工具确认逻辑 | 使用 [`permission_policy`](/products/agentapi/development_guidelines/agentapi-agent-configuration/13593-agentapi-agent-configuration-permissions) 控制工具是否需要确认,并通过 `user.tool_confirmation` 返回选择。 |
### 代码对比 [#代码对比-1]
迁移前(使用 LangChain 自行维护工具调用循环):
Python
```python
from langchain.chat_models import init_chat_model
from langchain.tools import tool
@tool
def get_weather(city: str) -> str:
"""查询城市当前的天气。"""
return f"{city}:18°C,晴"
model = init_chat_model("openai:gpt-5.6")
model_with_tools = model.bind_tools([get_weather])
messages = [{"role": "user", "content": "东京天气怎么样?"}]
while True:
response = model_with_tools.invoke(messages)
messages.append(response)
if not response.tool_calls:
print(response.text)
break
for tool_call in response.tool_calls:
messages.append(get_weather.invoke(tool_call))
```
TypeScript
```typescript
import { initChatModel, tool } from "langchain";
import { z } from "zod";
const getWeather = tool(
({ city }) => `${city}:18°C,晴`,
{
name: "get_weather",
description: "查询城市当前的天气。",
schema: z.object({ city: z.string() })
}
);
const model = await initChatModel("openai:gpt-5.6");
const modelWithTools = model.bindTools([getWeather]);
const messages: any[] = [{ role: "user", content: "东京天气怎么样?" }];
while (true) {
const response = await modelWithTools.invoke(messages);
messages.push(response);
if (!response.tool_calls?.length) {
console.log(response.text);
break;
}
for (const toolCall of response.tool_calls) {
if (toolCall.name === getWeather.name) {
messages.push(await getWeather.invoke(toolCall));
}
}
}
```
迁移后(AgentAPI):
下面选择 `native`,由应用处理天气查询工具并回传结果。天气数据在示例中由本地函数返回;接入真实服务时,在该函数中完成鉴权、参数校验、超时和错误处理。
Python
```python
import os
from anthropic import Anthropic
client = Anthropic(
api_key=os.environ["AGENTAPI_API_KEY"],
base_url=os.environ["AGENTAPI_BASE_URL"],
)
agent = client.beta.agents.create(
name="天气助手",
model={"id": os.environ["AGENTAPI_MODEL_ID"]},
system="你是一名简洁、准确的天气助手。",
tools=[
{
"type": "custom",
"name": "get_weather",
"description": "查询城市当前的天气。",
"input_schema": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
}
],
extra_body={"runtime": "native"},
)
environment = client.beta.environments.create(
name="weather-env",
config={"type": "cloud", "networking": {"type": "unrestricted"}},
)
session = client.beta.sessions.create(
agent={"type": "agent", "id": agent.id, "version": agent.version},
environment_id=environment.id,
)
def get_weather(city: str) -> str:
return f"{city}:18°C,晴"
with client.beta.sessions.events.stream(session.id) as stream:
client.beta.sessions.events.send(
session.id,
events=[
{
"type": "user.message",
"content": [{"type": "text", "text": "东京天气怎么样?"}],
}
],
)
for event in stream:
if event.type == "agent.message":
print(
"".join(block.text for block in event.content if block.type == "text")
)
elif event.type == "agent.custom_tool_use":
result = get_weather(**event.input)
client.beta.sessions.events.send(
session.id,
events=[
{
"type": "user.custom_tool_result",
"custom_tool_use_id": event.id,
"content": [{"type": "text", "text": result}],
}
],
)
elif (
event.type == "session.status_idle"
and event.stop_reason
and event.stop_reason.type == "end_turn"
):
break
```
TypeScript
````typescript
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: process.env.AGENTAPI_API_KEY!,
baseURL: process.env.AGENTAPI_BASE_URL,
});
const agentParams = {
name: "天气助手",
model: { id: process.env.AGENTAPI_MODEL_ID! },
system: "你是一名简洁、准确的天气助手。",
tools: [
{
type: "custom",
name: "get_weather",
description: "查询城市当前的天气。",
input_schema: {
type: "object",
properties: { city: { type: "string" } },
required: ["city"]
}
}
]
} satisfies Parameters[0];
const agent = await client.beta.agents.create(agentParams, {
body: { ...agentParams, runtime: "native" },
});
const environment = await client.beta.environments.create({
name: "weather-env",
config: { type: "cloud", networking: { type: "unrestricted" } }
});
const session = await client.beta.sessions.create({
agent: { type: "agent", id: agent.id, version: agent.version },
environment_id: environment.id
});
function getWeather({ city }: Record): string {
return `${city}:18°C,晴`;
}
const stream = await client.beta.sessions.events.stream(session.id);
await client.beta.sessions.events.send(session.id, {
events: [
{
type: "user.message",
content: [{ type: "text", text: "东京天气怎么样?" }]
}
]
});
for await (const event of stream) {
if (event.type === "agent.message") {
for (const block of event.content) {
if (block.type === "text") {
console.log(block.text);
}
}
} else if (event.type === "agent.custom_tool_use") {
const result = getWeather(event.input);
await client.beta.sessions.events.send(session.id, {
events: [
{
type: "user.custom_tool_result",
custom_tool_use_id: event.id,
content: [{ type: "text", text: result }]
}
]
});
} else if (event.type === "session.status_idle" && event.stop_reason?.type === "end_turn") {
break;
}
}
```csharp
```csharp
using System.Linq;
using System.Text.Json;
using Anthropic;
using Anthropic.Core;
using Anthropic.Models.Beta.Agents;
using Anthropic.Models.Beta.Environments;
using Anthropic.Models.Beta.Sessions;
using Anthropic.Models.Beta.Sessions.Events;
var client = new AnthropicClient(new ClientOptions
{
ApiKey = System.Environment.GetEnvironmentVariable("AGENTAPI_API_KEY")
?? throw new InvalidOperationException("AGENTAPI_API_KEY is required"),
BaseUrl = System.Environment.GetEnvironmentVariable("AGENTAPI_BASE_URL")
?? throw new InvalidOperationException("AGENTAPI_BASE_URL is required"),
});
var agentParams = new AgentCreateParams
{
Name = "天气助手",
Model = new BetaManagedAgentsModelConfigParams { ID = System.Environment.GetEnvironmentVariable("AGENTAPI_MODEL_ID")! },
System = "你是一名简洁、准确的天气助手。",
Tools =
[
new BetaManagedAgentsCustomToolParams
{
Type = "custom",
Name = "get_weather",
Description = "查询城市当前的天气。",
InputSchema = new()
{
Properties = new Dictionary
{
["city"] = JsonSerializer.SerializeToElement(new { type = "string" }),
},
Required = ["city"],
},
},
],
};
var agentBody = agentParams.RawBodyData.ToDictionary(entry => entry.Key, entry => entry.Value);
agentBody["runtime"] = JsonSerializer.SerializeToElement("native");
agentParams = AgentCreateParams.FromRawUnchecked(
agentParams.RawHeaderData, agentParams.RawQueryData, agentBody);
var agent = await client.Beta.Agents.Create(agentParams);
var environment = await client.Beta.Environments.Create(new()
{
Name = "weather-env",
Config = new BetaCloudConfigParams
{
Networking = new BetaUnrestrictedNetwork(),
},
});
var session = await client.Beta.Sessions.Create(new()
{
Agent = new BetaManagedAgentsAgentParams
{
Type = "agent",
ID = agent.ID,
Version = agent.Version,
},
EnvironmentID = environment.ID,
});
static string GetWeather(string city) => $"{city}:18°C,晴";
using var stream = await client.Beta.Sessions.Events.WithRawResponse.StreamStreaming(session.ID);
await client.Beta.Sessions.Events.Send(session.ID, new()
{
Events =
[
new BetaManagedAgentsUserMessageEventParams
{
Type = "user.message",
Content = [new BetaManagedAgentsTextBlock { Type = "text", Text = "东京天气怎么样?" }],
},
],
});
await foreach (var streamEvent in stream.Enumerate())
{
if (streamEvent.Value is BetaManagedAgentsAgentMessageEvent message)
{
Console.WriteLine(string.Concat(message.Content.Select(block => block.Text)));
}
else if (streamEvent.Value is BetaManagedAgentsAgentCustomToolUseEvent toolUse)
{
var result = GetWeather(toolUse.Input["city"].GetString()!);
await client.Beta.Sessions.Events.Send(session.ID, new()
{
Events =
[
new BetaManagedAgentsUserCustomToolResultEventParams
{
Type = "user.custom_tool_result",
CustomToolUseID = toolUse.ID,
Content =
[
new BetaManagedAgentsTextBlock
{
Type = "text",
Text = result,
},
],
},
],
});
}
else if (streamEvent.Value is BetaManagedAgentsSessionStatusIdleEvent idle
&& idle.StopReason?.Value is BetaManagedAgentsSessionEndTurn)
{
break;
}
}
````
Go
```go
client := anthropic.NewClient(
option.WithoutEnvironmentDefaults(),
option.WithBaseURL(os.Getenv("AGENTAPI_BASE_URL")),
option.WithAPIKey(os.Getenv("AGENTAPI_API_KEY")),
)
ctx := context.Background()
agent, err := client.Beta.Agents.New(ctx, anthropic.BetaAgentNewParams{
Name: "天气助手",
Model: anthropic.BetaManagedAgentsModelConfigParams{
ID: os.Getenv("AGENTAPI_MODEL_ID"),
},
System: anthropic.String("你是一名简洁、准确的天气助手。"),
Tools: []anthropic.BetaAgentNewParamsToolUnion{{
OfCustom: &anthropic.BetaManagedAgentsCustomToolParams{
Type: anthropic.BetaManagedAgentsCustomToolParamsTypeCustom,
Name: "get_weather",
Description: "查询城市当前的天气。",
InputSchema: anthropic.BetaManagedAgentsCustomToolInputSchemaParam{
Properties: map[string]any{
"city": map[string]any{"type": "string"},
},
Required: []string{"city"},
},
},
}},
}, option.WithJSONSet("runtime", "native"))
if err != nil {
panic(err)
}
environment, err := client.Beta.Environments.New(ctx, anthropic.BetaEnvironmentNewParams{
Name: "weather-env",
Config: anthropic.BetaEnvironmentNewParamsConfigUnion{
OfCloud: &anthropic.BetaCloudConfigParams{
Networking: anthropic.BetaCloudConfigParamsNetworkingUnion{
OfUnrestricted: &anthropic.BetaUnrestrictedNetworkParam{},
},
},
},
})
if err != nil {
panic(err)
}
session, err := client.Beta.Sessions.New(ctx, anthropic.BetaSessionNewParams{
Agent: anthropic.BetaSessionNewParamsAgentUnion{
OfBetaManagedAgentsAgents: &anthropic.BetaManagedAgentsAgentParams{
Type: anthropic.BetaManagedAgentsAgentParamsTypeAgent,
ID: agent.ID,
Version: anthropic.Int(agent.Version),
},
},
EnvironmentID: environment.ID,
})
if err != nil {
panic(err)
}
getWeather := func(city string) string {
return fmt.Sprintf("%s:18°C,晴", city)
}
stream := client.Beta.Sessions.Events.StreamEvents(ctx, session.ID, anthropic.BetaSessionEventStreamParams{})
defer stream.Close()
_, err = client.Beta.Sessions.Events.Send(ctx, session.ID, anthropic.BetaSessionEventSendParams{
Events: []anthropic.BetaManagedAgentsEventParamsUnion{{
OfUserMessage: &anthropic.BetaManagedAgentsUserMessageEventParams{
Type: anthropic.BetaManagedAgentsUserMessageEventParamsTypeUserMessage,
Content: []anthropic.BetaManagedAgentsUserMessageEventParamsContentUnion{{
OfText: &anthropic.BetaManagedAgentsTextBlockParam{
Type: anthropic.BetaManagedAgentsTextBlockTypeText,
Text: "东京天气怎么样?",
},
}},
},
}},
})
if err != nil {
panic(err)
}
loop:
for stream.Next() {
event := stream.Current()
switch event.Type {
case "agent.message":
for _, block := range event.AsAgentMessage().Content {
if block.Type == "text" {
fmt.Println(block.Text)
}
}
case "agent.custom_tool_use":
toolUse := event.AsAgentCustomToolUse()
result := getWeather(toolUse.Input["city"].(string))
if _, err := client.Beta.Sessions.Events.Send(ctx, session.ID, anthropic.BetaSessionEventSendParams{
Events: []anthropic.BetaManagedAgentsEventParamsUnion{{
OfUserCustomToolResult: &anthropic.BetaManagedAgentsUserCustomToolResultEventParams{
Type: anthropic.BetaManagedAgentsUserCustomToolResultEventParamsTypeUserCustomToolResult,
CustomToolUseID: toolUse.ID,
Content: []anthropic.BetaManagedAgentsUserCustomToolResultEventParamsContentUnion{{
OfText: &anthropic.BetaManagedAgentsTextBlockParam{
Type: anthropic.BetaManagedAgentsTextBlockTypeText,
Text: result,
},
}},
},
}},
}); err != nil {
panic(err)
}
case "session.status_idle":
idle := event.AsSessionStatusIdle()
if _, ok := idle.StopReason.AsAny().(anthropic.BetaManagedAgentsSessionEndTurn); ok {
break loop
}
}
}
if err := stream.Err(); err != nil {
panic(err)
}
```
Java
```java
import java.util.Map;
import java.util.function.Function;
import com.anthropic.client.okhttp.AnthropicOkHttpClient;
import com.anthropic.models.beta.agents.AgentCreateParams;
import com.anthropic.models.beta.agents.BetaManagedAgentsCustomToolInputSchema;
import com.anthropic.models.beta.agents.BetaManagedAgentsCustomToolParams;
import com.anthropic.models.beta.agents.BetaManagedAgentsModelConfigParams;
import com.anthropic.models.beta.environments.BetaCloudConfigParams;
import com.anthropic.models.beta.environments.BetaUnrestrictedNetwork;
import com.anthropic.models.beta.environments.EnvironmentCreateParams;
import com.anthropic.models.beta.sessions.BetaManagedAgentsAgentParams;
import com.anthropic.models.beta.sessions.SessionCreateParams;
import com.anthropic.models.beta.sessions.events.BetaManagedAgentsStreamSessionEvents;
import com.anthropic.models.beta.sessions.events.BetaManagedAgentsUserCustomToolResultEventParams;
import com.anthropic.models.beta.sessions.events.BetaManagedAgentsUserMessageEventParams;
import com.anthropic.models.beta.sessions.events.EventSendParams;
var client = AnthropicOkHttpClient.builder()
.apiKey(System.getenv("AGENTAPI_API_KEY"))
.baseUrl(System.getenv("AGENTAPI_BASE_URL"))
.build();
var agent = client.beta().agents().create(AgentCreateParams.builder()
.putAdditionalBodyProperty("runtime", com.anthropic.core.JsonValue.from("native"))
.name("天气助手")
.model(BetaManagedAgentsModelConfigParams.builder().id(System.getenv("AGENTAPI_MODEL_ID")).build())
.system("你是一名简洁、准确的天气助手。")
.addTool(BetaManagedAgentsCustomToolParams.builder()
.type(BetaManagedAgentsCustomToolParams.Type.CUSTOM)
.name("get_weather")
.description("查询城市当前的天气。")
.inputSchema(BetaManagedAgentsCustomToolInputSchema.builder()
.properties(BetaManagedAgentsCustomToolInputSchema.Properties.builder()
.putAdditionalProperty("city", JsonValue.from(Map.of("type", "string")))
.build())
.addRequired("city")
.build())
.build())
.build());
var environment = client.beta().environments().create(EnvironmentCreateParams.builder()
.name("weather-env")
.config(BetaCloudConfigParams.builder()
.networking(BetaUnrestrictedNetwork.builder().build())
.build())
.build());
var session = client.beta().sessions().create(SessionCreateParams.builder()
.agent(BetaManagedAgentsAgentParams.builder()
.type(BetaManagedAgentsAgentParams.Type.AGENT)
.id(agent.id())
.version(agent.version())
.build())
.environmentId(environment.id())
.build());
Function getWeather = city -> city + ":18°C,晴";
try (var stream = client.beta().sessions().events().streamStreaming(session.id())) {
client.beta().sessions().events().send(
session.id(),
EventSendParams.builder()
.addEvent(BetaManagedAgentsUserMessageEventParams.builder()
.type(BetaManagedAgentsUserMessageEventParams.Type.USER_MESSAGE)
.addTextContent("东京天气怎么样?")
.build())
.build());
for (var event : (Iterable) stream.stream()::iterator) {
if (event.isAgentMessage()) {
for (var block : event.asAgentMessage().content()) {
block.text().ifPresent(textBlock -> IO.println(textBlock.text()));
}
} else if (event.isAgentCustomToolUse()) {
var toolUse = event.asAgentCustomToolUse();
var city = toolUse.input()._additionalProperties().get("city").asStringOrThrow();
var result = getWeather.apply(city);
client.beta().sessions().events().send(
session.id(),
EventSendParams.builder()
.addEvent(BetaManagedAgentsUserCustomToolResultEventParams.builder()
.type(BetaManagedAgentsUserCustomToolResultEventParams.Type.USER_CUSTOM_TOOL_RESULT)
.customToolUseId(toolUse.id())
.addTextContent(result)
.build())
.build());
} else if (event.isSessionStatusIdle()
&& event.asSessionStatusIdle().stopReason().isEndTurn()) {
break;
}
}
}
```
PHP
```php
use Anthropic\Client;
use Anthropic\Beta\Agents\BetaManagedAgentsCustomToolInputSchema;
use Anthropic\Beta\Agents\BetaManagedAgentsCustomToolParams;
use Anthropic\Beta\Sessions\BetaManagedAgentsAgentParams;
$client = new Client(
apiKey: getenv('AGENTAPI_API_KEY') ?:
throw new RuntimeException('AGENTAPI_API_KEY is required'),
baseUrl: getenv('AGENTAPI_BASE_URL') ?:
throw new RuntimeException('AGENTAPI_BASE_URL is required'),
);
$agent = $client->beta->agents->create(
name: '天气助手',
model: ['id' => getenv('AGENTAPI_MODEL_ID')],
system: '你是一名简洁、准确的天气助手。',
tools: [
BetaManagedAgentsCustomToolParams::with(
type: 'custom',
name: 'get_weather',
description: '查询城市当前的天气。',
inputSchema: BetaManagedAgentsCustomToolInputSchema::with(
properties: ['city' => ['type' => 'string']],
required: ['city'],
),
),
],
requestOptions: ['extraBodyParams' => ['runtime' => 'native']],
);
$environment = $client->beta->environments->create(
name: 'weather-env',
config: ['type' => 'cloud', 'networking' => ['type' => 'unrestricted']],
);
$session = $client->beta->sessions->create(
agent: BetaManagedAgentsAgentParams::with(
type: 'agent',
id: $agent->id,
version: $agent->version,
),
environmentID: $environment->id,
);
function getWeather(string $city): string
{
return "{$city}:18°C,晴";
}
$stream = $client->beta->sessions->events->streamStream($session->id);
$client->beta->sessions->events->send(
$session->id,
events: [
[
'type' => 'user.message',
'content' => [['type' => 'text', 'text' => "东京天气怎么样?"]],
],
],
);
foreach ($stream as $event) {
if ($event->type === 'agent.message') {
foreach ($event->content as $block) {
if ($block->type === 'text') {
echo $block->text . "\n";
}
}
} elseif ($event->type === 'agent.custom_tool_use') {
$result = getWeather($event->input['city']);
$client->beta->sessions->events->send(
$session->id,
events: [
[
'type' => 'user.custom_tool_result',
'custom_tool_use_id' => $event->id,
'content' => [['type' => 'text', 'text' => $result]],
],
],
);
} elseif ($event->type === 'session.status_idle' && $event->stopReason?->type === 'end_turn') {
break;
}
}
$stream->close();
```
Ruby
```ruby
require "anthropic"
client = Anthropic::Client.new(
api_key: ENV.fetch("AGENTAPI_API_KEY"),
base_url: ENV.fetch("AGENTAPI_BASE_URL")
)
agent = client.beta.agents.create(
name: "天气助手",
model: {id: ENV.fetch("AGENTAPI_MODEL_ID")},
system_: "你是一名简洁、准确的天气助手。",
tools: [
{
type: "custom",
name: "get_weather",
description: "查询城市当前的天气。",
input_schema: {
type: "object",
properties: {city: {type: "string"}},
required: ["city"]
}
}
],
request_options: {extra_body: {runtime: "native"}}
)
environment = client.beta.environments.create(
name: "weather-env",
config: {type: "cloud", networking: {type: "unrestricted"}}
)
session = client.beta.sessions.create(
agent: {type: "agent", id: agent.id, version: agent.version},
environment_id: environment.id
)
def get_weather(city)
"#{city}:18°C,晴"
end
stream = client.beta.sessions.events.stream_events(session.id)
client.beta.sessions.events.send_(
session.id,
events: [{type: "user.message", content: [{type: "text", text: "东京天气怎么样?"}]}]
)
stream.each do |event|
case event.type
when :"agent.message"
event.content.each do |block|
puts block.text if block.type == :text
end
when :"agent.custom_tool_use"
result = get_weather(event.input[:city])
client.beta.sessions.events.send_(
session.id,
events: [
{
type: "user.custom_tool_result",
custom_tool_use_id: event.id,
content: [{type: "text", text: result}]
}
]
)
when :"session.status_idle"
break if event.stop_reason&.type == :end_turn
end
end
```
智能体和云端环境创建后可在多个会话中复用。自定义工具函数仍在应用进程中运行。迁移后,应用通过读取 `agent.custom_tool_use` 事件并返回工具结果参与执行,模型调用循环由 AgentAPI 管理。
### 业务逻辑保留范围 [#业务逻辑保留范围]
迁移到云端智能体循环后,以下与应用业务相关的逻辑仍需要保留:
| 原有逻辑 | AgentAPI 中的处理方式 |
| ------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| 消息输入和输出转换 | 在发送 `user.message` 前或接收 `agent.message` 后,由应用继续完成格式转换和业务处理。 |
| 自定义工具前后的校验或审计 | 在处理 `agent.custom_tool_use` 和发送 `user.custom_tool_result` 时执行。对于 `native` 内置工具,可使用 `permission_policy: always_ask` 在执行前请求确认。 |
| LangChain 检查点中的业务状态 | 将业务状态保留在应用自己的存储中;会话消息和执行事件由 AgentAPI 保存。 |
| 循环次数或业务超时限制 | 由应用根据事件和时间进行控制,必要时发送 `user.interrupt` 中断当前任务。 |
## 迁移清单 [#迁移清单]
1. [创建一个云端环境](/products/agentapi/development_guidelines/agentapi-execution-environments/13608-agentapi-execution-environments-environment),配置任务所需的软件包;使用 `limited` 网络时,放行 MCP 服务和软件源的实际主机。
2. 将系统提示、模型、运行时和工具配置迁移到[智能体定义](/products/agentapi/development_guidelines/agentapi-agent-configuration/13590-agentapi-agent-configuration-agent)中,并保存返回的版本号。
3. 使用明确的智能体版本创建会话。传入智能体 ID 字符串时,只会在创建会话时解析并固定最新版本;已有会话不会随智能体更新切换。
4. 使用 [`sessions.create`](/products/agentapi/development_guidelines/agentapi-sessions-and-tasks/13596-agentapi-sessions-and-tasks-session) 和 [`sessions.events.stream`](/products/agentapi/development_guidelines/agentapi-sessions-and-tasks/13597-agentapi-sessions-and-tasks-events) 替换原有的智能体循环。客户端必须处理历史事件回放、`requires_action`、`interrupted`、`retries_exhausted` 和 `terminated`。
5. 智能体需要读取本地文件时,通过 [Files API](/products/agentapi/development_guidelines/agentapi-data-and-integrations/13602-agentapi-data-and-integrations-files) 上传文件,并将其作为 `resources` 挂载到会话中。
6. 将自定义工具处理程序接入事件循环,用于响应 `agent.custom_tool_use` 事件并返回结果;`claudecode`、`codex` 还需要服务端已配置自定义工具桥接;本页自定义工具示例选择 `native`,直接通过事件回传结果。
7. 用同一批任务对比旧系统与 AgentAPI 的事件、产物和失败恢复;业务状态仍保留在应用自己的存储中。
8. 在将生产流量指向新流程之前,先用测试会话进行验证,并为调度任务设计业务幂等键。
## 更新智能体使用的模型 [#更新智能体使用的模型]
需要切换模型或模型版本时,更新[智能体定义](/products/agentapi/development_guidelines/agentapi-agent-configuration/13590-agentapi-agent-configuration-agent)中的 `model` 即可。更新会生成新的智能体版本;新建会话时引用该版本,现有会话仍然使用创建时固定的智能体版本。
下面将目标模型 ID 保存在 `AGENTAPI_MODEL_ID` 中。请先在[七牛 MaaS 模型管理页](https://portal.qiniu.com/ai-inference/model)确认账户和区域可用的模型,再设置该变量。
cURL
```bash
curl --request POST "$AGENTAPI_BASE_URL/v1/agents/$AGENT_ID" \
-H "x-api-key: $AGENTAPI_API_KEY" \
-H "content-type: application/json" \
--data "$(jq -n --argjson version "$AGENT_VERSION" --arg model "$AGENTAPI_MODEL_ID" \
'{version: $version, model: {id: $model}}')"
```
Python
```python
client.beta.agents.update(
agent.id,
version=agent.version,
model={"id": os.environ["AGENTAPI_MODEL_ID"]},
)
```
TypeScript
````typescript
await client.beta.agents.update(agent.id, {
version: agent.version,
model: { id: process.env.AGENTAPI_MODEL_ID! }
});
```csharp
```csharp
await client.Beta.Agents.Update(agent.ID, new()
{
Version = agent.Version,
Model = new BetaManagedAgentsModelConfigParams
{
ID = System.Environment.GetEnvironmentVariable("AGENTAPI_MODEL_ID")
?? throw new InvalidOperationException("AGENTAPI_MODEL_ID is required"),
},
});
````
Go
```go
_, err = client.Beta.Agents.Update(ctx, agent.ID, anthropic.BetaAgentUpdateParams{
Version: agent.Version,
Model: anthropic.BetaManagedAgentsModelConfigParams{
ID: os.Getenv("AGENTAPI_MODEL_ID"),
},
})
if err != nil {
panic(err)
}
```
Java
```java
client.beta().agents().update(
agent.id(),
AgentUpdateParams.builder()
.version(agent.version())
.model(BetaManagedAgentsModelConfigParams.builder()
.id(System.getenv("AGENTAPI_MODEL_ID"))
.build())
.build()
);
```
PHP
```php
$client->beta->agents->update(
$agent->id,
version: $agent->version,
model: ['id' => getenv('AGENTAPI_MODEL_ID')],
);
```
Ruby
```ruby
client.beta.agents.update(
agent.id,
version: agent.version,
model: {id: ENV.fetch("AGENTAPI_MODEL_ID")}
)
```
更新模型时,还需要注意以下差异:
* 模型行为: 不同模型的工具选择、输出风格和任务完成效果可能不同,切换前应使用测试会话验证关键任务。
* 请求参数: 模型请求由 AgentAPI 在智能体循环中发起。应用无需在每一轮请求中重复设置 `max_tokens` 或推理参数。
* 会话输入: AgentAPI 使用事件驱动的会话模型,不支持通过预填充助手消息来约束下一段输出。
* 工具参数: `agent.custom_tool_use` 事件提供结构化的工具输入,应用无需自行解析原始 JSON 字符串。
# 基本概念 (/products/agentapi/product_introduction/13583-agentapi-concepts)
最近更新时间: 2026-10-13 15:30:58
AgentAPI 通过智能体与环境保存可复用配置,通过会话与事件管理具体任务的执行和交互。
## 智能体(Agent) [#智能体agent]
智能体是一份可复用的行为配置,包含运行时、模型、系统提示、工具和技能等内容,用于定义角色、规则和可用能力。创建智能体只保存配置,任务在会话中执行;同一个智能体可以供多个会话使用。配置发生变化时生成新版本。详见[创建与管理智能体](/products/agentapi/development_guidelines/agentapi-agent-configuration/13590-agentapi-agent-configuration-agent)。
## 运行时与模型 [#运行时与模型]
运行时(`runtime`)组织模型调用与工具执行,模型(`model`)负责推理与生成,两者分别配置在智能体上。AgentAPI 支持 `claudecode`、`codex` 和 `native`:前两者分别由 Claude Code SDK 与 Codex 执行引擎驱动,Native 由 AgentAPI 管理执行循环。运行时会影响工具能力和执行方式,模型需选择当前账户与区域可调用的型号。详见[运行时和模型](/products/agentapi/development_guidelines/agentapi-agent-configuration/13589-agentapi-agent-configuration-runtime-and-models)。
## 工具与技能 [#工具与技能]
[工具](/products/agentapi/development_guidelines/agentapi-agent-configuration/13591-agentapi-agent-configuration-tools)提供文件读写、代码执行或外部服务调用等操作能力;[技能(Agent Skills)](/products/agentapi/development_guidelines/agentapi-agent-configuration/13594-agentapi-agent-configuration-skills)保存可复用的工作说明和辅助文件,例如分析步骤或报告规范。工具决定能够执行哪些操作,技能指导如何完成任务。技能中的脚本仍需相应工具和环境依赖才能运行。
## 环境与沙箱 [#环境与沙箱]
环境是一份可复用的执行配置,定义工具所需的软件包、网络等条件,在创建会话时引用。沙箱是会话执行文件和代码操作的实际工作空间。多个会话可以共用云端环境配置,各自使用独立沙箱,文件系统状态不会共享。详见[配置云端环境](/products/agentapi/development_guidelines/agentapi-execution-environments/13608-agentapi-execution-environments-environment);使用自有执行资源时,见[自托管执行器](/products/agentapi/development_guidelines/agentapi-execution-environments/13614-agentapi-execution-environments-self-hosted)。
## 会话与执行轮次 [#会话与执行轮次]
会话保存一个任务的输入、输出、工具活动和交互历史,引用固定的智能体版本与环境。向会话发送消息后开始执行,一次由输入触发的执行称为轮次(Turn),可以包含多次模型请求和工具调用。同一任务的补充与修订可继续使用原会话,独立任务应创建新会话;已有会话不会随智能体更新而切换版本。详见[创建会话](/products/agentapi/development_guidelines/agentapi-sessions-and-tasks/13596-agentapi-sessions-and-tasks-session)。
## 事件与任务结果 [#事件与任务结果]
事件记录用户输入、智能体回答、工具活动和状态变化。应用可以查询事件历史,或通过事件流(SSE)实时观察进度。提交输入成功表示任务已接收;会话进入 `idle` 表示当前执行已停止,仍需结合停止原因、回答和产物判断任务结果。详见[事件和事件流](/products/agentapi/development_guidelines/agentapi-sessions-and-tasks/13597-agentapi-sessions-and-tasks-events)。
## 配置与任务的关系 [#配置与任务的关系]

具体操作见[在 Portal 中构建](/products/agentapi/quick_start/13586-agentapi-portal)或[通过 API 构建](/products/agentapi/quick_start/13587-agentapi-quickstart)。
# 产品概述 (/products/agentapi/product_introduction/13584-agentapi-overview)
最近更新时间: 2026-10-14 11:36:18
AgentAPI 是在托管环境中运行的可配置智能体框架。适合长时间运行的任务和异步工作。
## 使用方式 [#使用方式]
AgentAPI 支持 Portal 可视化使用和 API 方式使用,两种方式都可以配置智能体、运行任务并查看结果。
| 使用方式 | 适用场景 | 入门指南 |
| ---------- | ---------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
| Portal 可视化 | 快速上手,或无需编写代码即可配置、测试和调整智能体。 | [在 Portal 中构建](/products/agentapi/quick_start/13586-agentapi-portal) |
| API | 将 AgentAPI 集成到自有智能体产品或业务系统,通过代码管理配置、提交任务并处理结果。支持直接发送 HTTP 请求或使用 SDK。API 兼容 Claude Managed Agents 协议。 | [通过 API 构建](/products/agentapi/quick_start/13587-agentapi-quickstart) |
可以先在 Portal 验证配置,再在代码中引用已有智能体和环境。
## 采用条件 [#采用条件]
适用于需要以下能力的任务:
* **长时间运行的执行**: 运行数分钟或数小时、涉及多次工具调用的任务
* **云基础设施**: 预装软件包并具备网络访问能力的安全沙箱
* **自托管执行**: 在您控制的基础设施上运行沙箱,以满足合规性或数据驻留要求
* **最少的基础设施**: 无需自行构建智能体循环、沙箱或工具执行层
* **有状态会话**: 跨多次交互持久保存的文件系统和对话历史
* **定时执行**: 通过定时部署按 cron 计划定期运行智能体
产品的配置对象、会话关系和任务执行流程见[基本概念](/products/agentapi/product_introduction/13583-agentapi-concepts)。
## 应用责任 [#应用责任]
AgentAPI 管理执行过程;应用校验业务用户与资源归属,保存任务与会话的关联,处理业务工具和审批,并验收结果。自托管模式下,worker 的运行、隔离与清理由部署方负责。
# 接入准备 (/products/agentapi/quick_start/13585-agentapi-access)
最近更新时间: 2026-10-16 10:13:03
开始调用 AgentAPI 前,先在七牛 Portal 创建 API Key,再根据所在区域选择服务地址。
## 创建 API Key [#创建-api-key]
1. 打开[七牛 Portal 的 AgentAPI 页面](https://portal.qiniu.com/agentapi)。
2. 在 API Key 设置中创建 Key。Portal 会创建七牛 MaaS(大模型推理服务)的 API Key,并自动绑定到当前 AgentAPI 账户。
3. 将创建的 Key 用于后续 API 请求。同一账户可以保留多个已绑定的 Key,分别用于不同应用。
> 更换 API Key
>
> 先在 Portal 创建新 Key,再替换客户端的 Key;确认切换完成后,再停用或删除旧 Key。创建新 Key 不会覆盖已有绑定。Portal 中删除 Key 会同时删除 MaaS API Key 和 AgentAPI 绑定记录,其他 Key 不受影响。
>
> 停用 MaaS API Key 不会自动解除 AgentAPI 绑定。AgentAPI 鉴权当前仅检查绑定记录,因此不能以停用操作确认旧 Key 已失去 AgentAPI 访问权限;需要撤销访问时,应在 Portal 删除旧 Key。
请勿将真实 Key 写入代码、文档或版本库。本文使用环境变量占位符。
## 选择服务区域 [#选择服务区域]
AgentAPI 当前提供两个服务入口:
| 区域 | 服务地址 |
| -- | ---------------------------- |
| 华东 | `https://agent.qiniuapi.com` |
| 美西 | `https://agent.sufy.com` |
> 区域数据独立
>
> 不同区域的资源与数据彼此独立,不跨区域共享。在某一区域创建的智能体、环境、会话和文件等资源,应通过该区域的服务地址访问。切换 Portal 地域或 API 服务地址不会迁移已有资源与数据。
通用示例使用 `AGENTAPI_BASE_URL`,请根据所在区域和 Portal 中可用的模型权限设置服务地址。
## 配置环境变量 [#配置环境变量]
```bash
export AGENTAPI_BASE_URL="https://your-agentapi-endpoint"
export AGENTAPI_API_KEY="your-maas-api-key"
export AGENTAPI_MODEL_ID="your-model-id"
```
> 选择模型
>
> `AGENTAPI_MODEL_ID` 必须替换为当前账户和区域可用的模型 ID。请前往[七牛 MaaS 模型管理页](https://portal.qiniu.com/ai-inference/model)获取模型 ID,并确认所用 Key 可调用该模型。
## 验证鉴权 [#验证鉴权]
```bash
curl --request GET "$AGENTAPI_BASE_URL/v1/agents" \
--header "x-api-key: $AGENTAPI_API_KEY"
```
请求 JSON 接口时,同时设置 `content-type: application/json`。AgentAPI 使用七牛 MaaS API Key,并通过 `x-api-key` 请求头鉴权。
## 常见问题 [#常见问题]
| 现象 | 检查项 |
| ----------- | ---------------------------- |
| `401` | Key 是否填写正确,是否已在 Portal 绑定 |
| 模型不可用 | 模型是否属于当前账户和区域,是否具备使用权限 |
| 请求地址错误 | `AGENTAPI_BASE_URL` 是否对应所选区域 |
| 更换 Key 后仍失败 | 新 Key 是否已绑定,是否处于启用状态 |
准备完成后,继续阅读[通过 API 构建](/products/agentapi/quick_start/13587-agentapi-quickstart)。
# 在 Portal 中构建 (/products/agentapi/quick_start/13586-agentapi-portal)
最近更新时间: 2026-10-13 15:31:05
[AgentAPI Portal](https://portal.qiniu.com/agentapi) 适合快速上手,以及无需编写代码即可配置、测试和调整智能体的场景。通过可视化界面选择配置、发送任务并查看结果,也可以先验证配置,再通过 API 接入应用。首次使用时,按页面引导创建 API Key;地域与鉴权说明见[接入准备](/products/agentapi/quick_start/13585-agentapi-access)。
## 配置智能体 [#配置智能体]
从“快速开始”选择模板,或在“Agent”页面创建智能体,配置以下内容:
* 运行时、模型和系统提示词:选择执行引擎与模型,定义任务要求和输出约束。
* 工具和 MCP:配置内置工具、自定义工具或远程 MCP 服务;所需凭证在创建会话时关联。
* 技能:附加已上传的技能,复用任务说明和辅助文件。
再选择或创建环境,设置运行方式、网络与软件依赖。资源页面提供“API 调用示例”,便于将已验证的配置用于代码。
## 测试智能体 [#测试智能体]
“快速开始”按创建智能体、配置环境、创建会话、发送消息四步完成一次测试。也可以在“会话”页面引用已有智能体和环境,新建测试会话。
发送消息后,在会话详情的“对话”中查看回答与工具调用,“轨迹”中检查事件和停止原因,“文件”中下载产物;需要完整记录时,使用“Raw JSONL”导出。
会话空闲只表示当前执行停止,仍需核对回答和产物是否符合任务要求。调整智能体后,创建新会话验证新版本。
## 在代码中复用配置 [#在代码中复用配置]
配置验证通过后:
1. 从 Portal 记录智能体 ID、版本和环境 ID。
2. 在应用中[创建会话](/products/agentapi/development_guidelines/agentapi-sessions-and-tasks/13596-agentapi-sessions-and-tasks-session)时引用这些配置,使用同一地域的服务地址和已绑定 Key。
3. 按[通过 API 构建](/products/agentapi/quick_start/13587-agentapi-quickstart)中的 HTTP 或 SDK 方式,在代码中发送任务并获取结果。
## 配置 Webhook 通知 [#配置-webhook-通知]
在“服务设置 → Webhook”中为当前地域创建通知端点、选择事件,并保存一次性签名密钥。随后可在列表管理订阅、启停和密钥轮换;“API Key”入口独立管理模型调用凭证。租户身份由服务端自动维护,无需填写内部 ID。接收服务的验签、可靠确认及失败恢复见 [Webhook 通知](/products/agentapi/development_guidelines/agentapi-data-and-integrations/13605-agentapi-data-and-integrations-webhooks)。
# 通过 API 构建 (/products/agentapi/quick_start/13587-agentapi-quickstart)
最近更新时间: 2026-10-13 15:31:07
API 方式适合将 AgentAPI 集成到自有智能体产品或业务系统,通过代码管理配置、自动提交任务,并把回答、执行进度和文件产物用于业务流程。
可以直接发送 HTTP 请求,也可以使用 SDK调用相同接口。两种方式都围绕智能体、环境、会话和事件完成任务;SDK 部分说明客户端初始化和 AgentAPI 扩展字段的传入方式。
下面的 HTTP 示例完成一次文件生成任务:创建配置与会话、发送任务、读取事件,再下载并核对前 20 个斐波那契数。完成标志是本地拿到内容正确的 `fibonacci.txt`。已在 Portal 验证的配置可以直接复用,创建会话时引用已有智能体 ID、版本和环境 ID。

## 前提条件 [#前提条件]
* 已完成[接入准备](/products/agentapi/quick_start/13585-agentapi-access)
* `AGENTAPI_BASE_URL`、`AGENTAPI_API_KEY` 和 `AGENTAPI_MODEL_ID` 已设置
## 使用 HTTP [#使用-http]
以下示例需要 Bash、`curl` 和 `jq`,在同一个 Bash 终端中依次执行。
```bash
set -euo pipefail
: "${AGENTAPI_BASE_URL:?请先设置 AGENTAPI_BASE_URL}"
: "${AGENTAPI_API_KEY:?请先设置 AGENTAPI_API_KEY}"
: "${AGENTAPI_MODEL_ID:?请先设置 AGENTAPI_MODEL_ID}"
```
### 创建智能体 [#创建智能体]
示例使用 `claudecode`、云端环境和内置工具集,任务不需要第三方凭证或额外网络访问。需要其他执行引擎或应用参与工具调用时,先按[运行时和模型](/products/agentapi/development_guidelines/agentapi-agent-configuration/13589-agentapi-agent-configuration-runtime-and-models)选择配置。
```bash
agent=$(curl --request POST --fail-with-body --silent --show-error "$AGENTAPI_BASE_URL/v1/agents" \
--header "x-api-key: $AGENTAPI_API_KEY" \
--header "content-type: application/json" \
--data @- <"$EVENT_LOG" &
STREAM_PID=$!
trap 'kill "$STREAM_PID" 2>/dev/null || true; wait "$STREAM_PID" 2>/dev/null || true; rm -f "$EVENT_LOG"' EXIT
accepted=$(curl --request POST --fail-with-body --silent --show-error \
"$AGENTAPI_BASE_URL/v1/sessions/$SESSION_ID/events" \
--header "x-api-key: $AGENTAPI_API_KEY" \
--header "content-type: application/json" \
--data '{
"events": [
{
"type": "user.message",
"input": {
"parts": [
{"type": "text", "text": "从 0、1 开始生成前 20 个斐波那契数,将这 20 个整数按每行一个的格式保存到 /mnt/session/outputs/fibonacci.txt,作为可下载文件,不添加标题或其他文字。"}
]
}
}
]
}')
INPUT_EVENT_ID=$(jq -er '.data[0].id' <<<"$accepted")
stop_event=""
for _ in $(seq 1 120); do
events=$(jq -Rsc 'split("\n") | map(
select(startswith("data: ")) | ltrimstr("data: ") | fromjson?
)' "$EVENT_LOG")
input_sequence=$(jq -r --arg id "$INPUT_EVENT_ID" '
[.[] | select(.id == $id and .processed_at != null) | .sequence_number]
| first // empty
' <<<"$events")
if [[ -n "$input_sequence" ]]; then
stop_event=$(jq -c --argjson sequence "$input_sequence" '
[.[] | select(.sequence_number > $sequence)
| select(.type == "session.status_idle" or .type == "session.status_terminated")]
| first // empty
' <<<"$events")
[[ -n "$stop_event" ]] && break
fi
if ! kill -0 "$STREAM_PID" 2>/dev/null; then
cat "$EVENT_LOG" >&2
printf '事件连接已结束,请按会话 ID 恢复查询:%s\n' "$SESSION_ID" >&2
exit 1
fi
sleep 1
done
kill "$STREAM_PID" 2>/dev/null || true
wait "$STREAM_PID" 2>/dev/null || true
jq '.[] | select(.type == "agent.message" or .type == "session.error")' <<<"$events"
rm -f "$EVENT_LOG"
trap - EXIT
[[ -n "$stop_event" ]] || {
printf '120 秒内未确认本轮停止;保留会话继续查询,不要重复提交:%s\n' "$SESSION_ID" >&2
exit 1
}
jq . <<<"$stop_event"
[[ $(jq -r '.type' <<<"$stop_event") == "session.status_idle" && \
$(jq -r '.stop_reason.type' <<<"$stop_event") == "end_turn" ]] || {
printf '本轮未正常结束,请先按停止原因处理,再验收产物。\n' >&2
exit 1
}
```
本例是新建会话的一轮执行,等待上限为 120 秒。关闭本地 SSE 观察不会取消云端任务;超时后保留 `SESSION_ID`,通过 [Portal](https://portal.qiniu.com/agentapi) 或[事件历史](/products/agentapi/development_guidelines/agentapi-sessions-and-tasks/13597-agentapi-sessions-and-tasks-events)继续检查。生产应用应按[事件和事件流](/products/agentapi/development_guidelines/agentapi-sessions-and-tasks/13597-agentapi-sessions-and-tasks-events)恢复消费,并按[文件](/products/agentapi/development_guidelines/agentapi-data-and-integrations/13602-agentapi-data-and-integrations-files)的规则验收产物。
`end_turn` 只说明本轮结束,仍需下载验收文件。其他停止原因及后续处理见[执行结果判断](/products/agentapi/development_guidelines/agentapi-sessions-and-tasks/13597-agentapi-sessions-and-tasks-events)。
### 下载并验证结果 [#下载并验证结果]
会话文件可能在停止事件之后才收集完成。以下代码等待 `fibonacci.txt` 出现在文件列表中,再下载;本例只生成一个文件。较大任务应按[文件列表分页](/products/agentapi/development_guidelines/agentapi-data-and-integrations/13602-agentapi-data-and-integrations-files)读取全部结果。
```bash
FILE_ID=""
for _ in $(seq 1 10); do
files=$(curl --fail-with-body --silent --show-error \
"$AGENTAPI_BASE_URL/v1/files?scope_id=$SESSION_ID" \
--header "x-api-key: $AGENTAPI_API_KEY")
FILE_ID=$(jq -r '[.data[] | select(.filename == "fibonacci.txt")][0].id // empty' <<<"$files")
[[ -n "$FILE_ID" ]] && break
sleep 1
done
[[ -n "$FILE_ID" ]] || {
printf 'fibonacci.txt 尚未收集完成,请检查输出路径、文件限额与会话事件。\n' >&2
exit 1
}
curl --fail-with-body --silent --show-error \
"$AGENTAPI_BASE_URL/v1/files/$FILE_ID/content" \
--header "x-api-key: $AGENTAPI_API_KEY" \
--output fibonacci.txt
```
验证应将文件的每一行与预期序列比较。使用下面的命令完成内容验收:
```bash
jq -Rse '
split("\n") | map(gsub("\r$"; ""))
| if last == "" then .[:-1] else . end
| . == ([0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181]
| map(tostring))
' fibonacci.txt
```
输出 `true` 且退出码为 0 表示文件包含正确的 20 行整数。验收失败时,查看回答与文件内容,在原会话补充要求后重新检查;不要仅因文件存在就判定成功。
### 清理示例资源 [#清理示例资源]
文件下载验收后,可以删除本页创建的会话、智能体与环境。会话删除会同时清理事件和会话作用域文件;如需保留历史,改用[归档会话](/products/agentapi/development_guidelines/agentapi-sessions-and-tasks/13598-agentapi-sessions-and-tasks-session-lifecycle)。
```bash
curl --request DELETE --fail-with-body --silent --show-error \
"$AGENTAPI_BASE_URL/v1/sessions/$SESSION_ID" --header "x-api-key: $AGENTAPI_API_KEY"
curl --request DELETE --fail-with-body --silent --show-error \
"$AGENTAPI_BASE_URL/v1/agents/$AGENT_ID" --header "x-api-key: $AGENTAPI_API_KEY"
curl --request DELETE --fail-with-body --silent --show-error \
"$AGENTAPI_BASE_URL/v1/environments/$ENVIRONMENT_ID" --header "x-api-key: $AGENTAPI_API_KEY"
```
业务系统中复用的智能体与环境应按自身保留策略管理;这里的删除操作只用于本页专门创建的示例资源。
## 使用 SDK [#使用-sdk]
AgentAPI 的智能体、环境、会话和事件接口可以使用 Anthropic SDK 调用。客户端放在应用服务端,显式配置 AgentAPI 服务地址和已绑定的 MaaS API Key。
### 请求配置 [#请求配置]
| 配置 | 注意事项 |
| ------- | -------------------------------------------------------------------------------------------------------- |
| 服务地址 | 将 `base_url`、`baseURL` 或对应语言的选项设为 `AGENTAPI_BASE_URL`,使用所选区域的 AgentAPI 服务根地址,不附加 `/v1`。SDK 的资源方法会拼接接口路径。 |
| API Key | 将 `api_key`、`apiKey` 或对应选项设为 `AGENTAPI_API_KEY`,SDK 会通过 `x-api-key` 发送。Key 必须已在 Portal 绑定到 AgentAPI 账户。 |
| 模型 | 创建智能体时使用当前账户和区域可调用的模型 ID,示例从 `AGENTAPI_MODEL_ID` 读取。模型选择与 `runtime` 选择是两个独立字段。 |
### 获取 SDK [#获取-sdk]
按所用语言安装依赖,软件包、安装命令和官方源码入口见[SDK 下载](/products/agentapi/sdk/13620-agentapi-sdk-download)。
### 初始化客户端 [#初始化客户端]
以下片段与专题中的调用代码放在同一作用域,按调用补充所需的类型导入。专题涉及的 `agent`、`environment`、`session` 等变量来自对应资源的创建或查询响应。
Python
```python
import os
from anthropic import Anthropic
client = Anthropic(
api_key=os.environ["AGENTAPI_API_KEY"],
base_url=os.environ["AGENTAPI_BASE_URL"],
)
```
TypeScript
````typescript
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: process.env.AGENTAPI_API_KEY!,
baseURL: process.env.AGENTAPI_BASE_URL,
});
```csharp
```csharp
using Anthropic;
using Anthropic.Core;
var client = new AnthropicClient(new ClientOptions
{
ApiKey = System.Environment.GetEnvironmentVariable("AGENTAPI_API_KEY")
?? throw new InvalidOperationException("AGENTAPI_API_KEY is required"),
BaseUrl = System.Environment.GetEnvironmentVariable("AGENTAPI_BASE_URL")
?? throw new InvalidOperationException("AGENTAPI_BASE_URL is required"),
});
````
Go
```go
import (
"context"
"os"
"github.com/anthropics/anthropic-sdk-go"
"github.com/anthropics/anthropic-sdk-go/option"
)
client := anthropic.NewClient(
option.WithoutEnvironmentDefaults(),
option.WithBaseURL(os.Getenv("AGENTAPI_BASE_URL")),
option.WithAPIKey(os.Getenv("AGENTAPI_API_KEY")),
)
ctx := context.Background()
```
Java
```java
import com.anthropic.client.okhttp.AnthropicOkHttpClient;
var client = AnthropicOkHttpClient.builder()
.apiKey(System.getenv("AGENTAPI_API_KEY"))
.baseUrl(System.getenv("AGENTAPI_BASE_URL"))
.build();
```
PHP
```php
use Anthropic\Client;
$client = new Client(
apiKey: getenv('AGENTAPI_API_KEY') ?:
throw new RuntimeException('AGENTAPI_API_KEY is required'),
baseUrl: getenv('AGENTAPI_BASE_URL') ?:
throw new RuntimeException('AGENTAPI_BASE_URL is required'),
);
```
Ruby
```ruby
require "anthropic"
client = Anthropic::Client.new(
api_key: ENV.fetch("AGENTAPI_API_KEY"),
base_url: ENV.fetch("AGENTAPI_BASE_URL")
)
```
### 传入扩展字段 [#传入扩展字段]
`runtime` 是创建和更新智能体时的 AgentAPI 扩展字段,取值为 `claudecode`、`codex` 或 `native`;创建时省略会使用 `claudecode`,建议按任务场景显式指定(见[运行时和模型](/products/agentapi/development_guidelines/agentapi-agent-configuration/13589-agentapi-agent-configuration-runtime-and-models))。SDK 的类型未必声明该字段,需要通过扩展请求参数传入,使其出现在请求体顶层。
Python 使用 `extra_body`;TypeScript 通过第二个参数的 `body` 传入,需保留原请求字段。例如:
Python
```python
agent = client.beta.agents.create(
name="编程助手",
model={"id": os.environ["AGENTAPI_MODEL_ID"]},
extra_body={"runtime": "claudecode"},
)
```
TypeScript
```typescript
const params = {
name: "编程助手",
model: { id: process.env.AGENTAPI_MODEL_ID! },
} satisfies Parameters[0];
const agent = await client.beta.agents.create(params, {
body: { ...params, runtime: "claudecode" },
});
```
`agentapi_options` 同样通过扩展请求参数传入,具体配置见[智能体配置字段](/products/agentapi/development_guidelines/agentapi-agent-configuration/13590-agentapi-agent-configuration-agent)。其他语言的扩展字段写法见[创建智能体](/products/agentapi/development_guidelines/agentapi-agent-configuration/13590-agentapi-agent-configuration-agent)。
按业务步骤使用[智能体创建](/products/agentapi/development_guidelines/agentapi-agent-configuration/13590-agentapi-agent-configuration-agent)、[环境创建](/products/agentapi/development_guidelines/agentapi-execution-environments/13608-agentapi-execution-environments-environment)、[会话创建](/products/agentapi/development_guidelines/agentapi-sessions-and-tasks/13596-agentapi-sessions-and-tasks-session)和[事件收发](/products/agentapi/development_guidelines/agentapi-sessions-and-tasks/13597-agentapi-sessions-and-tasks-events)中的 SDK 示例。HTTP 用户消息的结构化内容以 `input.parts` 为准,SDK 的兼容写法见[提交输入](/products/agentapi/development_guidelines/agentapi-sessions-and-tasks/13597-agentapi-sessions-and-tasks-events);完整字段与限制以 [API 参考](/products/agentapi/api/13618-agentapi-api-conventions)为准。
## 后续步骤 [#后续步骤]
* [更换任务配置](/products/agentapi/development_guidelines/agentapi-agent-configuration/13589-agentapi-agent-configuration-runtime-and-models):选择不同运行时、工具或执行环境。
* [事件和事件流](/products/agentapi/development_guidelines/agentapi-sessions-and-tasks/13597-agentapi-sessions-and-tasks-events):恢复消费,判断停止原因并处理工具等待。
* [文件](/products/agentapi/development_guidelines/agentapi-data-and-integrations/13602-agentapi-data-and-integrations-files):准备输入材料、下载并验收产物。
# SDK 下载 (/products/agentapi/sdk/13620-agentapi-sdk-download)
最近更新时间: 2026-10-13 17:21:25
AgentAPI 的智能体、环境、会话和事件接口可以使用 Anthropic SDK 调用。以下列出各语言的安装方式与官方源码入口。
| 语言 | 安装方式 | 官方源码 |
| ----------------------- | ------------------------------------------------------------ | ---------------------------------------------------------------------------------- |
| Python | `pip install anthropic` | [anthropic-sdk-python](https://github.com/anthropics/anthropic-sdk-python) |
| TypeScript / JavaScript | `npm install @anthropic-ai/sdk` | [anthropic-sdk-typescript](https://github.com/anthropics/anthropic-sdk-typescript) |
| Java(Gradle) | `implementation("com.anthropic:anthropic-java:2.62.0")` | [anthropic-sdk-java](https://github.com/anthropics/anthropic-sdk-java) |
| Go | `go get github.com/anthropics/anthropic-sdk-go` | [anthropic-sdk-go](https://github.com/anthropics/anthropic-sdk-go) |
| C# | `dotnet add package Anthropic` | [anthropic-sdk-csharp](https://github.com/anthropics/anthropic-sdk-csharp) |
| Ruby | `bundle add anthropic` | [anthropic-sdk-ruby](https://github.com/anthropics/anthropic-sdk-ruby) |
| PHP | `composer require "anthropic-ai/sdk" "guzzlehttp/guzzle:^7"` | [anthropic-sdk-php](https://github.com/anthropics/anthropic-sdk-php) |
接入 AgentAPI 时,需要显式设置服务地址、已绑定的 MaaS API Key,并通过扩展请求参数传入 `runtime` 等 AgentAPI 字段。客户端初始化与接入注意事项见[通过 API 构建:使用 SDK](/products/agentapi/quick_start/13587-agentapi-quickstart)。
# 获取AI大模型推理API密钥令牌KEY🔑 (/products/aitokenapi/0-how-to-get-api-key)
最近更新时间: 2026-04-29 11:54:55
**🎉🎉 注册有奖活动:现在注册 `qiniu.com/ai` 开发者账号,立即获得 300万免费 Token 资源包!详见 [活动详情](/products/aitokenapi/0-ai-token-api-pricing)**

## 方法一:用微信扫码“七牛云”小程序领取 [#方法一用微信扫码七牛云小程序领取]
**STEP 1** 用微信扫码,或搜索 `七牛云` 小程序,选择 “手机号快捷登录”
**STEP 2** 打开【我的】,选择【我的控制台】
**STEP 3** 然后即可创建新密钥、或复制已有 API密钥 🔑
> 注: `首次创建API密钥,即激活300万Token免费额度资源包`。
>
> 密钥可设置到环境变量 `OPENAI_API_KEY`(对应`OPENAI_BASE_URL=https://api.qnaigc.com/v1`)
> 也可以设置到 `ANTHROPIC_API_KEY` 或 `ANTHROPIC_AUTH_TOKEN`(对应`ANTHROPIC_BASE_URL=https://api.qnaigc.com`)
> 以及各种LLM兼容库的相应字段上使用。
## 方法二:登录到 `qiniu.com/ai` 控制台领取 [#方法二登录到-qiniucomai-控制台领取]
**STEP 1** 打开 [qiniu.com/ai](https://www.qiniu.com/ai/agent) 网站 [立即注册 和 登录账号](https://s.qiniu.com/umqq6n)
**STEP 2** 进入[【控制台 / AI大模型推理 / API Key】](https://portal.qiniu.com/ai-inference/api-key) 即可创建、或复制密钥。🔑

**备注:**
* 在创建KEY时,请输入名称信息(即备注),有助于帮您记住使用该KEY的用途、业务场景、或者内部使用者标识等。
* 用户可以通过一个KEY查询该KEY的Token用量;也可以使用管理员AK/SK签名查询该账号下全部KEY的Token用量。参考[用量查询](/products/aitokenapi/0-how-to-get-api-key)
* 用户可以通过管理员AK/SK签名,调用API来批量创建不同KEYs (待发布)

🎉🎉 恭喜你,已经成功获取到了 API 密钥了
# 大模型Token价格与计费说明 (/products/aitokenapi/0-ai-token-api-pricing)
最近更新时间: 2026-04-29 18:22:42
## **上线活动** [#上线活动]
为了庆祝产品上线,现针对所有 AI 推理的新客户,**免费赠送**全系列共享 **300 万** tokens 资源包,现在就立刻体验吧!
* 领取条件:推理服务新用户,之前未使用过推理服务的账号
* 领取方式:使用服务并产生计费后自动发放,可能有 1 小时左右延迟
* 查看方式:前往[我的资源包](https://portal.qiniu.com/financial/orders/respack-mgr/all)可以查看资源包的过期时间和剩余额度
* 抵扣范围:具体抵扣范围请前往账号查看资源包详情,以资源包详情信息为准(特别注意:新模型进入资源包的抵扣时间会与模型上线有所延迟)
* 额度用完:免费资源包额度用完之后会自动转为按量价格对后续用量进行计费,请务必关注资源包的剩余额度和用量信息,避免产生意外费用。
关于融合资源包详细使用规则,请阅读:[资源包使用规则](/products/aitokenapi/1-fusion-resource-package)
## **计费方式** [#计费方式]
AI 推理服务采用**按量付费**模式,根据实际消耗进行计费,无需预付费用。
### **更新周期** [#更新周期]
* 预估账单:延迟15分钟左右,每天可以在预估账单中查看截止15分钟之前的账单
* 资源包剩余额度:延迟15分钟左右,每天可以在资源包管理中查看截止15分钟之前的资源包用量剩余额度信息
### **价格说明** [#价格说明]
不同模型的单价不同,具体价格请查看[模型广场页面](https://www.qiniu.com/ai/models)。价格可能会根据市场情况进行调整,请定期关注最新价格信息。
### **余额不足处理** [#余额不足处理]
* 当账户余额不足时,推理/生成等 API 调用将返回错误,服务将暂停
* 建议设置余额预警,及时充值以保证服务连续性,建议至少保证余额满足 3 天的消费。
* 可前往[财务中心](https://portal.qiniu.com/financial/overview)查看账户余额和消费明细
## **费用查询** [#费用查询]
您可以通过以下方式查询用量和费用信息:
* **账单汇总**:[财务中心 - 预估账单](https://portal.qiniu.com/financial/bills/estimated-consume)
* **用量统计**:[控制台 - 用量统计](https://portal.qiniu.com/ai-inference/usage)
* **请求日志**:[控制台 - 请求日志](https://portal.qiniu.com/ai-inference/request-log)
* **资源包**:[我的资源包](https://portal.qiniu.com/financial/orders/respack-mgr/all)
## **常见问题** [#常见问题]
### **如何避免超额消费?** [#如何避免超额消费]
* 设置账户余额预警,及时充值
* 设置资源包余量预警,及时查看
* 定期查看消费明细,监控使用情况
### **资源包如何使用?** [#资源包如何使用]
资源包会自动抵扣符合条件的用量,无需手动操作。具体使用规则请参考:[资源包使用规则](/products/aitokenapi/1-fusion-resource-package)
# AI大模型融合资源包使用规则 (/products/aitokenapi/1-fusion-resource-package)
最近更新时间: 2026-05-09 10:37:18
# 概述 [#概述]
AI大模型融合资源包**Token数是以DeepSeek-V3.1基准的数量,在使用其他模型时扣减Token数将基于不同价格按比例抵扣**(即用越贵的模型扣除倍数高、输出上下文比输入更长时扣除倍数高、用越便宜的模型扣除系数越低)。通过统一的抵扣标准,让您能够在不同价位的AI模型间自由切换,享受便捷的计费体验。请登录七牛云小程序或主站控制台及时查看Token消耗数、请求记录,也可以通过API查询Token实时用量。
# 使用规则 [#使用规则]
## 1. 价格比例抵扣机制 [#1-价格比例抵扣机制]
融合资源包以 **deepseek-v3.1** 模型的输入价格(**0.004元/千tokens**)作为基准标准,根据您实际使用模型的各种计费项按比例进行抵扣。
### 计算公式 [#计算公式]
```text
抵扣数量 = 模型计费项实际用量 × 资源包抵扣比例
```
其中:
* **资源包抵扣比例** = 目标模型计费项价格 ÷ deepseek-v3.1标准价格
* **deepseek-v3.1标准价格** = 0.004元/千tokens(输入价格基准)
* **目标模型计费项价格** = 您实际使用模型的对应计费项价格/千tokens
### 示例说明 [#示例说明]
#### 示例1:使用更实惠的模型 [#示例1使用更实惠的模型]
* 假设模型A的某个计费项价格为 0.002元/千tokens
* 您的实际使用量:10,000 tokens
* 抵扣比例计算:0.002 ÷ 0.004 = 0.5
* 实际抵扣:10,000 × 0.5 = 5,000 tokens
* 说明:由于模型A的该计费项价格比基准价格低50%,抵扣比例为0.5,更加经济实惠
#### 示例2:使用基准价格模型 [#示例2使用基准价格模型]
* 使用deepseek-v3.1模型输入(0.004元/千tokens)
* 您的实际使用量:10,000 tokens
* 抵扣比例计算:0.004 ÷ 0.004 = 1
* 实际抵扣:10,000 × 1 = 10,000 tokens
* 说明:基准价格模型按1:1比例抵扣,计费透明直观
#### 示例3:使用高性能模型 [#示例3使用高性能模型]
* 假设模型B的某个计费项价格为 0.060元/千tokens
* 您的实际使用量:10,000 tokens
* 抵扣比例计算:0.060 ÷ 0.004 = 15
* 实际抵扣:10,000 × 15 = 150,000 tokens
* 说明:由于模型B的该计费项价格比资源包基准价格高,抵扣倍数为15,适合高质量需求场景
#### 示例4:使用顶级模型 [#示例4使用顶级模型]
* 假设模型C的某个计费项价格为 0.108元/千tokens(约 $15/1MTok)
* 您的实际使用量:10,000 tokens
* 抵扣比例计算:0.108 ÷ 0.004 = 27
* 实际抵扣:10,000 × 27 = 270,000 tokens
* 说明:由于模型C的该计费项价格比基准价格贵27倍,导致资源包消耗较大,需要时刻关注余量。
## 2. 后续计费方式 [#2-后续计费方式]
当资源包余额用尽后,系统将自动切换至**按量计费**模式,继续按照各模型的实际计费项价格为您提供服务,确保业务连续性。
## 3. 数据更新周期 [#3-数据更新周期]
* **用量统计**:分钟级更新
* **账户余额更新**:5-10分钟后 更新
* **资源包余额更新**:5-10分钟后 更新
## 4. 资源包抵扣范围 [#4-资源包抵扣范围]
不同类型的融合资源包具有不同的模型抵扣范围和适用场景:
### 抵扣范围说明 [#抵扣范围说明]
* **通用融合包**:覆盖大部分主流AI模型,适合多样化使用需求
* **专业融合包**:针对特定领域或高性能模型,抵扣范围相对集中
* **基础融合包**:主要支持基础模型和常用功能,经济实惠
### 重要提醒 [#重要提醒]
⚠️ **对于已发放到账户的资源包,具体的抵扣比例和支持的模型范围以资源包详情页面显示的信息为准**
不同规格的资源包可能有以下差异:
* 支持的模型种类和数量
* 具体的抵扣比例设置
* 计费项覆盖范围(如输入、输出、特殊功能等)
* 使用期限和额度限制
注意:请参考第7节说明,查看实时Token用量。**超出资源包设定用量会产生费用账单,欠费将导致账号冻结**。
### 查看方式 [#查看方式]
对于已购买的资源包,请查看资源包详情页面的:
* **抵扣比例列表**:显示该资源包对各模型的具体抵扣比例
* **适用范围说明**:明确列出支持的模型和计费项
* **使用限制条件**:了解任何特殊的使用要求或限制
## 5. 抵扣比例查询 [#5-抵扣比例查询]
您可以随时查看具体的资源包抵扣比例:
**控制台 → 财务中心 → 订单管理 → 资源包管理**

## 6. 使用优先级 [#6-使用优先级]
当您的账户同时拥有资源包和账户余额时:
1. **优先使用资源包**进行抵扣
2. 资源包用完后,**自动使用账户余额**按量计费
3. 无需手动切换,系统智能管理
## 7. 实际Token用量查询 [#7-实际token用量查询]
用户可登录控制台,在AI大模型推理控制台中查询用量:
* 在[控制台/AI大模型推理/API Key](https://portal.qiniu.com/ai-inference/api-key)中查询每个令牌(KEY)的近7天的用量
* 在[控制台/AI大模型推理/用量统计](https://portal.qiniu.com/ai-inference/usage)中查询所选定时段内每个模型ID、和每个KEY的用量

# 注意事项 [#注意事项]
1. **有效期限制**:资源包有效期内未使用完的余额恕不退还,请合理规划使用
2. **资源包叠加**:不同规格的资源包可以叠加使用,灵活满足各种需求
3. **实时调整**:资源包抵扣比例会根据模型的具体计费项价格实时调整
4. **使用监控**:建议定期查看资源包使用情况,合理规划使用计划,避免浪费
# 常见问题 [#常见问题]
## 问: 为什么我看不到资源包? [#问-为什么我看不到资源包]
**答:**
1. 首先须登录帐号,打开控制台左侧菜单AI大模型中[【创建API KEY】](/products/aitokenapi/0-how-to-get-api-key)(至少创建一个Key作为承载大模型Token资源包的载体)
2. 然后在控制台右上角[【财务中心/订单管理/资源包管理】](https://portal.qiniu.com/financial/orders/respack-mgr/current) 中查看奖励和发放的大模型资源包。
## 问: 为什么实际消耗与我的预期使用量不符? [#问-为什么实际消耗与我的预期使用量不符]
**答:** 这是使用AI工具时的常见现象,主要原因包括:
### 主要原因 [#主要原因]
1. **工具上下文开销**:AI工具通常会自动携带大量上下文信息和工具参数,这些隐性内容都会计入token消耗
2. **Agent智能迭代**:类似 ReAct 的智能Agent会进行多轮思考和工具调用,每次迭代都会产生token消耗
3. **认知偏差**:您可能只输入了简短的问题(十几个token),但系统内部实际调用时可能需要处理上万甚至十几万token的上下文
### 典型场景 [#典型场景]
* **AI助手对话**:每次交互可能包含完整的历史对话记录、工具定义说明、系统提示词等
* **复杂任务执行**:Agent执行复杂任务时,需要多轮分析、规划和工具调用才能给出最终结果
* **代码智能生成**:代码生成工具需要分析大量项目上下文和相关代码才能提供准确建议
### 优化建议 [#优化建议]
* **查看明细**:在控制台的使用详情中查看具体的token消耗明细,了解实际用量分布
* **了解机制**:深入了解所使用AI工具的token计费机制和工作原理
* **合理控制**:适当控制对话历史长度和上下文范围,在功能性与成本间找到平衡
# 相关文档 [#相关文档]
如需了解更多资源包相关信息,请参考:[资源包功能介绍](/account/resource-package-management/0-the-resource-bundle-is-introduced)
# AI 大模型企业订阅产品说明 (/products/aitokenapi/2-subscription-introduction)
最近更新时间: 2026-06-01 11:12:00
欢迎使用我们的 AI 大模型企业订阅服务!
我们专为企业用户打造了一站式 AI 推理订阅方案,现已全面升级。
服务覆盖主流大模型能力(通用对话、代码生成、推理增强、多模态等);
支持多家领先模型与版本的灵活选择和自由切换,可无缝接入常见的开发与业务系统(控制台、API/SDK、工作流与自动化集成等);
为贵司提供高可用、低延迟、可观测的稳定推理体验,帮助企业更快完成从原型验证到生产落地,全面提升研发效率与业务质量。
## **1. 订阅计划介绍** [#1-订阅计划介绍]
### **1.1 产品理念** [#11-产品理念]
企业在实际业务中往往需要更高的并发能力与更充裕的调用额度,而市面上大多数 AI 订阅方案主要面向个人用户设计,
在速率限制和额度管理上难以满足团队协作与生产级工作流的需求。为此 --
我们推出了多模型组合订阅计划,覆盖通用对话、代码生成、推理增强、多模态等主流模型能力,同时提供更充裕的可用额度与更灵活的刷新机制。
企业用户只需一个订阅,即可在等级范围内自由切换多种模型,享受企业级的服务保障,以更优的性价比驱动多场景 AI 落地,助力业务高效运转。
### **1.2 订阅等级** [#12-订阅等级]
* 每个订阅等级包含一组精选 AI 模型,具体模型详情请见2.6。
* 不同订阅等级的使用额度与限流配置不同。
### **1.3 订阅权益** [#13-订阅权益]
* **多模型自由切换**:无须额外购买多平台会员,使用统一 API Key 访问订阅包含的全部模型。
* **灵活用量管理**:按积分计算消耗,**`每自然周实时刷新额度`**,支持高效连续使用。
* **高可靠性和安全性**:专属 API Key 及访问控制确保服务安全。
* **升级与续订便利**:可随时按需求升级等级,支持自动续订,保证服务不中断。
## **2. 订阅规则说明** [#2-订阅规则说明]
### **2.1 模型与价格系数** [#21-模型与价格系数]
* 本订阅采用统一积分体系。
* **`不同模型根据其刊例价设有对应的价格系数,调用时后端按「实际消耗token × 价格系数」实时扣除积分`** 。
* **`价格系数越高的模型,同等积分可使用的token越少;价格系数越低,则越多`**。
* 以 ¥0.004/千token 为基准单价,价格系数为 1.0 表示与基准持平。
* 针对新模型或资源比较紧张的模型,价格系数会适度上调,已购买过的用户在[【我的订阅】](https://portal.qiniu.com/ai-inference/subscription/info) 可查看上调的“额外价格系数“。普通模型的额外价格系数均为1
### **2.2 访问权限与 API Key 管理** [#22-访问权限与-api-key-管理]
* 订阅必须通过订阅专用 API Key 访问
* 使用订阅专用 API Key 访问非订阅等级内模型或超额请求将被拒绝,提示错误信息。
### **2.3 速率与用量限制** [#23-速率与用量限制]
* 采用基于积分的用量限制,**`按每自然周定期刷新额度`**,避免长时间等待,体验更流畅。
* 订阅等级对应不同月度积分总额度,所有订阅内模型共享此额度,防止额度被单独模型快速耗尽。
### **2.4 订阅管理政策** [#24-订阅管理政策]
* 支持选择不同等级订阅,满足不同场景需求。
* **升级订阅**:切换后 **`立即生效`** 。
* **取消订阅**:通过取消续订方式生效,服务到期自动终止。
* **自动续订**:到期自动续费,服务持续运行。
### **2.5 订阅周期与扣费** [#25-订阅周期与扣费]
* 订阅周期分别为:一个月30天,一个季度90天,一年365天。
* 下次扣费时间:在订阅周期到期的最后一天扣费
### **2.6 订阅与按量付费的差异** [#26-订阅与按量付费的差异]
| 差异 | 企业订阅 | 按量付费 |
| -------- | ------------------------ | --------------------------------------------------- |
| **请求限制** | 与当前订阅相关 | 标准限制 |
| **模型范围** | 订阅内的模型 | 全部模型 |
| **付费方式** | 购买每月/季/年订阅,无法后付费,无法按量付费。 | 购买资源包或者按量,支持后付费,但需确保账户内有充足可用资源(如资源包、抵扣券、充值余额或信用额度)。 |
### **2.7 当前覆盖模型范围:** [#27-当前覆盖模型范围]
* z-ai/glm-4.6
* z-ai/glm-4.7
* z-ai/glm-5
* z-ai/glm-5.1
* minimax/minimax-m2.5
* minimax/minimax-m2.5-highspeed
* minimax/minimax-m2.7
* minimax/minimax-m3
* moonshotai/kimi-k2.5
* moonshotai/kimi-k2.6
* deepseek/deepseek-v3.2-251201
* deepseek/deepseek-v4-pro
* deepseek/deepseek-v4-flash
后续将持续更新…敬请期待
## **3. 关于自动续费服务** [#3-关于自动续费服务]
* 在购买前,请您详细阅读 [《自动续费服务协议》](https://www.qiniu.com/agreements/auto-renewal),了解续费规则、续费方式等相关条款。
## **4. 常见问题解答(FAQ)** [#4-常见问题解答faq]
**Q1:我可以同时购买多个订阅吗?**
A1:单个用户当前仅支持同时拥有一个有效的 AI 订阅。如需提升服务,可以升级当前订阅等级。
**Q2:订阅内的模型是否会随时变动?**
A2:订阅内模型会根据市场与技术动态适时优化,重大调整将提前通知,保障用户体验连续性。
**Q3:如果我的积分用完了怎么办?**
A3:如果仅是当前每周窗口内的额度已耗尽,建议您耐心等待下一个刷新周期,届时额度将自动恢复;若当月订阅的全部额度均已用完,建议您通过按量付费模式的 API Key 继续使用服务,确保您的使用不受影响。
**Q4:API 访问权限如何保障安全?**
A4:订阅仅能通过订阅 API Key 访问,可以前往[【API Key 管理】](https://portal.qiniu.com/ai-inference/api-key)管理你的订阅访问。
**Q5:可以随时升级或取消计划吗?**
A5:可以,升级订阅计划,权益**立即生效(例如从包月升级到包季或包年)**;取消订阅后,当前订阅周期内服务不变,到期后自动终止。目前暂不支持降级。
**Q6:订阅的积分额度没用完会不会过期?**
A6:所有订阅计划的月度额度遵循"**订阅周期清零**"规则,不累计至下一周期。订阅周期分别为:一个月30天,一个季度90天,一年365天。请您合理规划用量。
**Q7:"每自然周刷新额度"具体是什么意思?如果我每自然周额度不够用怎么办?**
A7:这意味着系统**每自然周**为您补充一次可用额度。如果您在某个刷新周期内提前用完额度,则需要等待下一个刷新周期开始才能获得新额度。建议您合理规划使用;或者您也可以随时用"按量模式"应急。且固定时间内,订阅范围中所有模型**共享同一额度限制**,不单独计算。
**Q8:升级订阅时费用如何计算?**
A8:升级时,系统会自动计算当前订阅剩余天数对应的差价,您只需支付差额即可。升级后新计划立即生效,下次续费将按新计划价格扣费。例如:您在包月计划使用一半时升级到包季,只需按照剩余天数补缴差价,无需重新支付全额。
**Q9:价格系数与额外价格系数是如何抵扣积分的?**
A9:以deepseek-v3.2-251201为例,模型的输入价为0.002 元 / K,输出价为0.003 元 / K;价格系数=用户的实际使用费用/0.004(基准价);抵扣积分=用户实际用量x价格系数x 额外价格系数
假设用户其中一次请求输入tokens为300,输出tokens为50,根据价格系数折算后抵扣的积分为:300x(0.002/0.004)+50 x(0.003/0.004) x 1 =187.5
最后抵扣积分为187积分(积分保留整数)
**Q10:我该如何选择订阅计划?**
A10:您可以根据贵司主要的使用场景来预估大致的需求量。如果仍难以决定,欢迎随时联系我们的客服,将竭诚为您提供个性化的选择建议。
**Q11:我可以在购买之后退款吗?**
A11:用户通过购买本订阅以及自动续费完成的扣款,除法律法规另有规定、支付渠道另有规则或本平台另有明确承诺外,已生效周期的服务费用不予退还,感谢您的理解。
## **5. 结束语** [#5-结束语]
我们致力于打造透明公平、灵活便捷的 AI 模型订阅服务,帮助您轻松体验最前沿、最丰富的人工智能能力。若您遇到问题,欢迎随时联系我们的客服支持,获取更多帮助与建议!
感谢您的支持与信赖,祝您使用愉快!
# 实名认证说明 (/products/aitokenapi/0-verify-real-name)
最近更新时间: 2026-03-26 10:34:00
## 一、实名认证要求 [#一实名认证要求]
根据《中华人民共和国网络安全法》《互联网信息服务管理办法》等国家法律法规的要求,所有云服务提供商必须对用户进行实名认证后方可提供服务。为了合法合规地为您提供 AI 推理服务,我们需要您完成实名认证。
## 二、新用户体验政策 [#二新用户体验政策]
为了让您更好地体验我们的 AI 推理服务,我们为新注册用户提供 **24 小时免认证体验期**:
* **体验期时长**:自首次使用 AI 推理产品起 24 小时内(与注册时间无关)
* **体验期权益**:在此期间您可以正常使用 AI 推理服务的各项功能
* **认证提醒**:我们会在体验期内多次提醒您完成实名认证
* **逾期限制**:24 小时体验期结束后,如您尚未完成实名认证,将无法继续使用服务
**重要提示**:为避免影响您的正常使用,建议您尽早完成实名认证。
## 三、未实名用户服务限制 [#三未实名用户服务限制]
在完成实名认证之前,您的账户将受到以下限制:
### 请求频率限制 [#请求频率限制]
* **RPM(Requests Per Minute)**:每分钟请求次数受到限制
* **TPM(Tokens Per Minute)**:每分钟处理的 Token 数量受到限制
这些限制旨在确保服务的合规性和安全性。完成实名认证后,您将享受完整的服务配额和更高的使用额度。
## 四、如何完成实名认证 [#四如何完成实名认证]
前往 [个人中心/实名认证](https://portal.qiniu.com/developer/user/identity/choice)模块完成实名认证。
## 五、常见问题 [#五常见问题]
**Q:实名认证需要多长时间?**
A:通常情况下,实名认证审核会在当天内完成。
**Q:我的个人信息安全吗?**
A:我们严格遵守国家相关法律法规,采用严格的信息加密和安全措施保护您的个人信息。
**Q:体验期过后没有完成认证会怎样?**
A:24 小时体验期结束后,如您未完成实名认证,账户将无法继续使用 AI 推理服务,直到完成认证为止。
**Q:企业用户如何认证?**
A:企业用户需要提供营业执照等企业资质文件进行企业认证。
## 六、联系我们 [#六联系我们]
如果有任何意外和特殊情况,请通过工单联系我们。
# 计费预估 (/products/aitokenapi/1-ai-inference-bill-api)
最近更新时间: 2026-05-09 10:59:57
您可以在 **【AI 大模型推理】** 控制台查询计费预估数据。
**注意:**
* 该页面账单不计算折扣、资源包、抵扣劵等优惠,只展示基于使用量和模型价格计算的预估计费数据,仅作为实时费用账单参考,实际以最终财务中心的 **[月结算账单](https://portal.qiniu.com/financial/bills/overview)** 为准。
* 包含资源包抵扣的预估计费数据可在 **[按量计费预估](https://portal.qiniu.com/financial/bills/estimated-consume)** 查看
## **计费预估** [#计费预估]
1. 登录 **【AI大模型推理】** 控制台进入 **[计费预估](https://portal.qiniu.com/ai-inference/bill)** 界面
2. 选择 **查询月份**,然后点击 **【查询】** 即可,支持导出Excel数据。

# 请求日志 (/products/aitokenapi/2-request-log-api)
最近更新时间: 2026-05-09 10:59:00
您可以在 **【AI 大模型推理】** 控制台查询请求日志
## **请求日志** [#请求日志]
1. 登录 **【AI大模型推理】** 控制台进入 **[请求日志](https://portal.qiniu.com/ai-inference/request-log)** 界面
2. 点击 **【筛选条件】** 勾选所需条件,点击 **【查询】** 即可。

3. 说明:
* 单次查询指定时间范围不能超过一个月,数据量较大建议进行分段查询;
* 出现请求错误时,如果本地未记录到请求ID,可以在这里查询,将对应的请求ID通过 **[工单](https://support.qiniu.com/tickets/new-for-person)** 给技术支持排查确认;
* 筛选条件支持:**时间范围**、**API Key**、**模型**、**响应状态**

# 用量统计 (/products/aitokenapi/3-use-count-api)
最近更新时间: 2026-05-09 10:57:58
您可以在 **【AI 大模型推理】** 控制台查询用量统计数据
## **用量统计** [#用量统计]
1. 登录 **【AI大模型推理】** 控制台进入 **[用量统计](https://portal.qiniu.com/ai-inference/usage)** 界面
2. 选择 **查询时间范围**、**天/小时**、**API Key(不勾选默认查询全部)** ,然后点击 **【查询】** 即可

3. 如需导出数据,点击 **【导出】** 按钮即可,导出数据是JSON格式
4. **说明:**
* 查询时间范围小于等于7天:支持按天或小时查询
* 查询时间范围大于7天:仅支持按天查询
* 支持根据 **API Key** 查询用量数据
# 请求日志下载 (/products/aitokenapi/0-log-download-api)
最近更新时间: 2026-07-09 15:41:21
# 请求日志导出接口 [#请求日志导出接口]
**Base URL:** `https://api.qnaigc.com`
## 概述 [#概述]
本接口用于导出请求日志(`monitor_log`),是 log 查询接口的导出版本。提供两个接口:
* **`GET /v2/stat/export_log`**:以 JSON 响应体返回(带统一包裹结构)。
* **`GET /v2/stat/export_log_file`**:以 JSON **文件**形式返回(浏览器触发下载,响应体为裸数组)。
两个接口的**查询参数、鉴权方式、过滤与排序逻辑完全相同**,**仅返回结构不同**(见下方各接口的响应说明)。
> 日志保留周期约为 30 天(以实际配置为准),请及时下载所需数据。
***
## 认证方式 [#认证方式]
支持两种鉴权方式:
1. **APIKey 认证**:使用 APIKey 进行认证
```
Authorization: Bearer
```
2. **AK/SK 签名认证**:使用七牛云标准的 [AK/SK](https://portal.qiniu.com/developer/user/key) 签名认证
```
Authorization: Qiniu :
```
> 数字签名生成算法可参考文档站中「批量生成 APIKey」部分。
***
## 查询参数(两接口通用) [#查询参数两接口通用]
| 参数 | 类型 | 必填 | 说明 |
| -------- | --------- | -- | -------------------------------------------------------------------------------- |
| `start` | `string` | 否 | 开始时间,格式为 RFC3339(`2006-01-02T15:04:05Z07:00`)。作为时间过滤的**左闭**边界(`>=`)。建议传入以限定查询范围。 |
| `end` | `string` | 否 | 结束时间,格式为 RFC3339。作为时间过滤的**右开**边界(`<`)。当 `start` 与 `end` **同时**传入时才会校验范围上限。 |
| `size` | `integer` | 是 | 每页返回数据条数,范围为 `1~500`,**无默认值**,不传或越界将返回 400 错误。 |
| `page` | `integer` | 否 | 页码,从 `1` 开始,不传或 `<=0` 时默认为 `1`。用于超出 500 条数据的分批导出。 |
| `model` | `string` | 否 | 模型名称,用于过滤特定模型的请求日志。示例:`deepseek/deepseek-v3.1` |
| `code` | `integer` | 否 | HTTP 状态码过滤,精确匹配。`0` 或不传表示不限制(返回所有状态码)。示例:`200` |
| `apikey` | `string` | 否 | APIKey 值,用于过滤特定 APIKey 的请求日志,会同时匹配带或不带 `Bearer ` 前缀的记录。示例:`sk-xx` |
**请求头:**
| 名称 | 类型 | 必填 | 描述 |
| --------------- | -------- | -- | ------------------------ |
| `Authorization` | `string` | 是 | 支持 APIKey 与 AK/SK 两种鉴权方式 |
### 排序与时间限制 [#排序与时间限制]
* **排序**:结果固定按请求开始时间(`start_time`)**倒序**排列,不支持自定义排序。
* **时间上限**:当 `start` 与 `end` 同时传入时,`end - start` 不得超过 **35 天**,且 `end` 不得早于 `start`,否则返回 400 错误。
* 仅传入 `start` 或 `end` 其中一个时,不做范围上限校验(按单边过滤)。
* 时间按项目标准时区 CST(东八区)解析。
***
## 接口一:导出日志(JSON 响应体) [#接口一导出日志json-响应体]
### **GET** `/v2/stat/export_log` [#get-v2statexport_log]
以项目统一响应结构返回 JSON,`data` 字段**直接为日志数组**。
**请求示例:**
```bash
curl --location "https://api.qnaigc.com/v2/stat/export_log?start=2024-01-01T00:00:00Z&end=2024-01-08T00:00:00Z&size=100&page=1" \
--header "Authorization: Bearer sk-xx"
```
**成功响应(200 OK)**
```json
{
"status": true,
"data": [
{
"id": "65a1f2c3...",
"model_id": "deepseek/deepseek-v3.1",
"api_key": "sk-***xxxx",
"start_time": "2024-01-01T10:00:00+08:00",
"end_time": "2024-01-01T10:00:02+08:00",
"server_type": "chat",
"code": 200,
"errors": null,
"state": "",
"usage": {
"input": 1024,
"output": 512,
"cached_input": 0,
"cache_creation": 0
},
"bo_usage": {
"input_tokens": 1024
},
"bo_usage_cost": {
"input_tokens": 0.001
}
}
]
}
```
***
## 接口二:导出日志(JSON 文件下载) [#接口二导出日志json-文件下载]
### **GET** `/v2/stat/export_log_file` [#get-v2statexport_log_file]
以**文件**形式返回。响应头包含:
```
Content-Disposition: attachment; filename=logs.json
Content-Type: application/json
```
**响应体为裸数组**(**没有** `status` / `data` 包裹),内容与 `export_log` 的 `data` 字段完全一致。
**请求示例:**
```bash
curl --location "https://api.qnaigc.com/v2/stat/export_log_file?start=2024-01-01T00:00:00Z&end=2024-01-08T00:00:00Z&size=100&page=1" \
--header "Authorization: Bearer sk-xx" \
-o logs.json
```
**成功响应(200 OK)**
```json
[
{
"id": "65a1f2c3...",
"model_id": "deepseek/deepseek-v3.1",
"api_key": "sk-***xxxx",
"start_time": "2024-01-01T10:00:00+08:00",
"end_time": "2024-01-01T10:00:02+08:00",
"server_type": "chat",
"code": 200,
"errors": null,
"state": "",
"usage": {
"input": 1024,
"output": 512
}
}
]
```
> **注意区别**:`export_log` 返回 `{"status":true,"data":[...]}`;`export_log_file` 直接返回 `[...]`。两者字段含义相同,仅包裹方式不同。
***
## 响应字段说明(日志对象 `data[]`) [#响应字段说明日志对象-data]
| 字段 | 类型 | 说明 |
| --------------- | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id` | `string` | 日志记录的唯一 ID(MongoDB 文档 `_id`) |
| `model_id` | `string` | 请求所使用的模型标识 |
| `api_key` | `string` | 发起请求的 APIKey(已**脱敏**处理) |
| `start_time` | `string` | 请求开始时间,RFC3339 格式 |
| `end_time` | `string` | 请求结束时间,RFC3339 格式 |
| `server_type` | `string` | 服务类型,如 `chat` / `image` / `video` 等 |
| `code` | `integer` | 上游返回的 HTTP 状态码 |
| `errors` | `array<string>` | 错误信息列表,无错误时为 `null` |
| `state` | `string` | 请求状态标识 |
| `usage` | `object` | 用量统计。key 因模型类型不同而异,常见包括 `input`、`output`、`cached_input`、`cache_creation`(文本/对话类),`tts_bytes`(TTS)、`asr_ms`(ASR)、`ocr_requests`(OCR)、`search_requests`(搜索)、`video_second`(视频)等;无用量数据时为 `null` |
| `bo_usage` | `object` | BO 计费用量明细(按计费项 key 聚合),无数据时省略 |
| `bo_usage_cost` | `object` | BO 计费用量对应的费用(人民币元),无数据时省略 |
***
## 错误响应 [#错误响应]
接口对错误采用两种返回风格:
### 1. 真实 HTTP 错误状态码(`status:false` + `error` 对象) [#1-真实-http-错误状态码statusfalse--error-对象]
| HTTP 状态码 | 触发条件 | 响应示例 |
| -------- | ---------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| `400` | 参数错误:`size` 越界、时间格式非法、时间范围超过 35 天、`end` 早于 `start` 等 | `{"status":false,"error":{"message":"invalid size,should be between 1 and 500","type":"param err"}}` |
| `401` | AK/SK 签名无效或缺失 | `{"status":false,"error":{"message":"invalid ak/sk sign","type":"authorization err"}}` |
### 2. HTTP 200 + `status:false`(项目统一错误风格) [#2-http-200--statusfalse项目统一错误风格]
| 场景 | 响应示例 |
| ----------------- | -------------------------------------------- |
| APIKey 无效或未提供鉴权 | `{"status":false,"error":"UNAUTHENTICATED"}` |
| 服务器内部错误(如数据库查询失败) | `{"status":false,"error":"INTERNAL_ERROR"}` |
> ⚠️ 注意:鉴权失败(APIKey 模式)与服务器内部错误返回的是 **HTTP 200**,需以响应体中的 `"status": false` 判断是否成功。
***
## 代码示例 [#代码示例]
### 使用 APIKey 认证 [#使用-apikey-认证]
```bash
curl --location "https://api.qnaigc.com/v2/stat/export_log?start=2024-01-01T00:00:00Z&end=2024-01-08T00:00:00Z&size=100&page=1" \
--header "Authorization: Bearer sk-xx"
```
### 使用 AK/SK 签名认证 [#使用-aksk-签名认证]
```bash
curl --location "https://api.qnaigc.com/v2/stat/export_log?start=2024-01-01T00:00:00Z&end=2024-01-08T00:00:00Z&size=100&page=1&model=deepseek/deepseek-v3.1" \
--header "Authorization: Qiniu :"
```
### 导出为文件 [#导出为文件]
```bash
curl --location "https://api.qnaigc.com/v2/stat/export_log_file?start=2024-01-01T00:00:00Z&end=2024-01-08T00:00:00Z&size=100&page=1" \
--header "Authorization: Bearer sk-xx" \
-o logs.json
```
### 分批导出大量数据 [#分批导出大量数据]
单次最多返回 500 条(`size` 上限为 500)。如需导出 1500 条,需分 3 次请求,每次仅修改 `page`,其余参数保持不变:
```bash
# 第 1 批:page=1, size=500
curl --location "https://api.qnaigc.com/v2/stat/export_log?start=2024-01-01T00:00:00Z&end=2024-01-08T00:00:00Z&size=500&page=1" \
--header "Authorization: Bearer sk-xx"
# 第 2 批:page=2, size=500
curl --location "https://api.qnaigc.com/v2/stat/export_log?start=2024-01-01T00:00:00Z&end=2024-01-08T00:00:00Z&size=500&page=2" \
--header "Authorization: Bearer sk-xx"
# 第 3 批:page=3, size=500
curl --location "https://api.qnaigc.com/v2/stat/export_log?start=2024-01-01T00:00:00Z&end=2024-01-08T00:00:00Z&size=500&page=3" \
--header "Authorization: Bearer sk-xx"
```
***
## 注意事项 [#注意事项]
1. **两接口仅返回结构不同**:`export_log` 返回 `{status, data}` 包裹;`export_log_file` 返回裸数组并触发文件下载。参数、鉴权、过滤与排序逻辑完全一致。
2. **时间范围**:`start` 与 `end` 同时传入时,跨度上限为 **35 天**,且 `end` 不得早于 `start`;单边传入不校验上限。
3. **`size` 必填**:范围为 `1~500`,无默认值,不传或越界返回 400。
4. **分页**:超出 500 条时用 `page` 分批,每次仅改 `page`、其余参数不变。
5. **排序**:固定按 `start_time` 倒序,不支持自定义。
6. **时间格式**:RFC3339(`2006-01-02T15:04:05Z07:00`),按东八区解析。
7. **APIKey 脱敏**:返回结果中的 `api_key` 已做脱敏处理,非完整明文。
8. **成功判断**:APIKey 模式下鉴权失败与服务器错误均返回 HTTP 200,须依据响应体 `"status"` 字段判断。
# 全网搜索 API (/products/aitokenapi/1-web-search-api)
最近更新时间: 2026-03-26 11:49:31
# 简介 [#简介]
本接口提供高质量的全网搜索服务(即`百度Search API`)。
支持多种搜索类型和过滤条件,返回结构化的搜索结果,适用于智能问答、内容聚合、信息检索等多种应用场景。
# 功能特性 [#功能特性]
* **多种搜索类型**:支持网页搜索、图片搜索等多种搜索模式
* **灵活过滤**:支持时间过滤、站点过滤等多维度筛选条件
* **结构化结果**:返回标准化的搜索结果,包含标题、链接、摘要、来源等完整信息
* **高可用性**:基于成熟的搜索引擎技术,提供稳定可靠的搜索服务
* **易于集成**:标准 RESTful API,便于与各类系统对接
# API 接入点 [#api-接入点]
```
https://api.qnaigc.com/v1
```
# API 调用方式 [#api-调用方式]
## 获取接口密钥 [#获取接口密钥]
* 使用前提:[获取 API KEY(API 密钥)](/products/aitokenapi/0-how-to-get-api-key)
## 1. 请求示例 [#1-请求示例]
使用 curl 命令调用搜索接口:
```bash
export OPENAI_BASE_URL="https://api.qnaigc.com/v1"
export OPENAI_API_KEY="<你的七牛云 AI API KEY>"
curl --location "$OPENAI_BASE_URL/search/web" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $OPENAI_API_KEY" \
--data '{
"query": "今日新闻",
"max_results": 10,
"search_type": "web",
"time_filter": "year",
"site_filter": ["news.cctv.com", "www.xinhuanet.com"]
}'
```
## 参数说明 [#参数说明]
| 参数名 | 类型 | 必填 | 说明 |
| ------------ | ------ | -- | ----------------------------------------------------- |
| query | string | 是 | 搜索关键词或查询语句 |
| max\_results | int | 否 | 返回结果数量,网页搜索默认20,最大50,视频最大10(默认5),图片搜索最大30(默认15) |
| search\_type | string | 否 | 搜索类型,默认"web"(网页搜索) |
| time\_filter | string | 否 | 时间过滤,可选值:week(一周内)、month(一月内)、year(一年内)、semiyear(半年内) |
| site\_filter | array | 否 | 站点过滤,指定搜索特定网站的内容(最多20个) |
## 搜索类型说明 [#搜索类型说明]
| 搜索类型 | 说明 |
| ----- | -------- |
| web | 网页搜索(默认) |
| video | 视频搜索 |
| image | 图片搜索 |
# 返回结果示例 [#返回结果示例]
```json
{
"success": true,
"data": {
"query": "今日新闻",
"results": [
{
"id": 1,
"title": "美政府"停摆"40天 共和党称"已有协议"拟今日表决",
"url": "https://news.cctv.com/2025/11/10/ARTI4CtlbQAsLlX48iMqqvBE251110.shtml",
"content": "美东时间11月9日,是本次美国政府自10月1日"停摆"以来的第40天。政府"停摆"已经在过去的一个多月内给全美多行业带来负面影响...",
"date": "2025-11-10 09:14:08",
"source": "央视国际",
"score": 1,
"type": "web",
"icon": "https://search-operate.cdn.bcebos.com/d6289c25f5be88e38885ced0f53b60ef.jpeg",
"authority_score": 1
},
{
"id": 2,
"title": "重要数据,今日公布;下周一,巴菲特发声",
"url": "https://finance.eastmoney.com/a/202511093558946224.html",
"content": "据新华社,商务部新闻发言人就安世半导体问题答记者问。中方注意到荷兰经济大臣卡雷曼斯于11月6日发表的声明...",
"date": "2025-11-09 08:29:00",
"source": "东方财富网",
"score": 1,
"type": "web",
"icon": "https://finance.eastmoney.com/favicon.ico",
"authority_score": 1
}
],
"total": 17,
"request_id": "3b3d247c-719a-4856-a231-f35614bfa840"
}
}
```
# 返回字段说明 [#返回字段说明]
## 响应结构 [#响应结构]
| 字段名 | 类型 | 说明 |
| ------- | ------- | ------------- |
| success | boolean | 请求是否成功 |
| message | string | 错误信息(仅在失败时返回) |
| data | object | 搜索结果数据 |
## 搜索结果数据(data) [#搜索结果数据data]
| 字段名 | 类型 | 说明 |
| ----------- | ------ | --------- |
| query | string | 搜索查询词 |
| results | array | 搜索结果列表 |
| total | int | 搜索结果总数 |
| request\_id | string | 本次请求的唯一标识 |
## 搜索结果项(results 数组元素) [#搜索结果项results-数组元素]
| 字段名 | 类型 | 说明 |
| ---------------- | --------------------------------------------------------------------- | ----------------------------------------- |
| id | int | 结果项ID |
| title | string | 页面标题 |
| url | string | 页面链接 |
| content | string | 页面摘要内容 |
| date | string | 发布时间 |
| source | string | 来源网站名称 |
| score | float | 相关性评分 |
| type | string | 结果类型(web/news等) |
| icon | string | 网站图标链接 |
| authority\_score | float | 权威性评分 |
| image | 包含三个字段:url,height,width,表达图片的链接,高,宽 | 图片 |
| video | 包含: url,height,width,size(单位bytes),duration(时长,单位秒),hover\_pic(封面url) | 对于url为空的情况,上级的页面链接url字段为视频平台链接,视频本身无直接url |
# 示例代码 [#示例代码]
```python
import requests
import json
def web_search(query, max_results=10):
url = "https://api.qnaigc.com/v1/search/web"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_KEY"
}
data = {
"query": "今日新闻",
"max_results": 10,
"search_type": "web"
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
result = response.json()
if result["success"]:
return result["data"]
else:
print(f"搜索失败: {result['message']}")
else:
print(f"请求失败: {response.status_code}")
return None
# 使用示例
results = web_search("今日新闻", 5)
if results:
print(f"找到 {results['total']} 个结果")
for item in results['results']:
print(f"标题: {item['title']}")
print(f"链接: {item['url']}")
print(f"摘要: {item['content'][:100]}...")
print("---")
```
# MCP 使用说明⚒️ (/products/aitokenapi/2-mcp-user-manual)
最近更新时间: 2026-06-08 15:21:50
## 前言 [#前言]
本说明文档旨在帮助用户快速了解并高效使用 MCP 接入服务。MCP(模型上下文协议)接入服务是为各类大模型推理服务提供统一、安全、标准化接入与编排的中间层。关于 MCP 协议本身,请参见《[什么是 MCP](/products/aitokenapi/0-what-is-mcp)》文档。
## 产品简介 [#产品简介]
MCP 接入服务是七牛云 AI 推出的统一模型能力接入与编排平台。它为企业和开发者提供标准协议转换、安全密钥托管、服务聚合、统一管理等能力,帮助用户高效、安全地对接和管理各类 MCP 服务。
### 适用场景 [#适用场景]
1. 一步调用LLM推理大模型和多个流行MCP工具,支持开发更复杂的Agent应用
2. 需要灵活编排、聚合多种工具和模型,统一接入和管理,增强服务扩展性
3. 需要集中安全托管多种MCP的敏感密钥,避免在多个用户和终端暴露
4. 本地终端系统多样,难以配置和运行多种代码编写和工具依赖的MCP服务
## 接入方式总览 [#接入方式总览]
⚒️ MCP 支持多种标准协议接入,满足不同业务和系统集成需求:
### 1、Agent 协议接入 [#1agent-协议接入]
七牛云 AI Agent 协议目前兼容 OpenAI,可以无缝对接到 OpenAI 的生态链中。
* 地址格式:
`https://api.qnaigc.com/v1/agent/instance/${mcp-id}`
* 适用场景:无需本地部署,直接通过兼容 OPENAI 的 Agent 协议接入
### 1.1、Agent 的多服务聚合 [#11agent-的多服务聚合]
* 支持在 BaseUrl 中拼接多个 MCP-ID,实现一次聚合多个服务:
`https://api.qnaigc.com/v1/agent/group/${mcp-id-1},${mcp-id-2},${mcp-id-3}`
### 2、标准 MCP 协议接入 [#2标准-mcp-协议接入]
* SSE 协议:
`https://api.qnaigc.com/v1/mcp/sse/${mcp-id}`
* HTTP-Streamable 协议:
`https://api.qnaigc.com/v1/mcp/http-streamable/${mcp-id}`
* 适用场景:与本地 MCP 服务更灵活的搭配使用
## 核心优势 [#核心优势]
* **协议标准化**:支持 OPENAI、SSE、HTTP-Streamable 等主流协议,屏蔽底层差异
* **安全托管**:API Key、密钥等敏感信息云端托管,终端无需暴露
* **灵活聚合**:支持多服务聚合调用,能力自由组合
* **统一管理**:可视化控制台统一管理所有接入服务
## 主要功能 [#主要功能]
* MCP 服务接入与协议转换
* 安全密钥托管与权限管理
* 支持标准协议(OPENAI、SSE、HTTP-Streamable)对接
* 多服务聚合与编排
* 可视化服务管理
## 详细配置与使用示例 [#详细配置与使用示例]
### 控制台配置 MCP 接入服务 [#控制台配置-mcp-接入服务]
* 登录七牛云 AI 控制台,进入 [MCP 服务管理页面](https://portal.qiniu.com/ai-inference/mcp/store)
* 添加或管理已有的 MCP 服务,获取专属的 MCP-ID
### 获取接入地址 [#获取接入地址]
* 控制台会为每个 MCP 接入服务生成专属的接入地址,支持多种协议
### Agent 协议详细示例 [#agent-协议详细示例]
以 `curl` 为例:
```bash
export OPENAI_BASE_URL="https://api.qnaigc.com/v1/agent/instance/${mcp-id}"
export OPENAI_API_KEY="<七牛云 AI API KEY>"
curl "$OPENAI_BASE_URL/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"messages": [{"role": "user", "content": "请调用你支持的三个 MCP 能力,并列举全部能力"}],
"model": "deepseek-v3-tool"
}'
```
#### 注意事项 [#注意事项]
* Agent 协议下无需本地安装任何 MCP 组件,直接调用即可
* API Key 请妥善保管,避免泄露
* MCP 接入服务本身不直接提供大模型能力,而是作为能力编排与接入中间层
### MCP 标准协议接入服务 [#mcp-标准协议接入服务]
我们支持标准的 MCP 协议类型,选择对应的 MCP 协议地址配置到 MCP 客户端上即可,这里我们以 Node 的官方 SDK 中使用 HTTPStreamable 为例子:
```javascript
import { Client } from "@modelcontextprotocol/sdk/client/index"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp"
const serverUrl = '你的 MCP 服务 Url '
const apiKey = '你的七牛云 AI 推理 API Key'
const client = new Client({
name: 'qiniu-sse-test-client',
version: '1.0.0'
})
// 这里设置你的七牛云 api key 和 StreamableHTTP 连接地址
const transport = new StreamableHTTPClientTransport(new URL(serverUrl), {
requestInit: { headers: { 'Authorization': `Bearer ${apiKey}` } }
})
async function main() {
// 开始连接
await client.connect(transport)
// 列举 MCP 工具
const tools = await client.listTools()
// 查看支持的工具
console.log(tools)
}
main()
.then(() => { console.log('Client connected successfully') })
.catch((error) => { console.error('Error connecting client:', error) })
```
## 常见问题 [#常见问题]
1. **如何获取 MCP-ID?**
* 登录控制台,在 MCP 接入服务详情页可查看和复制
2. **Agent 协议和标准 MCP 协议有何区别?**
* Agent 协议适合无需本地部署、直接云端调用场景;标准协议适合与本地服务深度集成混排
3. **API Key 泄露怎么办?**
* 立即在控制台重置 API Key,并排查相关调用记录
4. **MCP 接入服务能否直接提供大模型能力?**
* 不能,MCP 接入服务仅作为能力编排与接入中间层,实际模型能力由后端服务提供
## 联系我们 [#联系我们]
如有更多问题或建议,请联系七牛云 AI 技术支持。
# OpenClaw 安装配置指南 (/products/aitokenapi/1-openclaw-installation-cuide)
最近更新时间: 2026-04-29 17:43:45
# OpenClaw 安装配置指南 [#openclaw-安装配置指南]
## 1. 介绍 [#1-介绍]
OpenClaw 是一个强大的 AI 代理工具,支持配置多种 AI 模型提供商。通过 OpenClaw,您可以轻松接入七牛云 AI 推理服务,使用多种先进的大语言模型来提升您的开发效率。
OpenClaw 的主要特点:
* 🚀 支持多模型提供商配置
* 🔧 灵活的配置方式
* 💡 开箱即用的 AI 代理能力
* 🔐 安全的 API Key 管理
## 2. 安装 [#2-安装]
### 主要流程 [#主要流程]
1. **确认环境**:准备 Node.js 22+(支持 macOS / Linux / Windows,Windows 建议 WSL2)。
2. **执行安装**(推荐官方脚本):
```bash
curl -fsSL https://openclaw.ai/install.sh | bash
```
3. **完成初始化**:按提示完成 onboarding;若需要手动安装可使用:
```bash
npm install -g openclaw@latest
openclaw onboard --install-daemon
```
### 安装完成后检查 [#安装完成后检查]
```bash
openclaw doctor
openclaw status
openclaw dashboard
```
### 报错处理 [#报错处理]
安装报错(包括 `npm/pnpm`、`sharp build errors`、`openclaw not found` 等)请直接参考官方安装文档:
* [https://docs.openclaw.ai/install](https://docs.openclaw.ai/install)
* [https://docs.openclaw.ai/install#npm-pnpm:sharp-build-errors](https://docs.openclaw.ai/install#npm-pnpm:sharp-build-errors)
## 3. 配置七牛模型 [#3-配置七牛模型]
### 环境变量配置 [#环境变量配置]
首先,设置您的七牛 API Key 环境变量:
```bash
export QINIU_API_KEY="sk-your-api-key-here"
```
### 完整配置示例 [#完整配置示例]
在 OpenClaw 配置文件中添加以下配置:
```javascript
{
env: { QINIU_API_KEY: "sk-..." },
agents: {
defaults: {
model: { primary: "qiniu/deepseek-v3.2-251201" },
models: {
"qiniu/z-ai/glm-5": { alias: "GLM 5" },
"qiniu/deepseek-v3.2-251201": { alias: "DeepSeek V3.2" },
"qiniu/moonshotai/kimi-k2.5": { alias: "Kimi K2.5" },
"qiniu/minimax/minimax-m2.5": { alias: "Minimax M2.5" },
},
},
},
models: {
mode: "merge",
providers: {
qiniu: {
baseUrl: "https://api.qnaigc.com/v1",
apiKey: "${QINIU_API_KEY}",
api: "openai-completions",
models: [
{
id: "deepseek-v3.2-251201",
name: "DeepSeek V3.2",
reasoning: false,
input: ["text"],
contextWindow: 128000,
maxTokens: 8192,
compat: {
supportsStore: false,
supportsDeveloperRole: false,
supportsReasoningEffort: false
}
},
{
id: "moonshotai/kimi-k2.5",
name: "Kimi K2.5",
reasoning: false,
input: ["text"],
contextWindow: 256000,
maxTokens: 8192,
compat: {
supportsStore: false,
supportsDeveloperRole: false,
supportsReasoningEffort: false
}
},
{
id: "z-ai/glm-5",
name: "GLM 5",
reasoning: false,
input: ["text"],
contextWindow: 128000,
maxTokens: 8192,
compat: {
supportsStore: false,
supportsDeveloperRole: false,
supportsReasoningEffort: false
}
},
{
id: "minimax/minimax-m2.5",
name: "Minimax M2.5",
reasoning: false,
input: ["text"],
contextWindow: 128000,
maxTokens: 8192,
compat: {
supportsStore: false,
supportsDeveloperRole: false,
supportsReasoningEffort: false
}
},
],
},
},
},
}
```
### 配置说明 [#配置说明]
**基础配置项:**
* `baseUrl`: 七牛 AI 推理服务的 API 端点:`https://api.qnaigc.com/v1`
* `apiKey`: 通过环境变量 `${QINIU_API_KEY}` 引用您的 API Key
* `api`: 使用 `openai-completions` 协议(OpenAI 兼容)
### 模型引用格式 [#模型引用格式]
七牛云模型引用使用 `qiniu/` 格式,例如:
* `qiniu/deepseek-v3.2-251201`
* `qiniu/moonshotai/kimi-k2.5`
* `qiniu/deepseek-r1`
* `qiniu/qwen3-max`
* `qiniu/z-ai/glm-5`
### 获取 API Key [#获取-api-key]
您可以通过以下步骤获取七牛 AI 推理服务的 API Key:
1. 登录 [七牛云控制台](https://portal.qiniu.com/ai-inference/api-key)
2. 进入 AI 推理服务管理页面
3. 创建或查看您的 API Key
4. 妥善保管您的 API Key,切勿泄露
## 💡 使用提示 [#-使用提示]
* **模型选择**:根据您的任务需求选择合适的模型。DeepSeek V3.2 和 Qwen3 Max 适合复杂任务,DeepSeek R1 和 Kimi K2 Thinking 支持推理能力
* **上下文管理**:注意不同模型的 `contextWindow` 限制,合理控制对话长度
* **成本优化**:可以根据实际使用情况更新 `cost` 配置,便于成本追踪
* **自定义模型**:如需添加更多模型,按照相同格式在 `models` 数组中添加即可
## ⚠️ 注意事项 [#️-注意事项]
1. **API Key 安全**:请勿在代码中硬编码 API Key,始终使用环境变量
2. **配置更新**:七牛云会不断更新可用模型列表,请关注官方文档获取最新信息
3. **实名认证**:使用七牛 AI 推理服务需要完成实名认证,详见[实名认证说明](/products/aitokenapi/0-verify-real-name)
4. **配额限制**:注意您的账户配额限制,避免超额使用
## 🙋 需要帮助? [#-需要帮助]
如在配置过程中遇到任何问题:
* 📖 查阅 [OpenClaw 官方文档](https://docs.openclaw.ai/)
* 💬 联系七牛云技术支持
* 📝 提交工单获取专业帮助
***
祝您使用愉快!开始您的 AI 开发之旅吧! 🚀
# 聊天客户端 NextChat 配置说明 (/products/aitokenapi/12888-next-chat-configuration-instructions)
最近更新时间: 2026-10-15 17:14:37
NextChat 官方地址:[https://nextchat.dev/](https://nextchat.dev/)
NextChat 客户端下载地址:- [请到 NextChat 官方开源仓库的 Releases(发布)页面下载](https://github.com/ChatGPTNextWeb/NextChat/releases)
本教程主要指导大家如何将七牛的推理服务配置到 **Next Chat** 客户端中。
NextChat 是一款开源的大模型聊天客户端,在 GitHub 上很受欢迎。配置七牛 AI 模型服务后,即可在 NextChat 中与 deepseek-v3、qwen3、kimi-k2 等模型对话。
### 前置准备 [#前置准备]
* [如何获取七牛云 Token API 密钥](/products/aitokenapi/0-how-to-get-api-key)
### **配置说明** [#配置说明]
1. 点击左下角设置按钮进入设置界面

2. 修改配置,使用七牛云推理服务
1. 在模型服务商中选择“OpenAI 兼容”格式,
1. 该选项代表使用 OpenAPI 的接口协议
2. 接口地址填入:[https://api.qnaigc.com](https://api.qnaigc.com/)
1. 改地址为七牛的推理服务端口地址
3. API Key 输入上方获取到的密钥
4. 自定义模型名称,输入七牛支持的模型 id,以半角逗号 , 分开
1. 例如:deepseek-r1,deepseek-v3
2. 更多请参考:[七牛云模型广场](https://portal.qiniu.com/ai-inference/model)
3. 选择模型
1. 在下方的模型选项中,选择我们上方自定义的模型。例如我这里的 deepseek-r1

4. 测试效果

🎉🎉 恭喜你,已经配置成功啦!!
# 什么是 MCP (/products/aitokenapi/0-what-is-mcp)
最近更新时间: 2026-09-17 15:09:27
MCP(Model Context Protocol,模型上下文协议)是一种用于标准化大模型与外部系统之间交互的协议。它的核心目标是为大语言模型(如 LLM 等)提供一种统一、结构化的方式来获取外部知识、调用工具、访问数据库或与其他服务集成。
## 主要特点 [#主要特点]
1. **标准化接口**:MCP 定义了一套通用的 API 和数据格式,使不同的模型和工具可以通过一致的方式进行通信,降低了集成和扩展的难度。
2. **上下文管理**:MCP 强调“上下文”的概念,允许模型在推理过程中动态获取、更新和管理外部信息,从而提升模型的智能和实用性。
3. **工具调用**:通过 MCP,模型可以安全、可控地调用外部工具(如搜索引擎、计算服务、数据库等),实现“工具增强型智能”。
4. **可扩展性**:MCP 协议支持多种扩展方式,便于开发者根据实际需求自定义接口、数据结构和权限控制。
## 应用场景 [#应用场景]
* **智能助手**:通过 MCP,助手可以访问日历、邮件、知识库等外部资源,提供更丰富的服务。
* **企业集成**:企业可以用 MCP 将大模型与内部系统(如 ERP、CRM)对接,实现自动化办公。
* **数据分析**:模型可通过 MCP 动态获取数据源,进行实时分析和报告生成。
## 安全问题与托管方案 [#安全问题与托管方案]
MCP 协议虽然极大地提升了模型的能力,但也带来了新的安全挑战。例如:
* **权限滥用**:如果没有严格的权限控制,模型可能访问到敏感数据或执行高风险操作。
* **数据泄露**:模型与外部系统频繁交互,存在数据在传输或处理过程中被窃取的风险。
* **工具滥用**:模型调用外部工具时,若缺乏审计和限制,可能被恶意利用。
为了解决这些安全问题,推荐采用**托管(Managed)MCP 服务**:
* 托管服务通常由专业团队运维,具备完善的安全防护措施,如身份认证、权限管理、访问审计等。
* 托管平台会对模型的每一次外部调用进行监控和日志记录,及时发现异常行为。
* 托管环境下,开发者可以灵活配置哪些工具和数据对模型开放,降低误用和攻击风险。
通过托管 MCP,可以大幅提升协议的安全性和可控性,让企业和开发者更安心地将大模型能力融入实际业务。
## 总结 [#总结]
MCP 协议为大模型与外部世界之间架起了一座桥梁,使其具备更强的交互能力和实际应用价值。
# 模型特性:多模态 (/products/aitokenapi/1-model-features-multimodality)
最近更新时间: 2025-07-30 16:57:23
在人工智能发展中,单一模态模型渐难满足复杂场景需求。LLM 多模态凭借跨模态理解与生成能力成为焦点,它打破文本、图像、音频等模态壁垒,让模型能像人类一样综合多种感官信息认知决策。
## LLM 多模态的核心内涵 [#llm-多模态的核心内涵]
LLM 多模态是基于大语言模型架构,融合多种信息模态处理的智能系统。相比仅能处理文本的传统语言模型,它可理解图像、音频、视频等非文本信息,还能实现不同模态间的转换与生成。
其核心是 “融合”,并非简单信息叠加,而是深度语义整合。通过联合学习不同模态数据,模型能挖掘模态间潜在关联,更全面准确理解输入。比如看到 “小狗在草地上玩耍” 的图片,模型不仅能识别元素,还能转化为文本描述,甚至依描述生成对应图像。
技术架构上,通常包含模态编码器、跨模态融合器和模态生成器。模态编码器将不同输入转化为统一语义向量;跨模态融合器处理向量,构建模态关联;模态生成器根据融合信息生成目标模态输出,确保不同模态在统一语义空间高效交互。
## LLM 多模态的典型能力 [#llm-多模态的典型能力]
围绕 “跨模态理解” 与 “跨模态生成”,有以下典型能力:
**跨模态语义匹配**:判断不同模态信息是否语义相同,如文本与图片、音频与文字记录是否匹配,在内容检索、信息校验中作用重大。
**多模态内容理解**:深层解读混合模态输入,如分析带文字说明的图表、理解视频动作与同期声关联、解读图文社交媒体内容的情感倾向。
**跨模态内容生成**:基于一种模态生成另一种,除图像转文本,还有文本生成图像、音频转文本、文本生成音频、视频生成文字梗概等,拓展内容创作边界。
## LLM 多模态的技术价值 [#llm-多模态的技术价值]
它极大拓展了人工智能应用边界。教育领域,可将文本知识转化为生动图像、音频,提升学习体验;医疗行业,结合病历与医学影像辅助精准诊断;娱乐场景,依文字描述生成个性化图像、视频;智能驾驶中,融合图像、雷达数据及语音指令,实现安全行车决策。
## 基于 OpenAI 接口的多模态应用示例 [#基于-openai-接口的多模态应用示例]
OpenAI 接口为开发者提供便利,以下是基础应用示例:
### 文本与图像的关联处理 [#文本与图像的关联处理]
通过接口可实现文本对图像的描述请求。传入 “请描述这张图像的内容” 及图像数据,接口会返回文本描述。调用逻辑大致如下:
```python
import openai
response = openai.ChatCompletion.create(
model="...", # 对应的模型标识
messages=[
{"role": "user", "content": [
{"type": "text", "text": "请描述这张图像的内容"},
{"type": "image_url", "image_url": {"url": "图像的URL地址"}}
]}
]
)
print(response.choices[0].message.content)
```
此调用实现文本与图像模态交互,调整文本指令还能完成 “分析产品图片设计风格” 等复杂任务,体现模型深层理解能力。
LLM 多模态技术正快速发展,随着模态融合加深和效率优化,应用将更广泛,未来融入视频、3D 模型等复杂模态后,有望接近人类认知水平。
# 模型特性:结构化输出 (/products/aitokenapi/2-model-features-structured-output)
最近更新时间: 2026-09-17 15:08:33
在大语言模型的实际应用中,**结构化输出**是提升结果实用性的核心特性。相较于自由文本,结构化输出能将模型生成的内容限定在预设格式(如 JSON、XML、表格等)中,显著降低下游系统的解析成本,尤其适用于数据处理、自动化流程集成等场景。
## 什么是结构化输出? [#什么是结构化输出]
结构化输出指模型按照特定格式生成内容,确保输出结果具备固定字段、清晰层次和可预测逻辑。例如,当用户要求 “提取新闻关键信息” 时,模型不会返回零散的文字描述,而是生成包含 “标题、发布时间、主体、关键词、情感倾向” 等字段的 JSON 对象,直接满足数据入库或分析工具的格式要求。
这种特性的核心价值体现在:
* **降低开发成本**:省去下游系统编写复杂文本解析逻辑的工作;
* **提升数据一致性**:保证同类任务的输出格式统一,便于批量处理;
* **增强可靠性**:减少歧义性表述,让机器能直接理解并使用结果。
## 常见的结构化输出格式 [#常见的结构化输出格式]
模型支持的结构化格式需结合应用场景选择,以下为几种典型类型:
* **JSON 格式**:应用最广泛的轻量级数据交换格式,适合存储键值对形式的结构化信息。例如,提取产品评价核心要素:
```
{
"产品名称": "无线蓝牙耳机",
"评价日期": "2025-07-28",
"评分": 4.5,
"优点": ["续航时间长", "音质清晰"],
"缺点": ["降噪效果一般"],
"用户关注点": ["续航", "音质", "降噪"]
}
```
* **表格格式(CSV/Markdown 表格)**:适用于展示具有行列关系的结构化数据,如多维度对比、列表类信息。例如,生成手机型号对比表:
```
| 型号 | 处理器 | 内存 | 电池容量 | 价格(元) |
|------------|----------|------|----------|------------|
| 型号A | 骁龙8 Gen3 | 12GB | 5000mAh | 4999 |
| 型号B | 天玑9300 | 16GB | 4800mAh | 5299 |
```
* **XML 格式**:适合需要嵌套层级的复杂结构,常用于文档标记、配置文件等场景。例如,标注合同关键条款:
```xml
XX科技有限公司
YY贸易公司
2025-08-01
2026-07-31
500000元
```
## 基于 OpenAI 接口的结构化输出实现 [#基于-openai-接口的结构化输出实现]
OpenAI 的 API 可通过`function_call`参数或提示词引导,强制模型生成结构化内容。以下为具体实践示例:
### 示例 1:通过提示词约束 JSON 输出 [#示例-1通过提示词约束-json-输出]
当需要提取文章中的人物信息时,可在提示词中直接指定 JSON 格式:
```python
import openai
openai.api_key = "你的API密钥"
response = openai.ChatCompletion.create(
model="moonshotai/kimi-k2.6",
messages=[
{"role": "system", "content": "你是信息提取工具,请从用户提供的文本中提取人物信息,返回JSON格式,包含字段:姓名、性别、年龄(若提及)、职业、关键事件。若信息不完整,缺失字段用null填充。"},
{"role": "user", "content": "文本:李明,男,35岁,是一名软件工程师,上周在公司技术竞赛中获得一等奖。他的同事张燕,女,负责产品设计,也参与了此次竞赛。"}
]
)
print(response.choices[0].message['content'])
```
**输出结果**:
```json
[
{
"姓名": "李明",
"性别": "男",
"年龄": 35,
"职业": "软件工程师",
"关键事件": "上周在公司技术竞赛中获得一等奖"
},
{
"姓名": "张燕",
"性别": "女",
"年龄": null,
"职业": "产品设计",
"关键事件": "参与公司技术竞赛"
}
]
```
### 示例 2:使用 function\_call 强制结构化格式 [#示例-2使用-function_call-强制结构化格式]
对于更复杂的场景,可通过定义函数的 JSON Schema,让模型严格遵循格式输出:
```python
import openai
openai.api_key = "你的API密钥"
response = openai.ChatCompletion.create(
model="moonshotai/kimi-k2.6",
messages=[
{"role": "system", "content": "你需要分析用户提供的订单信息,返回标准化的订单详情。"},
{"role": "user", "content": "订单:用户王华在2025年7月29日购买了2件T恤(红色,M码)和1双运动鞋(黑色,42码),总金额399元,付款方式为微信支付。"}
],
functions=[
{
"name": "format_order",
"parameters": {
"type": "object",
"properties": {
"user_name": {"type": "string"},
"order_date": {"type": "string", "format": "YYYY-MM-DD"},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"product": {"type": "string"},
"attributes": {"type": "object"},
"quantity": {"type": "integer"}
},
"required": ["product", "quantity"]
}
},
"total_amount": {"type": "number"},
"payment_method": {"type": "string"}
},
"required": ["user_name", "order_date", "items", "total_amount"]
}
}
],
function_call={"name": "format_order"} # 强制调用指定函数
)
# 提取结构化结果
structured_result = eval(response.choices[0].message['function_call']['arguments'])
print(structured_result)
```
**输出结果**(Python 字典格式):
```json
{
"user_name": "王华",
"order_date": "2025-07-29",
"items": [
{
"product": "T恤",
"attributes": {"颜色": "红色", "尺码": "M码"},
"quantity": 2
},
{
"product": "运动鞋",
"attributes": {"颜色": "黑色", "尺码": "42码"},
"quantity": 1
}
],
"total_amount": 399,
"payment_method": "微信支付"
}
```
## 结构化输出的注意事项 [#结构化输出的注意事项]
1. **格式明确性**:提示词中需清晰定义字段名称、数据类型(如字符串 / 数字 / 数组)及约束条件(如日期格式),避免模型产生歧义;
2. **容错处理**:实际应用中需考虑模型偶尔出现的格式错误(如遗漏引号、括号不匹配),可通过正则校验或工具库(如`json`模块)进行二次处理;
3. **复杂度平衡**:过于复杂的结构(如多层嵌套)可能降低模型准确率,建议根据需求拆分字段或分步骤生成。
通过结构化输出,大语言模型能更高效地与数据库、ERP 系统、自动化工具等下游组件协同,成为连接自然语言交互与机器可执行流程的核心纽带。
# AI编程工具配置大全(AI Coding) (/products/aitokenapi/0-tools-ai-coding-api)
最近更新时间: 2026-09-17 14:36:14
# AI编程工具分类 [#ai编程工具分类]
目前AI编程工具有IDE(集成开发环境)、VS Code插件、Cli(命令行)工具三类。
一般通过选择其API Provider中的OpenAI Compatible模式(即配置Base URL + API Key + Model)即可使用:
* Base URL: `https://api.qnaigc.com/v1`
* API Key: `sk-9b******edf77` (参考[AI大模型API密钥](/products/aitokenapi/0-how-to-get-api-key) )
* Model: `z-ai/glm-4.6` 、`minimax/minimax-m2`、`moonshotai/kimi-k2-thinking`等
# VS Code插件 [#vs-code插件]
## **Kilo** [#kilo]

## **Cline** [#cline]

## **Roo Code** [#roo-code]

## **Blackbox** [#blackbox]

# Cli命令行工具 [#cli命令行工具]
## **Cline** Cli [#cline-cli]
```shell
npm install -g cline
```
## **Open Code** Cli [#open-code-cli]
```
# YOLO
curl -fsSL https://opencode.ai/install | bash
# Package managers
npm i -g opencode-ai@latest # or bun/pnpm/yarn
scoop bucket add extras; scoop install extras/opencode # Windows
choco install opencode # Windows
brew install opencode # macOS and Linux
paru -S opencode-bin # Arch Linux
mise use --pin -g ubi:sst/opencode # Any OS
nix run nixpkgs#opencode # or github:sst/opencode for latest dev branch
```
```json
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"anthropic": {
"options": {
"baseURL": "https://api.qnaigc.com/v1"
}
}
}
}
```
[opencode@github](https://github.com/sst/opencode)
## **Aider** Cli [#aider-cli]
```
python -m pip install aider-install
aider-install
# Change directory into your codebase
cd /to/your/project
# Mac/Linux:
export OPENAI_API_BASE=https://api.qnaigc.com/v1
export OPENAI_API_KEY=sk-****
# Windows:
setx OPENAI_API_BASE https://api.qnaigc.com/v1
setx OPENAI_API_KEY sk-****
# ... restart shell after setx commands
```
# IDE 集成开发环境 [#ide-集成开发环境]
## **Cursor** 自定义模型 [#cursor-自定义模型]

# Agent 任务工具 [#agent-任务工具]
## **Goose** [#goose]
### 选择 OpenAICompatible 类型并输入以下信息 [#选择-openaicompatible-类型并输入以下信息]

# 产品概述 (/products/cdn/0-product-overview-fusion)
最近更新时间: 2021-02-04 14:17:15
# 产品简介 [#产品简介]
七牛 CDN 是在传统 CDN 基础上实现的对数据网络加速进一步优化的智能管理服务。通过全方位的 CDN 质量监控,以及智能易用的节点调度等功能,提供稳定快速的网络访问服务。保障客户的音视频点播、大文件下载、应用及 Web 加速服务的稳定及连续性。
# 产品架构 [#产品架构]
# 名词解释 (/products/cdn/1-noun-explanation-fusion)
最近更新时间: 2021-02-04 14:17:15
# CNAME域名 [#cname域名]
在七牛云Portal创建加速域名后,会给域名分配一个 “CNAME域名”(例:example.qiniudns.com)。用户需要在域名服务商处配置一条主机记录为 example 的 CNAME 记录类型,并将需要记录值指向 example.qiniudns.com 。
生效后域名就会正式指向七牛云 CDN ,该域名所有的请求都开始享有CDN加速效果。
# DNS [#dns]
即 Domain Name System ,域名解析服务。把域名转换成为网络可以识别的 IP 地址(人们习惯记忆域名,但机器互相只认 IP ),能够使人更方便地访问互联网,它们之间的转换工作称为域名解析。
# 边缘节点 [#边缘节点]
距离最终用户最近的 CDN 节点,提高响应速度和连接速度,提高用户浏览网页视频的体验,边缘节点的主要工作是将访问量较大的网页内容和音视频等文件保存在服务器前端的专用缓存设备上。
# 源站 [#源站]
即客户的业务服务器。
# 功能特性 (/products/cdn/2-product-features-fusion)
最近更新时间: 2021-02-04 14:17:15
# 无盲区 [#无盲区]
沉淀多年的 CDN 管控经验,精选核心 CDN 高质量节点,实现覆盖全国的边缘节点架构体系,全面覆盖各地、各运营商的网络,实现全地域无盲区的覆盖。
# 智能调度 [#智能调度]
基于全网请求来源的智能调度系统,支持 DNS、HttpDNS、Http302 调度模式,有效提高访问响应速度,防止劫持,实现全网实时精准调度调度。
# 立体品控 [#立体品控]
基于权威 APM 的全网覆盖「性能监控」和七牛自研的监控数据为基础上自研的全网「实时可用性监控」,打造七牛 CDN 立体品控体系。
# 降低回源 [#降低回源]
自建 BGP 网络中间源,消除跨运营商网络回源慢甚至不可达等问题,保护源站带宽不受边缘节点请求波动影响,节省回源成本。
# 链路优化 [#链路优化]
七牛自研探测 AGENT,精确探测点到点之间的链路质量,凭借特有的链路决策算法,可以保证边缘节点到中间源再到源站直接的所有链路最优。
# 私有协议优化 [#私有协议优化]
使用私有传输协议作为 CDN 内部数据交换的基础,确保客户资源在 CDN 内部安全、快速的传输到各个节点,实现客户内容高效、可靠的进行分发。
# 使用场景 (/products/cdn/3-usage-scenarios-fusion)
最近更新时间: 2026-08-31 11:35:22
# 网页/小文件/图片加速 [#网页小文件图片加速]
网页静态资源优化加速分发,例如:html、css、js、img 等;全站 HTTPS 保证网站访问安全;自动图片瘦身, TCP 压缩优化使网页大图,样式等完成秒级加载,缩短网页响应时间提高用户体验。
配合七牛云-图片处理服务一起使用,还可以针对图片进行缩略、打水印,转格式等数据处理服务。
# 大文件下载 [#大文件下载]
大文件下载优化加速分发,例如:ipa、apk、mp3、exe、zip 等;七牛 CDN 在全球数千个节点,让用户在下载过程中获得更快的下载速度,并利用分段缓存技术提高了大文件下载传输的稳定性。
配合七牛云-存储服务一起使用,可有效降低回源和存储成本。
# 音视频点播服务 [#音视频点播服务]
音视频点播优化加速服务,例如:mp4、flv、rmvb、wmv、hls 等;七牛 CDN 利用 BGP 网络中间源技术降低回源带宽压力节省了用户回源成本、分段预取技术使用户在浏览音视频时更加的流畅,高级防盗链技术有效防止用户文件被盗用。
配合七牛云-音视频处理服务,还可以进行音视频转码、转格式、压缩等数据处理服务。
# CDN 产品价格说明 (/products/cdn/0-cdn-product-pricing)
最近更新时间: 2026-08-27 16:11:43
# 七牛云 CDN 计费说明 [#七牛云-cdn-计费说明]
七牛云 CDN 提供两种付费方式,默认计费方式为后付费按量计费。您也可使用 [CDN 价格计算器](https://www.qiniu.com/prices/qcdn?tab=calc) 进行用量预估;同时提供 [国内预付费资源包](https://qmall.qiniu.com/template/NTI?ref=category\&spec_combo=MTk0OA\&ref=doc) 和 [海外预付费资源包](https://qmall.qiniu.com/template/NTU?ref=category\&spec_combo=MjEzNA\&ref=doc),可获得更优惠的价格。
## 目录 [#目录]
* [1. 按流量后付费](#sec-1)
* [1.1 免费额度](#sec-1-1)
* [1.2 价格详情](#sec-1-2)
* [1.3 超额累进阶梯计费示例](#sec-1-3)
* [2. 按资源包预付费](#sec-2)
* [2.1 资源包购买](#sec-2-1)
* [2.2 资源包用量查询](#sec-2-2)
* [3. 常见问题](#sec-3)
* [Q1. 开启 HTTPS 以后如何收费?](#q1-https-fee)
* [Q2. 欠费以后还可以继续使用吗?](#q2-owe-service)
* [Q3. 资源包可以叠加使用吗?抵扣顺序是什么?](#q3-pack-stack-order)
* [Q4. 使用量超出资源包后如何计费?](#q4-over-pack-billing)
* [Q5. 今天 8 点后购买的资源包,为什么没有进行抵扣?](#q5-resource-pack-no-deduction)
## 1. 按流量后付费 [#1-按流量后付费]
七牛云 CDN 加速按国内流量和海外流量阶梯价格计费(动态加速在此基础上额外加收请求数费用),当月分别超额累进,以自然月为一个累计周期。
### 1.1 免费额度 [#11-免费额度]
开通七牛云 CDN 并完成实名认证的用户即可享有以下免费额度:
* 每个分区(国内 + 海外各分区)10GB HTTP 下载流量
* 5 万次动态加速请求数
### 1.2 价格详情 [#12-价格详情]
#### (1)国内流量价格 [#1国内流量价格]
| 名目 | 流量阶梯(元/GB) | 价格 |
| -------------------------- | ---------------- | ---------------- |
| HTTP 下载流量 / 动态加速 HTTP 流量 | 第 0 GB 至 10 GB | 免费(仅限 HTTP 下载流量) |
| HTTP 下载流量 / 动态加速 HTTP 流量 | 第 10 GB 至 100 TB | 0.24 |
| HTTP 下载流量 / 动态加速 HTTP 流量 | 第 100 TB 至 1 PB | 0.19 |
| HTTP 下载流量 / 动态加速 HTTP 流量 | 第 1 PB 以上 | 0.14 |
| HTTPS 下载流量 / 动态加速 HTTPS 流量 | 第 0 GB 至 100 TB | 0.28 |
| HTTPS 下载流量 / 动态加速 HTTPS 流量 | 第 100 TB 至 1 PB | 0.23 |
| HTTPS 下载流量 / 动态加速 HTTPS 流量 | 第 1 PB 以上 | 0.18 |
#### (2)海外流量价格 [#2海外流量价格]
| 名目 | 流量阶梯(元/GB) | 亚洲(港澳台/东南亚/印度) | 亚洲(其他地区) | 欧洲/北美洲 | 南美洲 | 大洋洲与其他 |
| -------------------------- | ---------------- | ---------------------- | ---------------------- | ---------------------- | ---------------------- | ---------------------- |
| HTTP 下载流量 / 动态加速 HTTP 流量 | 第 0 GB 至 10 GB | 免费(仅限 HTTP 下载流量) | 免费(仅限 HTTP 下载流量) | 免费(仅限 HTTP 下载流量) | 免费(仅限 HTTP 下载流量) | 免费(仅限 HTTP 下载流量) |
| HTTP 下载流量 / 动态加速 HTTP 流量 | 第 10 GB 至 10 TB | 0.76 | 0.50 | 0.34 | 0.76 | 0.94 |
| HTTP 下载流量 / 动态加速 HTTP 流量 | 第 10 TB 至 50 TB | 0.66 | 0.44 | 0.30 | 0.66 | 0.82 |
| HTTP 下载流量 / 动态加速 HTTP 流量 | 第 50 TB 至 100 TB | 0.57 | 0.38 | 0.26 | 0.57 | 0.71 |
| HTTP 下载流量 / 动态加速 HTTP 流量 | 第 100 TB 以上 | 请联系我们 400-101-8589 转 1 | 请联系我们 400-101-8589 转 1 | 请联系我们 400-101-8589 转 1 | 请联系我们 400-101-8589 转 1 | 请联系我们 400-101-8589 转 1 |
| HTTPS 下载流量 / 动态加速 HTTPS 流量 | 第 0 GB 至 10 TB | 0.91 | 0.60 | 0.40 | 0.91 | 1.12 |
| HTTPS 下载流量 / 动态加速 HTTPS 流量 | 第 10 TB 至 50 TB | 0.79 | 0.52 | 0.36 | 0.79 | 0.98 |
| HTTPS 下载流量 / 动态加速 HTTPS 流量 | 第 50 TB 至 100 TB | 0.68 | 0.45 | 0.31 | 0.68 | 0.85 |
| HTTPS 下载流量 / 动态加速 HTTPS 流量 | 第 100 TB 以上 | 请联系我们 400-101-8589 转 1 | 请联系我们 400-101-8589 转 1 | 请联系我们 400-101-8589 转 1 | 请联系我们 400-101-8589 转 1 | 请联系我们 400-101-8589 转 1 |
说明:亚洲(港澳台/东南亚/印度)包含国家有港澳台、印度、越南、老挝、柬埔寨、缅甸、泰国、马来西亚、印度尼西亚、菲律宾、文莱、东帝汶。
#### (3)动态加速请求次数价格 [#3动态加速请求次数价格]
动态加速请求次数不分区域,全球统一价格。
| 名目 | 请求数 | 价格 |
| ------- | ----------- | ----------- |
| 动态加速请求数 | 第 0 次至 5 万次 | 免费 |
| 动态加速请求数 | 第 5 万次及以上 | 0.19 元 / 万次 |
### 1.3 超额累进阶梯计费示例 [#13-超额累进阶梯计费示例]
假设用户 5 月只在中国大陆产生 HTTP 500 TB 下载流量,海外各大区均未产生消耗,根据国内 CDN 价格,各阶梯费用计算如下。
| 流量 | 单价(元/GB) | 本阶梯价格(元) | 累计价格(元) |
| ---------------- | -------- | -------- | ------- |
| 第 0 GB 至 10 GB | 0 | 0 | 0 |
| 第 10 GB 至 10 TB | 0.24 | 2455.2 | 2455.2 |
| 第 10 TB 至 500 TB | 0.19 | 95334.4 | 97789.6 |
## 2. 按资源包预付费 [#2-按资源包预付费]
### 2.1 资源包购买 [#21-资源包购买]
根据域名的加速范围,可以选择购买 [CDN 中国大陆资源包](https://qmall.qiniu.com/template/NTI?ref=category\&spec_combo=MTk0OA\&ref=doc) 或 [CDN 海外资源包](https://qmall.qiniu.com/template/NTU?ref=category\&spec_combo=MjEzNA\&ref=doc)。以下主要以国内资源包购买为例说明选择资源包的购买。

#### (1)资源包类型 [#1资源包类型]
“CDN 下行通用流量”适用于 http 和 https 的静态或动态加速下行流量,其中 http 和 https 协议按照 1:1.15 的系数抵扣,https 协议不额外收取静态加速请求次数费用。(自 2020 年 11 月 19 日开始,CDN 资源包更新为 CDN 融合资源包,可同时抵扣多种协议和场景的商品,历史已购买的分协议资源包使用不受影响。)
> 如何理解系数?实际使用 https 流量 100GB,相当于抵扣资源包流量 115GB。资源包的额度可以理解成诸如“点数”的概念,同单位的不同商品需要抵扣的点数不同。
> 按什么顺序抵扣?当资源包额度充足时(账单额度 \< 资源包余量),资源包可全部抵扣金额;当资源包额度不够时(账单额度 \< 资源包余量),按以下顺序抵扣:静态加速 HTTP、静态加速 HTTPS、动态加速 HTTP、动态加速 HTTPS。
#### (2)可用区域 [#2可用区域]
可根据域名的实际加速区域选择资源包的可用区域;如果加速区域为全球,可能同时产生国内流量和海外流量。
#### (3)可用时段 [#3可用时段]
为方便不同类型的用户优化 CDN 成本,七牛提供以下几种时段的资源包:
1. 全时段流量包:全时段指每天 0:00 - 24:00
2. 日间时段流量包:日间时段指每天 09:00 - 18:00
3. 闲时流量包:闲时段指每天 00:00 - 09:00
叠加使用规则和抵扣顺序参考 [Q3. 资源包可以叠加使用吗?抵扣顺序是什么?](#q3-pack-stack-order)
#### (4)用量额度(用量预估) [#4用量额度用量预估]
可根据实际使用需求预估资源包大小;额度越大单价越高,建议可预估一年用量购买。
可以根据历史用量预估资源包需求:在管理控制台页面进入 CDN,选择 [统计分析](https://portal.qiniu.com/cdn/statistics/usage) ,查看“用量统计”,支持按照域名维度、协议维度(http/https)、地区维度进行筛选查看;同时在流量趋势图上支持单独查看闲时、日间流量。

#### (5)分配方式 [#5分配方式]
一次性分配资源包的流量在生效期内均可使用。
### 2.2 资源包用量查询 [#22-资源包用量查询]
由于七牛目前按量付费资源采取月结算模式,系统每天 8 点左右将根据用户已使用的用量进行计费,更新一次按量计费预估,即按量计费预估为预估账单和余额预扣除,没有实际完成扣除,所以默认情况下,资源包的余量需要每个月完成月账单出账后更新状态,我们也可以通过下面的方法预估算资源包的使用情况。
#### (1)查看资源包余量 [#1查看资源包余量]
在 [管理控制台](https://portal.qiniu.com/financial/overview) 页面右上角选择“费用”,订单管理选择 [资源包管理](https://portal.qiniu.com/financial/orders/respack-mgr/current),筛选需要查看的资源包,点击“详情”。
您可以看到当前资源包的剩余可用量以及历史每月账单结算后资源包的抵扣情况。
#### (2)查看本月预抵扣明细 [#2查看本月预抵扣明细]
注:按量计费预估每日 8 点更新,更新用量的使用时间是截止本日 0 点,非实时动态更新。
在 [管理控制台](https://portal.qiniu.com/financial/overview) 页面选择“财务中心”,账单管理选择 [按量计费预估](https://portal.qiniu.com/financial/orders),查看从“上次月账单结算完成后”到“当日 0 点”的预估账单,参考下图,账单中可以下载“资源包抵扣明细”,抵扣明细中包含本月可用量 / 当前已用 / 本月剩余可用等参数。
## 3. 常见问题 [#3-常见问题]
### Q1. 开启 HTTPS 以后如何收费? [#q1-开启-https-以后如何收费]
域名开启 HTTPS 配置以后,该域名下所有流量(包括 HTTPS 和 HTTP 请求)即开始按照 HTTPS 协议的价格进行收费。HTTPS 域名产生的用量不计入免费额度,静态加速下 HTTPS 协议不额外收请求次数费用。对于月中升级为 https 的用户,本月计量都按照 https 计算。
默认配置下可兼容 HTTP 和 HTTPS 两种协议的请求,如需强制 HTTPS 访问,请在控制台开启“强制 HTTPS 访问”配置。
### Q2. 欠费以后还可以继续使用吗? [#q2-欠费以后还可以继续使用吗]
欠费以后,无法新增域名和修改域名。更多信息请见:
* [欠费状态下各产品的限制功能](/account/0-owe-the-protection-limit-function)
* [新版欠费流程](/faq/account-finance/account-problem/5996-new-owe-the-process-description)
### Q3. 资源包可以叠加使用吗?抵扣顺序是什么? [#q3-资源包可以叠加使用吗抵扣顺序是什么]
资源包可叠加购买,出账时将按照以下规则进行抵扣:

### Q4. 使用量超出资源包后如何计费? [#q4-使用量超出资源包后如何计费]
在资源包生效期间内,若当月用量超出可用资源包额度,出账时将优先抵扣完资源包额度,超出部分再按照官网 [CDN 后付费价格](https://www.qiniu.com/prices) 结算。
### Q5. 今天 8 点后购买的资源包,为什么没有进行抵扣? [#q5-今天-8-点后购买的资源包为什么没有进行抵扣]
按量计费预估每日 8 点更新,更新用量的使用时间是截止本日 0 点,非实时动态更新。当月生效的资源包,您可以在购买后第二天,在财务中心查看按量计费预估账单。
# 快速入门 (/products/cdn/0-fusion-quick-start)
最近更新时间: 2026-05-08 14:30:03
欢迎查看 cdn 帮助文档。您可以在任意时间地点使用七牛云 CDN 加速,以提供稳定快速的网络访问质量。
通过完成本快速入门指南中的步骤,您将成功绑定域名、配置 cname 、刷新预取、查询CDN流量宽带或是下载 CDN 日志。
七牛云为空间资源提供测试域名,该类域名的源站为域名所在空间,缓存设置时间 1个月,无法配置防盗链配置且不能配置 cname。鉴于它的诸多限制,建议您添加自定义域名使用。
为了顺利完成快速入门,您需要一个七牛云账号。如果您还没有七牛云账号,请通过以下步骤创建七牛云账号。
# 注册七牛云 [#注册七牛云]
1. 打开 [七牛开发者平台](https://portal.qiniu.com/),选择 **注册**。
2. 遵循在线使用说明。
本快速入门指南涵盖以下内容:
* [Step 1:添加自定义域名](#step1)
* [Step 2:查询CDN流量带宽](#step2)
* [Step 3:下载CDN日志](#step3)
# 要求 [#要求]
* 域名已备案,且可以做域名解析;
* 账号已完成实名认证;
说明:域名配置不产生费用
# 步骤1:添加自定义域名 [#步骤1添加自定义域名]
1. 登陆[七牛开发者平台](https://portal.qiniu.com/signin)。
2. **方式1**:
选择 **控制台** ,然后选择 **添加加速域名** 。
**方式2**:
点击 **产品与方案** ,然后选择 **CDN** 。
操作完 方式1 或者 方式2 之后,会出现 **创建域名** 界面。
**注意**:
如果您界面上方显示的是 **未完成实名认证** ,如下图所示:
此时您需要在 **个人中心** 进行实名认证
此外,请您确认您的绑定域名是否是已备案的状态,您可以在[域名信息备案系统](http://beian.miit.gov.cn/state/outPortal/loginPortal.action)查询。
3.在 **创建加速域名** 界面,在 **域名类型** 栏选择域名类型。域名类型包含:普通域名,泛域名,泛子域名。
* 普通域名,是指您的主域名下的子域名。例如主域名qiniu.com,developer.qiniu.com是其二级域名,a.developer.qiniu.com是其三级域名,.....,这些都属于普通域名。
* 泛域名,是指域名\*.主域名,配置成功后可任意指定前缀进行访问;可基于该泛域名创建多个泛子域名来指定不同源站,例如泛域名 \*.qiniu.com。
* 泛子域名,基于泛域名创建的子域名;可独立指定源站,其它配置继承泛域名。
4.在 **创建加速域名** 界面,在 **加速域名** 栏填写**已备案**的域名。
5.在 **创建加速域名** 界面,在 **通信协议** 栏选择所需的通信协议。您可以选择 https 通信协议或者 http 通信协议。如果您选择 https协议,您还需上传有效期≥30天的 HTTPS 证书。(注:为了不影响正常使用,证书到期后请及时续期)
6.在 **创建加速域名** 界面,在 **使用场景** 栏选择所在的使用场景。使用场景分为图片小文件,下载分发和点播平台。
* 图片小文件,适用于网页、图片、小文件
* 下载分发,适用于文件下载,例如安装包,压缩包等二进制大文件
* 点播平台,适用于需要MP4/FLV等文件按照时间点进行播放
* 动态加速,适用于电商、社交、社区论坛、金融支付和游戏娱乐等方面
7.在 **创建加速域名** 界面,在 **源站配置** 栏选择源站。可以选择七牛云存储,源站域名,IP地址,高级设置。
* 七牛云存储,选择您的七牛云空间,您将需要加速的资源上传到空间 或者 您可以设置**空间镜像**,这样您的资源会更快的迁移到七牛云空间(如何设置空间[镜像存储](/products/kodo/kodo-console-guide/bucket-management/space-settings/8-set-up-the-mirror-back-to-the-source))。
* 源站域名,填写您的源站域名,不能与**加速域名**相同。**源站测试**中需要您填写您需要加速的资源名,通过源站测试,表明源站配置正确。
* IP地址,填写您源站的IP地址,**源站测试**中需要您填写您需要加速的资源名,通过源站测试,表明源站配置正确。
* 高级配置,设置多个主线路或者备线路,访问请求根据权重分配。
8.在 **创建加速域名** 界面, **高级配置** 可以在创建域名时设置,即选择 **显示** ,此时您可以设置:
* **域名防盗链**
* **时间戳防盗链**
* **缓存配置**
* **图片处理**
9.在 **创建加速域名** 界面,选择 **创建** ,此时创建成功。
注:**7** 和 **8** 所设置的配置可以在创建之后可以修改。在 **七牛开发者平台** - **产品与方案** 页面选择 **CDN** ,选择 **域名管理** ,根据需要,选择您需要配置的 **域名** ,点击 **配置** 。
在 **配置** 界面,根据需要,可以修改 **回源配置** , **缓存配置** , **访问控制** ,**HTTPS配置** , **图片优化** ,**HTTP 响应头配置**。


10.创建加速域名成功后,七牛云会提供cname地址。
选择 **CDN** ,在 **域名管理** 界面选择创建好的 **域名** ,点击 **配置** ,提供的cname在红框中标注。您可以点击**帮助** ,参考链接 **如何配置CNAME** 配置cname值。
# 步骤2:查看CDN流量带宽 [#步骤2查看cdn流量带宽]
选择 **CDN** ,选择 **域名管理** ,选择您需要查看的 **域名** ,点击 **统计** 。

或者选择 **CDN** ,选择 **统计分析** ,选择 **用量统计** 选择需要查看的 **域名** 。

在页面中间部分的红框处显示选中域名的CDN流量/宽带,通过点击按钮进行切换。

# 步骤3:下载CDN日志 [#步骤3下载cdn日志]
选择 **CDN** ,选择 **日志下载** ,设定搜索条件,点击 **查看日志** ,选择您具体需要查看的日志,点击 **下载** ,即可将日志下载到本地进行查看。
# 海外加速节点 (/products/cdn/0-overseas-nodes)
最近更新时间: 2023-12-12 15:23:34
## 七牛全球下载加速的海外一览表 [#七牛全球下载加速的海外一览表]
| 大洲 | 国家 | | 城市 | |
| ------------------- | -------------------- | -------- | ---------------- | ------- |
| 北美(North America) | Canada | 加拿大 | Calgary | 卡尔加里 |
| | Canada | 加拿大 | Montréal | 蒙特利尔 |
| | Canada | 加拿大 | Ottawa | 渥太华 |
| | Canada | 加拿大 | Saskatoon | 萨斯卡通 |
| | Canada | 加拿大 | Toronto | 多伦多 |
| | Canada | 加拿大 | Vancouver | 温哥华 |
| | Canada | 加拿大 | Winnipeg | 温尼伯 |
| | United States | 美国 | Honolulu | 火奴鲁鲁 |
| | United States | 美国 | Houston | 休斯顿 |
| | United States | 美国 | Indianapolis | 印第安纳波利斯 |
| | United States | 美国 | Jacksonville | 杰克逊维尔 |
| | United States | 美国 | Kansas City | 堪萨斯城 |
| | United States | 美国 | Las Vegas | 拉斯维加斯 |
| | United States | 美国 | Los Angeles | 洛杉矶 |
| | United States | 美国 | Richmond | 里士满 |
| | United States | 美国 | Ashburn | 阿什伯恩 |
| | United States | 美国 | Atlanta | 亚特兰大 |
| | United States | 美国 | Boston | 波斯顿 |
| | United States | 美国 | Buffalo | 布法罗 |
| | United States | 美国 | Charleston | 查尔斯顿 |
| | United States | 美国 | Charlotte | 夏洛特 |
| | United States | 美国 | Chicago | 芝加哥 |
| | United States | 美国 | Columbus | 哥伦布 |
| | United States | 美国 | Council Bluffs | 康瑟尔布拉夫斯 |
| | United States | 美国 | Dallas | 达拉斯 |
| | United States | 美国 | Denver | 丹佛 |
| | United States | 美国 | Detroit | 底特律 |
| | United States | 美国 | Lenoir | 勒努瓦 |
| | United States | 美国 | Mcallen | 麦卡伦 |
| | United States | 美国 | Memphis | 孟菲斯 |
| | United States | 美国 | Miami | 迈阿密 |
| | United States | 美国 | Minneapolis | 明尼阿波利斯 |
| | United States | 美国 | Montgomery | 蒙哥马利 |
| | United States | 美国 | Nashville | 纳什维尔 |
| | United States | 美国 | New York | 纽约市 |
| | United States | 美国 | Newark | 纽瓦克 |
| | United States | 美国 | Norfolk | 诺福克 |
| | United States | 美国 | Omaha | 奥马哈 |
| | United States | 美国 | Philadelphia | 费城 |
| | United States | 美国 | Phoenix | 凤凰 |
| | United States | 美国 | Pittsburgh | 匹兹堡 |
| | United States | 美国 | Portland | 波特兰 |
| | United States | 美国 | Sacramento | 沙加缅度 |
| | United States | 美国 | Salt Lake City | 盐湖城 |
| | United States | 美国 | San Diego | 圣地亚哥 |
| | United States | 美国 | San Francisco | 旧金山市 |
| | United States | 美国 | San Jose | 圣荷西 |
| | United States | 美国 | Seattle | 西雅图 |
| | United States | 美国 | St. Louis | 圣路易斯 |
| | United States | 美国 | Tallahassee | 塔拉哈西 |
| | United States | 美国 | Tampa | 坦帕 |
| | United States | 美国 | The Dalles | 达尔斯 |
| | United States | 美国 | Tulsa | 塔尔萨 |
| 大洋洲(Oceania) | Australia | 澳大利亚 | Adelaide | 阿德莱德 |
| | Australia | 澳大利亚 | Brisbane | 布里斯班 |
| | Australia | 澳大利亚 | Melbourne | 墨尔本 |
| | Australia | 澳大利亚 | Perth | 珀斯 |
| | Australia | 澳大利亚 | Sydney | 悉尼 |
| | New Caledonia | 新喀里多尼亚 | Noumea | 努美阿 |
| | New Zealand | 新西兰 | Auckland | 奥克兰市 |
| 非洲(Africa) | Angola | 安哥拉 | Luanda | 罗安达 |
| | Djibouti | 吉布提 | Djibouti | 吉布地 |
| | Egypt | 埃及 | Cairo | 开罗 |
| | France | 法国 | Reunion | 团圆 |
| | Kenya | 肯尼亚 | Mombasa | 蒙巴萨 |
| | Madagascar | 马达加斯加 | Antananarivo | 塔那那利佛 |
| | Mauritius | 毛里求斯 | Port Louis | 路易港 |
| | Morocco | 摩洛哥 | Casablanca | 卡萨布兰卡 |
| | Mozambique | 莫桑比克 | Maputo | 马普托 |
| | Nigeria | 尼日利亚 | Lagos | 拉各斯 |
| | Rwanda | 卢旺达 | Kigali | 基加利 |
| | Senegal | 塞内加尔 | Dakar | 达喀尔 |
| | South Africa | 南非 | Cape Town | 开普敦 |
| | South Africa | 南非 | Durban | 德班 |
| | South Africa | 南非 | Johannesburg | 约翰内斯堡 |
| | Tanzania | 坦桑尼亚 | Dar Es Salaam | 达累斯萨拉姆 |
| 拉丁美洲(South America) | Argentina | 阿根廷 | Buenos Aires | 布宜诺斯艾利斯 |
| | Argentina | 阿根廷 | Cordoba | 科尔多瓦 |
| | Argentina | 阿根廷 | Neuquen | 内乌肯 |
| | Brazil | 巴西 | Curitiba | 库里提巴 |
| | Brazil | 巴西 | Fortaleza | 福塔雷萨 |
| | Brazil | 巴西 | Porto Alegre | 阿雷格里港 |
| | Brazil | 巴西 | Rio de Janeiro | 里约热内卢 |
| | Brazil | 巴西 | São Paulo | 圣保罗 |
| | Chile | 智利 | Arica | 阿里卡 |
| | Chile | 智利 | Valparaíso | 瓦尔帕莱索 |
| | Colombia | 哥伦比亚 | Bogota | 波哥大 |
| | Colombia | 哥伦比亚 | Medellín | 麦德林 |
| | Curacao | 库拉索 | Willemstad | 威廉斯塔德 |
| | Ecuador | 厄瓜多尔 | Quito | 基多 |
| | Grenada | 格林纳达 | St George’s | 圣乔治 |
| | Guatemala | 危地马拉 | Guatemala City | 危地马拉城 |
| | Haiti | 海地 | Port-Au-Prince | 太子港 |
| | Mexico | 墨西哥 | Mexico City | 墨西哥城 |
| | Mexico | 墨西哥 | Queretaro | 克雷塔罗 |
| | Panama | 巴拿马 | Panama City | 巴拿马城 |
| | Paraguay | 巴拉圭 | Asuncion | 亚松森 |
| | Peru | 秘鲁 | Lima | 利马 |
| | Chile | 智利 | Santiago | 圣地亚哥 |
| 欧洲(Europe) | Belgium | 比利时 | St. Ghislain | 圣吉斯兰 |
| | Bulgaria | 保加利亚 | Sofia | 索非亚 |
| | Finland | 芬兰 | Hamina | 哈米纳 |
| | Germany | 德国 | Frankfurt | 法兰克福 |
| | Netherlands | 荷兰 | Groningen | 格罗宁根 |
| | Austria | 奥地利 | Vienna | 维也纳 |
| | Belgium | 比利时 | Brussels | 布鲁塞尔 |
| | Bulgaria | 保加利亚 | Sofia | 苏菲亚 |
| | Croatia | 克罗地亚 | Zagreb | 萨格勒布 |
| | Cyprus | 塞浦路斯 | Nicosia | 尼科西亚 |
| | Czech Republic | 捷克 | Prague | 布拉格 |
| | Denmark | 丹麦 | Copenhagen | 哥本哈根 |
| | Estonia | 爱沙尼亚 | Tallinn | 塔林 |
| | Finland | 芬兰 | Helsinki | 赫尔辛基 |
| | France | 法国 | Marseille | 马赛 |
| | France | 法国 | Paris | 巴黎 |
| | Germany | 德国 | Berlin | 柏林 |
| | Germany | 德国 | Düsseldorf | 杜塞尔多夫 |
| | Germany | 德国 | Frankfurt | 法兰克福 |
| | Germany | 德国 | Hamburg | 汉堡 |
| | Germany | 德国 | Munich | 慕尼黑 |
| | Greece | 希腊 | Athens | 雅典 |
| | Greece | 希腊 | Thessaloniki | 塞萨洛尼基 |
| | Hungary | 匈牙利 | Budapest | 布达佩斯 |
| | Iceland | 冰岛 | Reykjavík | 雷克雅未克 |
| | Ireland | 爱尔兰 | Cork | 软木 |
| | Ireland | 爱尔兰 | Dublin | 都柏林 |
| | Italy | 意大利 | Milan | 米兰 |
| | Italy | 意大利 | Rome | 罗马 |
| | Latvia | 拉脱维亚 | Riga | 里加 |
| | Lithuania | 立陶宛 | Vilnius | 维尔纽斯 |
| | Luxembourg | 卢森堡 | Luxembourg City | 卢森堡市 |
| | Moldova | 摩尔多瓦 | Chișinău | 基希讷乌 |
| | Netherlands | 荷兰 | Amsterdam | 阿姆斯特丹 |
| | Norway | 挪威 | Oslo | 奥斯陆 |
| | Poland | 波兰 | Warsaw | 华沙 |
| | Portugal | 葡萄牙 | Lisbon | 里斯本 |
| | Romania | 罗马尼亚 | Bucharest | 布加勒斯特 |
| | Russia | 俄罗斯 | Moscow | 莫斯科 |
| | Russia | 俄罗斯 | St. Petersburg | 圣彼得堡 |
| | Serbia | 塞尔维亚 | Belgrade | 贝尔格莱德 |
| | Spain | 西班牙 | Barcelona | 巴塞罗纳 |
| | Spain | 西班牙 | Madrid | 马德里 |
| | Sweden | 瑞典 | Goteburg | 哥德堡 |
| | Sweden | 瑞典 | Stockholm | 斯德哥尔摩 |
| | Switzerland | 瑞士 | Geneva | 日内瓦 |
| | Switzerland | 瑞士 | Zürich | 苏黎世 |
| | Turkey | 土耳其 | Istanbul | 伊斯坦堡 |
| | Ukraine | 乌克兰 | Kyiv | 基辅 |
| | United Kingdom | 英国 | Edinburgh | 爱丁堡 |
| | United Kingdom | 英国 | London | 伦敦 |
| | United Kingdom | 英国 | Manchester | 曼彻斯特 |
| 亚洲(Asia Pacific) | China | 中国 | Changhua County | 彰化县 |
| | Bangladesh | 孟加拉国 | Chittagong | 吉大港市 |
| | Bangladesh | 孟加拉国 | Dhaka | 达卡 |
| | Bhutan | 不丹 | Thimphu | 廷布 |
| | Cambodia | 柬埔寨 | Phnom Penh | 金边 |
| | China | 中国 | Hong Kong | 香港 |
| | India | 印度 | Bengaluru | 班加罗尔 |
| | India | 印度 | Chennai | 钦奈 |
| | India | 印度 | Hyderabad | 海得拉巴 |
| | India | 印度 | Kolkata | 加尔各答 |
| | India | 印度 | Mumbai | 孟买 |
| | India | 印度 | Nagpur | 那格浦尔 |
| | India | 印度 | New Delhi | 新德里 |
| | Indonesia | 印度尼西亚 | Jakarta | 雅加达 |
| | Japan | 日本 | Osaka | 大阪 |
| | Japan | 日本 | Tokyo | 东京 |
| | Korea | 韩国 | Seoul | 汉城 |
| | China | 中国 | Macau | 澳门 |
| | Malaysia | 马来西亚 | Kuala Lumpur | 吉隆坡 |
| | Maldives | 马尔代夫 | Male | 马累 |
| | Mongolia | 蒙古 | Ulaanbaatar | 乌兰巴托 |
| | Nepal | 尼泊尔 | Kathmandu | 加德满都 |
| | Pakistan | 巴基斯坦 | Islamabad | 伊斯兰堡 |
| | Pakistan | 巴基斯坦 | Karachi | 卡拉奇 |
| | Pakistan | 巴基斯坦 | Lahore | 拉合尔 |
| | Philippines | 菲律宾 | Cebu City | 宿雾市 |
| | Philippines | 菲律宾 | Manila | 马尼拉 |
| | Republic of Armenia | 亚美尼亚共和国 | Yerevan | 叶里温 |
| | Singapore | 新加坡 | Singapore | 新加坡 |
| | Sri Lanka | 斯里兰卡 | Colombo | 科伦坡 |
| | China | 中国 | Taipei | 台北 |
| | Thailand | 泰国 | Bangkok | 曼谷 |
| | Vietnam | 越南 | Hanoi | 河内 |
| | Vietnam | 越南 | Ho Chi Minh City | 胡志明市 |
| 中东(Middle East) | United Arab Emirates | 阿拉伯联合酋长国 | Fujairah | 富查伊拉 |
| | Azerbaijan | 阿塞拜疆 | Baku | 巴库 |
| | Bahrain | 巴林 | Manama | 麦纳麦 |
| | Iraq | 伊拉克 | Baghdad | 巴格达 |
| | Israel | 以色列 | Tel Aviv | 特拉维夫 |
| | Jordan | 约旦 | Amman | 安曼 |
| | Kuwait | 科威特 | Kuwait City | 科威特城 |
| | Lebanon | 黎巴嫩 | Beirut | 贝鲁特 |
| | Oman | 阿曼 | Muscat | 马斯喀特 |
| | Palestine | 巴勒斯坦 | Ramallah | 拉马拉 |
| | Qatar | 卡塔尔 | Doha | 多哈 |
| | Saudi Arabia | 沙特阿拉伯 | Riyadh | 利雅得 |
| | United Arab Emirates | 阿拉伯联合酋长国 | Dubai | 迪拜 |
# 绑定加速域名和域名解析流程 (/products/cdn/1-custom-domain-name-binding-process)
最近更新时间: 2026-08-12 17:56:52
在七牛控制台配置 CDN 加速服务时,需要进行以下两个步骤:
1. 绑定加速域名
2. 绑定成功后,七牛会提供一条 CNAME 记录值,需要为该域名配置这条 CNAME 记录,将加速域名 CNAME 解析到七牛提供的 CNAME 地址。
# 绑定加速域名 [#绑定加速域名]
## 场景描述 [#场景描述]
存储空间 bucket01 中存放了许多图片文件,现在要为这个空间绑定一个域名进行 cdn 加速。
## 域名参考 [#域名参考]
注意:一个域名不能同时进行 cname 和 A 记录
如果网站的首页为 [www.qiniu.com](http://www.qiniu.com) ,并且已经进行了 A 记录,再使用该域名绑定自定义域名,会导致不能正常访问。所以这里我们这里绑定一个未被解析使用的二级域名,例如:images.qiniu.com
## 操作流程 [#操作流程]
在存储空间 bucket01 里找到 域名绑定 栏目点击添加。
进行加速域名配置。选项如下:
| 域名类型 | 默认 |
| ---- | ----------------- |
| 加速域名 | images.qiniu.com |
| 覆盖范围 | 默认(只在国内访问) |
| 通信协议 | 默认(HTTP) |
| 使用场景 | 默认(图片小文件) |
| 源站配置 | 默认(存储空间 bucket01) |
创建后控制台会回到存储空间 bucket01 中,可以在 CDN 加速域名 区域看到刚才我们添加的 images.qiniu.com 域名,状态为 处理中。
进入域名信息界面(点击加速域名后会直接跳转),域名信息一栏显示:域名正在创建处理中;域名配置完成后会显示 CNAME
这里我们耐心等待一下,通常 8 到 15 分钟就可以处理完毕(如果超时的话您可以直接提交工单,我们会尽快为您解决问题)
域名处理完成后,我们已经可以看到 CNAME 后面已经有了内容。
# 域名解析 [#域名解析]
域名解析需要在第三方的域名 DNS 解析服务提供商处完成,通常是购买域名的域名商。
首先登陆到第三方域名服务提供商的 DNS 解析界面, 找到加速域名的主域名 qiniu.com,添加一条 DNS 记录,其中需要修改的有3个字段:
主机值 :images
记录类型 :CNAME
记录值: 在七牛控制台的域名管理界面通过 “复制 CNAME”得到
其他字段如线路、TTL 值使用默认值即可。
添加该记录后,需要一些时间等待解析 DNS 完成,您可以在控制台界面查看 CNAME 解析状态。
1. 若状态显示“等待 CNAME”,表示七牛仍然在等待域名解析提供商返回解析结果;
2. 若状态显示"成功",表示域名已经成功解析到七牛 CDN 节点,可以使用该域名作为空间 bucket01 的文件访问外链域名。
示例:
若空间 bucket01 已经配置加速域名 images.qiniu.com 完成,访问空间中的 “apple.png” 图片可使用如下外链获得加速访问效果:
`http://images.qiniu.com/apple.png`
# 刷新预取 (/products/cdn/2-refresh-the-prefetch-fusion)
最近更新时间: 2026-08-12 17:56:52
刷新分为刷新文件、刷新目录两种方式,刷新文件是以文件为单位将缓存在CDN节点上对应的资源进行清除。刷新目录是以目录为单位,将目录下的所有缓存在CDN节点上的文件进行清除。文件预取是以文件为单位进行资源预热。
动态加速每次请求都会回源,因此该场景下不提供刷新预取服务。
# 操作说明 [#操作说明]
登录**七牛管理控制台**后,进入**CDN控制台**,选择【刷新预取】,进入配置界面:

### 文件刷新 [#文件刷新]
选择【文件刷新】后,在输入框中输入需要刷新的URL;输入时,多个 URL 请用回车换行分隔,每个 URL 应当以 `http://` 或 `https:// `开头, 例如 `http://www.example.com/index.html`;提交后,您可以在页面中看到今日剩余的文件刷新量。

**注:文件刷新每天限额 500 个,单次提交文件刷新最多20个。**
### 目录刷新 [#目录刷新]
选择【目录刷新】后,在输入框中输入需要刷新的目录,目录必须以 `「/」` 结尾例如:`http://www.example.com/`;提交后,您可以在页面中看到今日剩余的目录刷新量。

**注:目录刷新每天限额 10 个。**
### 文件预取 [#文件预取]
选择【文件预取】后,输入框中输入需要预取的文件路径,提交后,您可以在页面中看到今日剩余的目录刷新量。;每个 URL 应当以 `http://` 或 `https:// `开头, 例如 `http://www.example.com/index.html`。

**注:文件预取每天限额 100 个。**
### 操作记录 [#操作记录]
选择【操作记录】可以查询最近7天左右提交的缓存刷新或文件预取的操作记录,可以查询具体的URL,提交时间以及状态信息,状态信息包含:正在处理、成功、失败三种类型。

# 告警服务 (/products/cdn/3-cdn-the-alarm-service)
最近更新时间: 2026-08-12 17:56:52
告警服务帮助用户对CDN流量、带宽、命中率、状态码等指标进行监控,包括告警配置和告警联系人两个模块。在告警配置模块中,针对每个域名,用户可以配置各项告警的触发条件。在告警联系人模块中,用户可以设置接收人、接收人组和Webhook,当某个告警条件被触发后,相应的接收者会收到邮件和短信通知。
# 告警配置 [#告警配置]
登陆[**七牛管理控制台**](https://portal.qiniu.com/signin),进入[**CDN控制台**](https://portal.qiniu.com/cdn/overview),选择【告警配置】。
## 搜索告警规则 [#搜索告警规则]

* 在域名告警规则界面,右上角搜索框输入规则名称或域名搜索相关告警规则。
* 支持规则名称和域名两个维度的搜索。
* 域名维度的搜索结果为关联该域名的所有告警规则。
## 新建告警规则 [#新建告警规则]

* 新建告警规则:在域名告警规则界面,左上角点击【新建告警规则】,可为新域名配置告警。
* 规则名称:告警规则的名称。
* 监控指标配置:用户根据业务需要配置监控指标,具体指标信息参考下表。
监控指标 选项 计量单位 状态码 高于/低于/环比波动/环比上升/环比下降 百分比 流量命中率 高于/低于/环比波动/环比上升/环比下降 百分比 请求命中率 高于/低于//环比波动/环比上升/环比下降 百分比 带宽 高于/低于 Mbps 环比波动/环比上升/环比下降 百分比 流量 高于/低于 GB 环比波动/环比上升/环比下降 百分比
说明:
(1)每条告警规则可配置的监控指标数量不超过 10 条,如有需要配置超过 10 条的,请[**提交工单**](https://support.qiniu.com/tickets/new/form?category=%E9%85%8D%E7%BD%AE%E9%97%AE%E9%A2%98\&space=CDN)申请开通高级告警服务;
(2)可以通过配置监控指标持续数据点的数量,避免因为业务抖动导致的频繁的无效的告警;“持续1个数据点”即第一个达到告警阈值的5分钟数据点则告警,“持续2个数据点”即连续2个5分钟数据点都达到告警阈值才告警,“持续3/4/5个数据点”以此类推;
(3)多项监控指标之间支持【且】或【或】两种关系;多项监控指标关系为【且】时,只有所有监控指标都达到告警阈值才会触发告警;多项监控指标关系为【或】时,任何一项监控指标达到告警阈值就会触发告警。
* 监控接收人:用户可以选择接收人、接收人组或Webhook;若没有目标接收人,可点击【新建接收人】,创建好目标接收人后,点击【新建接收人】旁边的刷新按钮,即可以选择目标接收人。
* 监控域名:非必选项,可以先创建告警规则,再添加监控域名;选择监控域名,支持模糊搜索。
## 修改告警规则 [#修改告警规则]

* 在域名告警规则界面,查找到目标告警规则,在操作列点击【编辑】,告警规则参数的修改同【新建告警规则】。
* 修改规则名称会自动创建一条新的告警规则,原告警规则不变。
* 修改告警规则,告警规则会自动变为启用状态。
## 启停告警规则 [#启停告警规则]

* 在域名告警规则界面,查找到目标告警规则,在告警启停列点击对应按钮,实现告警规则的启用或停用。
## 删除告警规则 [#删除告警规则]

* 在域名告警规则界面,查找到目标告警规则,在告警启停列点击【删除】;勾选多条目标告警规则,点击告警列表右上角的【批量删除】。
* 删除告警规则需要先解绑关联的所有域名,否则无法删除。
## 查看告警规则 [#查看告警规则]

* 在域名告警规则界面,查找到目标告警规则,在操作列点击【查看】。
# 告警联系人 [#告警联系人]

原有告警联系人模块迁移到了消息中心模块,您可以前往[**消息中心**](https://portal.qiniu.com/notification/recipient/user)进行设置,也可以通过上方导航栏的【消息】按钮进入消息中心进行设置。
# 域名归属校验 (/products/cdn/4-cdn-domain-verify-introduce)
最近更新时间: 2026-08-12 17:56:52
每个域名仅需做一次归属权校验,子域名无需重复校验。校验方法有两种:
* DNS解析验证
* 文件验证
# DNS解析验证 [#dns解析验证]
通过配置待加速域名的txt记录的方式,通过域名校验,具体方式如下
1. 通过 [https://portal.qiniu.com/cdn/domain/create](https://portal.qiniu.com/cdn/domain/create) 创建域名,提交之后系统会判断该域名是否曾经校验过。若校验过则会进入域名创建结果页。若未校验过则会进入域名验证页,如下:

2. 在您的域名解析服务商,添加TXT记录
3. 等待TXT解析生效,返回CDN控制台,单击「点击验证」,完成验证
若如果系统提示“验证失败”,请检查TXT记录是否正确填写,并等待DNS记录生效后重新验证
# 文件验证 [#文件验证]
通过在域名源站上传验证文件,并保证外网的可访问性,具体方式如下
1. 在域名验证页面点击「文件验证」,进入获取验证的页面,如下图:

2. 点击下载验证文件
3. 将验证文件上传到源站服务器的根目录,并确保通过域名根目录可访问
例如:配置加速域名verify.qiniu.com,需要将文件上传到qiniu.com所在的服务器源站,并确保 [http://qiniu.com/verification.html](http://qiniu.com/verification.html) 的外网访问性,我们将根据该文件的访问结果判断是否验证通过
4. 单击「点击验证」,完成验证
以上所有功能均可通过接口完成,详见:[/products/dcdn/9-domain-verify-information](/products/dcdn/9-domain-verify-information)
# CDN日志查询和下载工具 (/products/cdn/0-qlogfetch)
最近更新时间: 2026-04-29 14:45:04
# qlogfetch [#qlogfetch]
## 简介 [#简介]
CDN日志查询和下载工具,该工具是根据七牛的[日志下载](/products/cdn/10-fusion-api-log-download)开发的。
本工具提供有两种类型,一种是命令行工具,适用于Windows,Linux,Mac平台,另外一种是Windows下面的图形工具。
## 安装 [#安装]
本组工具不需要安装,直接下载即可使用,当然如果你使用的是命令行工具,记得从终端里面去运行,如果是图形工具直接双击打开即可使用。
## 下载 [#下载]
| 类型 | 适用平台 | 下载链接 |
| ----- | ------------------- | ------------------------------------------------------------------------------ |
| 命令行工具 | Windows, Linux, Mac | [qlogfetch-v1.0.6.zip](http://devtools.qiniu.com/qlogfetch-v1.0.6.zip) |
| 图形工具 | Windows | [QLogFetch-win-v1.1.1.zip](http://devtools.qiniu.com/QLogFetch-win-v1.1.1.zip) |
## 命令行工具使用 [#命令行工具使用]
| 命令 | 描述 |
| ------- | ------------------------------ |
| reg | 设置当前用户的`AccessKey`和`SecretKey` |
| info | 显示当前设置的`AccessKey`和`SecretKey` |
| listlog | 列出指定日期,指定域名的日志文件列表 |
| downlog | 下载指定日期,指定域名下的所有日志文件 |
| domains | 查询账户下的所有域名 |
由于查询日志和下载日志都需要七牛的API鉴权,所以我们在运行命令之前,需要设置下账号对应的`AccessKey`和`SecretKey`,它们可以从七牛的后台[这里](https://portal.qiniu.com/developer/user/key)获取。
首先要使用必须设置`AccessKey`和`SecretKey`,命令如下:
```
Usage: qlogfetch reg -ak -sk
set access key and secret key
example: qlogfetch reg -ak 'your access key' -sk 'your secret key'
```
如果你想查看当前的`AccessKey`和`SecretKey`设置,使用命令:
```
qlogfetch info
```
注意为了方便多账号切换使用,工具把`AccessKey`和`SecretKey`的内容存储在命令执行的目录下面。
查看当前帐号下的所有域名:
```
qlogfetch domains
```
获取指定日期,某个域名的日志文件列表:
```
Usage: qlogfetch [-pretty] -date -domains
list the log files of a domain of a date
example: qlogfetch listlog -date '2016-11-23' -domains 'img.abc.com'
```
可以指定`-pretty`选项,让输出变得更可读:
```
qlogfetch listlog -date '2016-11-23' -domains 'img.abc.com' -pretty
```
下载指定日期,某个域名的所有日志文件:
```
Usage: qlogfetch downlog -date -domains -dest -worker
donwload all the log files of a domain of a date
example: qlogfetch downlog -date '2016-11-23' -domains 'img.abc.com' -dest '/tmp/logs'
```
其中注意`-dest`的选项指本地日志的存储路径,这个下载日志的功能具有如下的特点:
1. 支持单个日志文件的断点续传,这个很重要,因为文件一般都比较大,如果因为意外结束的话,可以直接运行原始命令进行文件的续传
2. 支持日志文件列表的增量下载,假设有10个日志文件,第一次下载3个,后面运行原始命令,可以继续下载剩下的文件
3. 注意为了能够实现上面的功能,命令必须在和之前相同的路径之下运行,因为相关的信息都保存在那个目录之下
当然如果希望同时列举多个域名某天的日志列表或者下载多个域名某天的日志文件时,可以指定多个域名,每个域名用分号(;)分开。
例如:
```
qlogfetch listlog -date '2016-11-23' -domains 'img.abc.com;video.abc.com' -pretty
```
```
qlogfetch downlog -date '2016-11-23' -domains 'img.abc.com;video.abc.com' -dest '/tmp/logs'
```
当然如果使用过程中,忘记了命令的用法,可以查看命令帮助信息,可以通过如下的两种方法:
```
qlogfetch -h
```
```
qlogfetch
```
例如:
```
qlogfetch listlog
```
就可以显示`listlog`命令的使用方式。
# API列表 (/products/cdn/0-fusion-api-overview)
最近更新时间: 2026-09-03 10:24:50
# 1. 域名与鉴权绑定规范 [#1-域名与鉴权绑定规范]
| 接入域名 | 鉴权方式 | QPS | 覆盖模块 |
| ------------------- | -------------- | ---- | -------------------------------- |
| api.qiniu.com | Qiniu (请求内容签名) | 10 | 域名管理、域名配置 |
| fusion.qiniuapi.com | QBox (路径签名) | 5-10 | 用量统计 / 运营统计 / 缓存管理 / 证书管理 / 日志下载 |
***
# 2. 文档索引 [#2-文档索引]
| 编号 | 文档 | 内容 |
| -- | ------------------------------------------------------ | ------------------------------ |
| 01 | [鉴权指南](/products/cdn/1-fusion-api-auth-guide) | 鉴权指南 (Qiniu + QBox 签名算法) |
| 02 | [公共错误码 & 通用约束](/products/cdn/2-fusion-api-error-codes) | 公共错误码 & 业务错误码速查 |
| 03 | [快速入门](/products/cdn/3-fusion-api-quick-start) | 快速入门 (全流程接入指南) |
| 04 | [域名管理](/products/cdn/4-fusion-api-domain-management) | 域名管理 (创建 / 查询 / 上下线 / 删除) |
| 05 | [域名配置](/products/cdn/5-fusion-api-domain-config) | 域名配置 (缓存 / 防盗链 / HTTPS / 回源) |
| 06 | [用量统计](/products/cdn/6-fusion-api-usage-stats) | 用量统计 (计量带宽 / 流量 / 监控) |
| 07 | [运营统计](/products/cdn/7-fusion-api-analytics) | 运营统计 (命中率 / 状态码 / UV / TopURL) |
| 08 | [缓存管理](/products/cdn/8-fusion-api-cache-management) | 缓存刷新 & 预取 |
| 09 | [证书管理](/products/cdn/9-fusion-api-cert-management) | SSL 证书管理 |
| 10 | [日志下载](/products/cdn/10-fusion-api-log-download) | CDN 访问日志下载 |
***
# 3. 接口模块分类 [#3-接口模块分类]
## 3.1 域名管理 [#31-域名管理]
**接入域名**: api.qiniu.com | **鉴权**: Qiniu | **明细**: [域名管理](/products/cdn/4-fusion-api-domain-management)
| 接口名称 | 请求方法 | 接口地址 | 核心功能 |
| ----------------------------------------------------------------------- | ------ | ----------------------- | ------------------- |
| [创建域名](/products/cdn/4-fusion-api-domain-management#create-domain) | POST | /domain/\ | 新增普通 / 泛域名 CDN 加速配置 |
| [创建泛子域名](/products/cdn/4-fusion-api-domain-management#create-pandomain) | POST | /pandomain/\ | 基于父泛域名创建子域名加速 |
| [下线域名](/products/cdn/4-fusion-api-domain-management#offline-domain) | POST | /domain/\/offline | 暂停域名 CDN 加速服务 |
| [上线域名](/products/cdn/4-fusion-api-domain-management#online-domain) | POST | /domain/\/online | 恢复域名 CDN 加速服务 |
| [删除域名](/products/cdn/4-fusion-api-domain-management#delete-domain) | DELETE | /domain/\ | 注销域名 CDN 加速配置 |
| [获取域名列表](/products/cdn/4-fusion-api-domain-management#list-domains) | GET | /domain | 分页查询账号下所有 CDN 域名 |
| [获取域名信息](/products/cdn/4-fusion-api-domain-management#get-domain) | GET | /domain/\ | 查询单个域名的详细配置与状态 |
| 注:Name为加速服务域名 | | | |
## 3.2 域名配置 [#32-域名配置]
**接入域名**: api.qiniu.com | **鉴权**: Qiniu | **明细**: [域名配置](/products/cdn/5-fusion-api-domain-config)
| 接口名称 | 请求方法 | 接口地址 | 核心功能 |
| ------------------------------------------------------------------------- | ---- | ----------------------------- | ---------------------- |
| [修改加速区域](/products/cdn/5-fusion-api-domain-config#update-geocover) | PUT | /domain/\/geocover | 调整域名加速区域(国内 / 海外 / 全球) |
| [修改源站配置](/products/cdn/5-fusion-api-domain-config#update-source) | PUT | /domain/\/source | 变更域名回源地址、类型、协议等 |
| [修改 Range 回源](/products/cdn/5-fusion-api-domain-config#update-range) | PUT | /domain/\/range | 开启 / 关闭 Range 分片回源功能 |
| [修改回源超时](/products/cdn/5-fusion-api-domain-config#update-sourcetimeout) | PUT | /domain/\/sourcetimeout | 配置回源建连超时时间和回源读取超时时间 |
| [修改缓存规则](/products/cdn/5-fusion-api-domain-config#update-cache) | PUT | /domain/\/cache | 调整文件 / 目录的缓存时长、忽略参数等 |
| [修改响应头](/products/cdn/5-fusion-api-domain-config#update-respheader) | PUT | /domain/\/respheader | 配置 CDN 返回的 HTTP 响应头 |
| [开启 HTTPS](/products/cdn/5-fusion-api-domain-config#upgrade-https) | PUT | /domain/\/sslize | 为域名开启 HTTPS 加速 |
| [修改 HTTPS 配置](/products/cdn/5-fusion-api-domain-config#update-httpsconf) | PUT | /domain/\/httpsconf | 更换域名 HTTPS 绑定的 SSL 证书 |
| [配置 Referer 防盗链](/products/cdn/5-fusion-api-domain-config#update-referer) | PUT | /domain/\/referer | 设置域名的 Referer 黑白名单防盗链 |
| [配置 IP 黑白名单](/products/cdn/5-fusion-api-domain-config#update-ipacl) | PUT | /domain/\/ipacl | 限制访问 CDN 的客户端 IP 范围 |
| [配置 UA 黑白名单](/products/cdn/5-fusion-api-domain-config#update-uaacl) | PUT | /domain/\/uaacl | 限制访问 CDN 的客户端 UA 范围 |
| [配置时间戳防盗链](/products/cdn/5-fusion-api-domain-config#update-timeacl) | PUT | /domain/\/timeacl | 开启域名时间戳 URL 防盗链 |
| [配置回源鉴权](/products/cdn/5-fusion-api-domain-config#update-bsauth) | PUT | /domain/\/bsauth | 配置 CDN 回源时的身份鉴权信息 |
| 注:Name为加速服务域名 | | | |
## 3.3 用量统计 [#33-用量统计]
**接入域名**: fusion.qiniuapi.com | **鉴权**: QBox | **明细**: [用量统计](/products/cdn/6-fusion-api-usage-stats)
| 接口名称 | 请求方法 | 接口地址 | 核心功能 |
| --------------------------------------------------------------------------- | ---- | ----------------------------- | ----------------- |
| [计量带宽查询](/products/cdn/6-fusion-api-usage-stats#query-billing-bandwidth) | POST | /v2/tune/bandwidth | 查询计量维度带宽数据,用于账单核对 |
| [计量流量查询](/products/cdn/6-fusion-api-usage-stats#query-billing-flux) | POST | /v2/tune/flux | 查询计量维度流量数据,用于账单核对 |
| [监控带宽查询](/products/cdn/6-fusion-api-usage-stats#query-monitoring-bandwidth) | POST | /v2/tune/monitoring/bandwidth | 查询实时监控带宽数据,时效性优先 |
| [监控流量查询](/products/cdn/6-fusion-api-usage-stats#query-monitoring-flow) | POST | /v2/tune/monitoring/flow | 查询实时监控流量数据,时效性优先 |
## 3.4 运营统计 [#34-运营统计]
**接入域名**: fusion.qiniuapi.com | **鉴权**: QBox | **明细**: [运营统计](/products/cdn/7-fusion-api-analytics)
| 接口名称 | 请求方法 | 接口地址 | 核心功能 |
| --------------------------------------------------------------------------- | ---- | --------------------------------- | ----------------------- |
| [缓存命中率统计](/products/cdn/7-fusion-api-analytics#query-hitmiss) | POST | /v2/tune/loganalyze/hitmiss | 查询 CDN 缓存的命中 / 未命中次数及流量 |
| [HTTP 状态码统计](/products/cdn/7-fusion-api-analytics#query-statuscode) | POST | /v2/tune/loganalyze/statuscode | 查询各 HTTP 状态码的访问次数 |
| [请求次数统计](/products/cdn/7-fusion-api-analytics#query-reqcount) | POST | /v2/tune/loganalyze/reqcount | 按区域查询 CDN 总请求次数 |
| [UV 独立访客统计](/products/cdn/7-fusion-api-analytics#query-unique-visitor) | POST | /v2/tune/loganalyze/uniquevisitor | 查询 CDN 独立访客数(UV) |
| [访问次数Top URL统计](/products/cdn/7-fusion-api-analytics#query-top-count-url) | POST | /v2/tune/loganalyze/topcounturl | 查询访问次数 TOP 的资源 URL |
| [访问流量Top URL统计](/products/cdn/7-fusion-api-analytics#query-top-traffic-url) | POST | /v2/tune/loganalyze/toptrafficurl | 查询访问流量 TOP 的资源 URL |
| [访问次数Top IP统计](/products/cdn/7-fusion-api-analytics#query-top-count-ip) | POST | /v2/tune/loganalyze/topcountip | 查询访问次数 TOP 的客户端 IP |
| [访问流量Top IP统计](/products/cdn/7-fusion-api-analytics#query-top-traffic-ip) | POST | /v2/tune/loganalyze/toptrafficip | 查询访问流量 TOP 的客户端 IP |
| [区域运营商流量统计](/products/cdn/7-fusion-api-analytics#query-isp-traffic) | POST | /v2/tune/loganalyze/traffic | 按区域 / 运营商查询流量数据 |
| [区域运营商带宽统计](/products/cdn/7-fusion-api-analytics#query-isp-bandwidth) | POST | /v2/tune/loganalyze/bandwidth | 按区域 / 运营商查询带宽数据及峰值 |
| [ISP 请求次数统计](/products/cdn/7-fusion-api-analytics#query-isp-reqcount) | POST | /v2/tune/loganalyze/ispreqcount | 按运营商查询 CDN 请求次数 |
| [ISP 流量占比统计](/products/cdn/7-fusion-api-analytics#query-isp-traffic-ratio) | POST | /v2/tune/loganalyze/isptraffic | 查询各运营商的流量占比情况 |
## 3.5 缓存刷新 & 预取 [#35-缓存刷新--预取]
**接入域名**: fusion.qiniuapi.com | **鉴权**: QBox | **明细**: [缓存管理](/products/cdn/8-fusion-api-cache-management)
| 接口名称 | 请求方法 | 接口地址 | 核心功能 |
| ------------------------------------------------------------------ | ---- | ---------------------- | -------------------- |
| [缓存刷新](/products/cdn/8-fusion-api-cache-management#cache-refresh) | POST | /v2/tune/refresh | 刷新 CDN 节点上的文件 / 目录缓存 |
| [刷新查询](/products/cdn/8-fusion-api-cache-management#query-refresh) | POST | /v2/tune/refresh/list | 查询缓存刷新任务的执行状态 |
| [资源预取](/products/cdn/8-fusion-api-cache-management#prefetch) | POST | /v2/tune/prefetch | 将源站新资源预取到 CDN 节点 |
| [预取查询](/products/cdn/8-fusion-api-cache-management#query-prefetch) | POST | /v2/tune/prefetch/list | 查询资源预取任务的执行状态 |
## 3.6 SSL 证书管理 [#36-ssl-证书管理]
**接入域名**: fusion.qiniuapi.com | **鉴权**: QBox | **明细**: [证书管理](/products/cdn/9-fusion-api-cert-management)
| 接口名称 | 请求方法 | 接口地址 | 核心功能 |
| --------------------------------------------------------------- | ------ | ----------------------------------------- | ----------------------- |
| [上传证书](/products/cdn/9-fusion-api-cert-management#upload-cert) | POST | /sslcert | 上传 SSL 证书,用于域名 HTTPS 配置 |
| [删除证书](/products/cdn/9-fusion-api-cert-management#delete-cert) | DELETE | /sslcert/\ | 删除账号下未绑定的 SSL 证书 |
| [获取证书](/products/cdn/9-fusion-api-cert-management#get-cert) | GET | /sslcert/\ | 查询单个 SSL 证书的详细信息 |
| [获取证书列表](/products/cdn/9-fusion-api-cert-management#list-certs) | GET | /sslcert?marker=\\&limit=\ | 分页查询账号下所有 SSL 证书 |
| 注:certId为证书ID | | | |
## 3.7 CDN 日志下载 [#37-cdn-日志下载]
**接入域名**: fusion.qiniuapi.com | **鉴权**: QBox | **明细**: [日志下载](/products/cdn/10-fusion-api-log-download)
| 接口名称 | 请求方法 | 接口地址 | 核心功能 |
| ------------------------------------------------------------- | ---- | ----------------- | ------------------- |
| [日志下载](/products/cdn/10-fusion-api-log-download#download-log) | POST | /v2/tune/log/list | 申请并获取 CDN 访问日志的下载链接 |
***
# 4. 核心约束 [#4-核心约束]
| 约束项 | 说明 |
| ------ | ------------------------------------------------------------------------------------------------------------------------------- |
| 请求域名 | 域名管理/配置 → api.qiniu.com,其余 → fusion.qiniuapi.com |
| 鉴权方式 | api → Qiniu AK:Sign,fusion → QBox access\_token,不可混用 |
| 请求格式 | 请求体均为紧凑 JSON,Header POST、PUT请求使用Content-Type:application/json;GET、DELETE请求使用Content-Type:application/x-www-form-urlencoded 或不追加 |
| 幂等性 | GET/DELETE/PUT 幂等,POST 部分非幂等 (创建/刷新/预取) |
| QPS 限制 | api 10 QPS,fusion 5-10 QPS,超限返回 403024 |
| 生效时间 | 域名配置 5-10 分钟,刷新 5-10 分钟,预取 10-20 分钟 |
| 参数差异 | 用量统计 domains=string(分号分隔),运营统计 domains=array |
| 日志保留 | 仅 30 天内,仅支持单日查询 |
| 统计数据保留 | 计量 180 天 / 监控 90 天 / 运营 90 天 |
| 时间统计跨度 | 用量统计跨度 ≤ 31 天,运营统计跨度 ≤ 30 天 |
# 鉴权指南 (/products/cdn/1-fusion-api-auth-guide)
最近更新时间: 2026-06-04 16:36:02
# 1. 概述 [#1-概述]
七牛云 CDN OpenAPI 采用 **双域名 + 双鉴权** 架构,两种鉴权方式与请求域名严格绑定,不可混用。
| 请求域名 | 鉴权方式 | 覆盖模块 | QPS |
| --------------------- | --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---- |
| `api.qiniu.com` | **Qiniu 鉴权** (请求内容签名) | [域名管理](/products/cdn/4-fusion-api-domain-management) 、[域名配置](/products/cdn/5-fusion-api-domain-config) | 10 |
| `fusion.qiniuapi.com` | **QBox 鉴权** (路径签名) | [用量统计](/products/cdn/6-fusion-api-usage-stats)、[运营统计](/products/cdn/7-fusion-api-analytics)、[缓存管理](/products/cdn/8-fusion-api-cache-management)、[证书管理](/products/cdn/9-fusion-api-cert-management)、[日志下载](/products/cdn/10-fusion-api-log-download) | 5-10 |
***
# 2. 接入准备 [#2-接入准备]
## 2.1 密钥获取 [#21-密钥获取]
**七牛云控制台 > 个人中心 > 密钥管理**,获取 AccessKey (AK) 和 SecretKey (SK)。
> **安全提示**: SK 为核心密钥,严禁在客户端暴露,所有鉴权操作必须在服务端完成。
## 2.2 环境要求 [#22-环境要求]
* **通信协议**: 仅 HTTPS (443 端口)
* **字符编码**: UTF-8
* **请求格式**: POST/PUT 请求体为紧凑 JSON (无格式化空格/换行)
* **请求方法**: 支持 GET/POST/PUT/DELETE
* **时间同步**: 服务器 UTC 时间偏差 ≤ 30 秒
***
# 3. Qiniu 鉴权详解 [#3-qiniu-鉴权详解]
### 3.1 适用范围 [#31-适用范围]
* `api.qiniu.com` 下所有接口:[域名管理](/products/cdn/4-fusion-api-domain-management) 、[域名配置](/products/cdn/5-fusion-api-domain-config)
## 3.2 签名算法 [#32-签名算法]
示例:对应 Python-SDK `QiniuMacAuth.token_of_request`,基于完整请求内容签名。
**签名原始串拼接规则:**
```
data = "{Method} {PathWithQuery}" # 例: "POST /domain/test.example.com"
data += "\nHost: {Host}" # 例: "\nHost: api.qiniu.com"
data += "\nContent-Type: {ContentType}" # 例: "\nContent-Type: application/json"
data += "\n{X-Qiniu-Headers}" # 例: "\nX-Qiniu-Date: 20260213T120000Z"
data += "\n\n" # 固定两个换行
data += "{Body}" # POST/PUT 请求体 (GET/DELETE 为空)
```
> 所有 X-Qiniu- 自定义头按字典序升序逐行拼接
**签名生成:**
```
Sign = HmacSHA1(data, SK)
Token = AK + ":" + urlsafe_base64(Sign)
Header = "Authorization: Qiniu {Token}"
```
> 注意:Qiniu 与 Token 之间必须保留一个英文空格
**URL 安全 Base64**: 标准 Base64 后将 `+` 替换为 `-`,`/` 替换为 `_`,保留尾部 `=`。
## 3.3 生成步骤 [#33-生成步骤]
1. **拼接 Method + Path**
```
"PUT /domain/test.example.com/cache"
```
2. **追加 Host**
```
"\nHost: api.qiniu.com"
```
3. **追加 Content-Type** (有请求体时)
```
"\nContent-Type: application/json"
```
4. **追加 X-Qiniu-Date** (参与签名的自定义头)
```
"\nX-Qiniu-Date: 20260213T120000Z"
```
5. **固定追加两个换行**
```
"\n\n"
```
6. **追加请求体** (POST/PUT 时追加紧凑 JSON,GET/DELETE 不追加)
```
{"cacheControls":[{"time":3,"timeunit":0,"type":"all","rule":"*"}],"ignoreParam":true}
```
7. **HmacSHA1 签名 + URL 安全 Base64 编码**
## 3.4 请求示例 [#34-请求示例]
```bash
curl -X PUT 'https://api.qiniu.com/domain/test.example.com/cache' \
-H 'Content-Type: application/json' \
-H 'X-Qiniu-Date: 20260213T120000Z' \
-H 'Authorization: Qiniu :' \
-d '{"cacheControls":[{"time":3,"timeunit":0,"type":"all","rule":"*"}],"ignoreParam":true}'
```
## 3.5 关键注意 [#35-关键注意]
* Body 参与签名时 **必须与实际发送的请求体完全一致** (字节级)
* Qiniu 鉴权:Content-Type: application/octet-stream 二进制请求体不参与签名
* `X-Qiniu-Date` 为 UTC 时间,格式 `YYYYMMDDTHHMMSSZ`,偏差 ≤ 30 秒
***
# 4. QBox 鉴权详解 [#4-qbox-鉴权详解]
## 4.1 适用范围 [#41-适用范围]
* `fusion.qiniuapi.com` 下所有接口:[用量统计](/products/cdn/6-fusion-api-usage-stats)、[运营统计](/products/cdn/7-fusion-api-analytics)、[缓存管理](/products/cdn/8-fusion-api-cache-management)、[证书管理](/products/cdn/9-fusion-api-cert-management)、[日志下载](/products/cdn/10-fusion-api-log-download)
## 4.2 签名算法 [#42-签名算法]
示例:对应 Python-SDK `Auth.token_of_request`,基于接口路径签名,轻量高效。
**签名原始串拼接规则:**
```
data = "{Path+Query}\n" # 例: "/v2/tune/refresh\n" 或 "/sslcert?marker=&limit=10\n"
```
> **重要**: 仅当请求头 Content-Type 为 application/x-www-form-urlencoded 且存在请求体时,请求体才会参与 QBox 签名;application/json 及其他所有类型请求体均不参与 QBox 签名。CDN 所有接口均使用 JSON 请求体,因此 QBox 签名只拼接「路径 + query」
**签名生成:**
```
Sign = HmacSHA1(data, SK)
Token = AK + ":" + urlsafe_base64(Sign)
Header = "Authorization: QBox {Token}"
```
> 注意:QBox 与 Token 之间必须保留一个英文空格
## 4.3 生成步骤 [#43-生成步骤]
1. **拼接签名数据**: `接口路径 + query 参数 后加换行符`
* 示例: `/sslcert?marker=&limit=10\n`
* 签名串只包含路径和 query,不包含域名、协议、请求体
2. **HmacSHA1 签名**: 使用 SK 作为密钥
3. **拼接 Token**: `AK:urlsafe_base64(签名结果)`
## 4.4 请求示例 [#44-请求示例]
```bash
# 缓存刷新
curl -X POST 'https://fusion.qiniuapi.com/v2/tune/refresh' \
-H 'Content-Type: application/json' \
-H 'Authorization: QBox :