# 静态资源配置

[微信云托管-静态资源存储-静态资源配置](https://cloud.weixin.qq.com/cloudrun/extension/static-storage)中管理所有资源文件内容，并可以查看上传后文件的详细信息。

![](https://res8.wxqcloud.qq.com.cn/wxdoc/9b47fcbf-e6b2-4512-b910-46d7aa66ee40.png)

## 一、域名配置

静态资源存储提供默认的域名，可以直接使用，用于开发测试和产品体验。

你可以设置索引文件，默认是 `index.html`

当你访问域名时，会直接路由到你资源中根目录的 `index.html` 文件。

如果资源中根目录有一个文件夹 `res` , `res` 文件夹中有一个文件 `test.html`，你想设置这个文件为索引文件，则需要填写如下路径：

``` bash
res/test.html
```

如果有多级文件夹，则依次填写，文件夹之间用 `/` 隔开。

自定义域名配置相关参考[对应文档](/minigame/dev/wxcloudrun/src/guide/domain/index)
> 当前我们正在加紧支持静态资源存储的自定义域名（2021 年 12 月 16 日）

## 二、缓存配置

可以针对文件的 CDN 回源时间进行管理，默认所有文件的回源时间为 2 分钟。

规则支持 `文件名` 、`文件类型` 和 `文件夹` 三种匹配方式。

支持三种配置方式：

1. 按文件类型设置缓存过期时间

   - 配置缓存时间时可填入多项，每项用 ; 隔开，内容区分大小写，必须是以 . 开头的文件后缀，例如 .png。
   - 刷新时间设置为 0 时，不缓存，所有请求转发至用户源站，缓存时间设置最大值不能超过 365 天。
   - 输入框默认提示：例如 .png，.jpg，.php。

2. 按文件夹设置缓存过期时间

   - 配置缓存时间时可填入多项，每项用 ; 隔开，内容区分大小写，必须是以 / 开头的文件夹。
   - 刷新时间设置为 0 时，不缓存，所有请求转发至用户源站，缓存时间设置最大值不能超过 365 天。

3. 按文件设置缓存过期时间

   - 配置缓存时间时可填入多项，每项用 ; 隔开，内容区分大小写，支持匹配某一类型文件，例如 /test/abc/*.jpg。
   - 单击保存，将进行配置部署，您需等待 5 分钟左右。

> **注意：**过短的缓存时间将大幅度消耗 CDN 流量，建议在开发时合理配置缓存时间。

### 什么是缓存配置？

对象存储内的文件默认 CDN 加速，开发者可以通过改变缓存配置来控制 CDN 遵循的过期规则。
合理地配置缓存时间，能够有效的提升命中率，降低回源率，节省您的流量资源消耗。
用户访问资源会首先去 CDN 节点请求，若节点有缓存则返回资源，无缓存则回源获取。

> 注意：

> 刷新时间设置为 0 时，不缓存，所有请求转发至用户源站；缓存时间设置最大值不能超过 365 天。

> 在控制台中上传文件/文件夹，会自动刷新节点内的缓存文件。

> 配置部署中，若您再次编辑缓存配置，会覆盖之前的配置。以最后一次部署结果为准。

### 缓存策略优先级

配置项列表底部优先级高于顶部优先级。您可以拖动列表中的调整优先级的移动图标即可调整优先级。

当设置了多条缓存策略时，相互之间会有重复，假如某域名已配置如下缓存配置：

目标 | 缓存时长 |
--- | --- |
所有文件|2 分钟
.php .jsp .aspx| 0 秒
.jpg .png .gif|300 秒
/test/*.jpg|400 秒
/test/abc.jpg|200 秒

假设域名为 `cloud.weixin.qq.com` ，资源为 `cloud.weixin.qq.com/test/abc.jpg`，其匹配方式如下：

- 匹配第一条所有文件，命中，此时缓存时间为 2 分钟。
- 匹配第二条，未命中。
- 匹配第三条，命中，此时缓存时间为 300 秒。
- 匹配第四条，命中，此时缓存时间为 400 秒。
- 匹配第五条，命中，此时缓存时间为 200 秒。

- 因此最终缓存时间为 200 秒，以最后一次匹配生效。

## 三、防盗链配置

为了避免恶意程序使用资源 URL 盗刷公网流量或使用恶意手法盗用资源，而为自己带来不必要的损失，你可以根据业务需要合理配置来进行安全防护。

![](https://res8.wxqcloud.qq.com.cn/wxdoc/ff6eabd9-040b-4a52-aec1-4806907dcb5e.png)

打开「防盗链配置开关」，会自动弹出上述对话框，填写配置信息，确定后即操作完成，配置项说明如下：

- **类型-黑名单：** 拒绝 referer 名单内的域名访问，若 referer 名单内的域名访问地址，则返回 403。
- **类型-白名单：** 允许 referer 名单内的域名访问，若 referer 名单外的域名访问存，则返回 403。
- **Referer：** 支持设置最多 10 条域名且为相同前缀匹配，每条一行，多条请换行；支持域名、IP 和通配符 * 等形式的地址。
- **空 referer：** HTTP 请求中，header 为空 referer（即不带 referer 字段或 referer 字段为空），通常是浏览器直接访问资源地址或者是代码请求才会出现；勾选则将此类情况打入黑/白名单。

Referer 举例：
- 配置 `www.example.com`：可限制 `www.example.com/123`、`www.example.com.cn` 等以 `www.example.com` 为前缀的地址。
- 可配置带端口的域名和 IP，例如 `www.example.com:8080`、`10.10.10.10:8080` 等地址。
- 配置 `*.example.com`：可限制 `a.b.example.com/123`、`a.example.com` 等地址。

## 四、IP 黑白名单配置

若您希望对业务资源的访问来源进行控制，通过对用户请求端 IP 配置访问控制策略，可以有效限制访问来源，阻拦恶意 IP 盗刷、攻击等问题。

![](https://res8.wxqcloud.qq.com.cn/wxdoc/3c7a9554-b861-4383-9178-a8f555c880ba.png)

打开「IP 黑名单配置开关」，会自动弹出上述对话框，填写配置信息，确定后即操作完成，配置项说明如下：

- **IP 黑名单** ：用户端 IP 匹配黑名单中的 IP 或 IP 段时，访问 CDN 节点时将直接返回 403 状态码。
- **IP 白名单** ：用户端 IP 未匹配白名单中的 IP 或 IP 段时，访问 CDN 节点时将直接返回 403 状态码。
- **IP** ：至多可输入 `200` 个；IP 段仅支持 `/8`、`/16`、`/24` 网段，不支持其他网段；不支持 `IP:端口` 形式。

## 五、IP 访问限频配置

若您希望对业务资源的访问来源进行控制，通过对单 IP 单节点在每一秒钟的访问次数进行限制，可进行高频 CC 攻击抵御、防恶意用户盗刷等。

![](https://res8.wxqcloud.qq.com.cn/wxdoc/e59c76b8-92aa-493d-b5cf-ed23f7fe18d1.png)

打开「IP 限频配置开关」，会自动弹出上述对话框，填写配置信息，确定后即操作完成，配置项说明如下：

- 配置开启后，超出 QPS 限制的请求会直接返回 514，设置较低频次限制可能会影响您的正常高频用户的使用，请根据业务情况、使用场景合理设置阈值。
- 限频仅针对与单 IP 单节点访问次数进行约束，若恶意用户海量 IP 针对性的进行全网节点攻击，则通过此功能无法进行有效控制。

举例：
若你的限频配置为 `1qps`，则实际访问情况如下：

- 客户端 IP 为 `1.1.1.1` 的用户，在一秒内请求了 10 次资源 `domain/1.jpg`，均访问至 CDN 加速节点 A 中的一台 server，此时在该 server 上产生 10 条访问日志，其中有 9 条因超出 QPS 限制，状态码为 `514`。
- 客户端 IP 为 `2.2.2.2` 的用户，在一秒内请求了 2 次资源 `domain/1.jpg`，受网络影响，可能访问被分别调度至两个 CDN 加速节点上进行处理，此时每一个加速节点均会正常返回内容。

## 六、跨域访问配置

打开「跨域访问配置开关」，填入自己的业务域名，保存后该域名即可使用静态资源而没有跨域问题。

注意：当前跨域访问配置解决 *动态访问静态* 问题，*静态访问动态* 需在服务端配置开启 cors 允许跨域在后台代码里实现。
