hosting.md 16.6 KB
Newer Older
Q
qiang 已提交
1 2 3 4 5 6 7 8 9 10 11
## 简介

DCloud为开发者提供了`uni发布平台`,包括网站发布、App发布和统一门户页面。

`前端网页托管`是其中的网页发布环节产品。

`前端网页托管`基于uniCloud的能力,为开发者的html网页提供**更快速、更安全、更省心、更便宜**的网站发布。

- 更快速:不经过web server,页面和资源直接上cdn,就近访问,速度更快。
- 更安全:不存在传统服务器各种操作系统、web server的漏洞,不用天天想着打补丁。不怕DDoS攻击,永远打不垮的服务。
- 更省心:无需再购买虚拟机、安装操作系统、配置web服务器、处理负载均衡、处理大并发、处理DDoS攻击......您什么都不用管,只需上传您写的页面文件
雪洛's avatar
雪洛 已提交
12
- 更便宜:uniCloud由DCloud联合阿里云和腾讯云推出,享受云厂商政策优惠。
Q
qiang 已提交
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121

## 案例

- `HBuilderX`文档网站,是一个基于`markdown`的文档系统,域名:[https://hx.dcloud.net.cn/](https://hx.dcloud.net.cn/)
- `uni统计`官网现已部署到uniCloud,一份报表,掌握业务全景,域名:[https://tongji.dcloud.net.cn](https://tongji.dcloud.net.cn)
- `hello uni-app`项目现已部署到uniCloud,线上地址:[https://hellouniapp.dcloud.net.cn](https://hellouniapp.dcloud.net.cn)

## 开通

首先开发者需要开通`uniCloud`,登录[https://unicloud.dcloud.net.cn/](https://unicloud.dcloud.net.cn/)

然后选择或创建一个服务空间。

最后在上述网页左侧导航点击`前端网页托管`,即可开始使用。

`前端网页托管`和云函数没有绑定关系,可以和云函数部署在一个服务空间,也可以是不同的空间,甚至是不同云服务商的空间。

- 阿里云`前端网页托管`免费。
- 腾讯云`前端网页托管`需付费开通,定价由腾讯云提供。腾讯云的不同档套餐有不同规格,见文末附表:


## 使用

开通后,需要把开发者的前端网页,上传到uniCloud的`前端网页托管`中。

目前提供了2种方式操作:

方式1. 通过[uniCloud控制台](https://unicloud.dcloud.net.cn/),在web界面上传。

  上传时,可以按文件上传,也可以按文件夹上传。

  如果是按文件夹上传,可以选择上传后的目录是否包含上传文件夹的根目录。

![](https://img.cdn.aliyun.dcloud.net.cn/uni-app/uniCloud/unicloud-web-hosting.jpg)

方式2. 通过HBuilderX工具上传。

  > HBuilderX 2.8+起,支持在HBuilderX中直接上传前端网页到uniCloud中。

  在菜单发行中,选择`上传网站到服务器`

  - 对于uni-app项目,可以先编译为h5,然后直接把编译后的h5上传上去。如下图

![](https://img.cdn.aliyun.dcloud.net.cn/uni-app/uniCloud/unicloud-hx-hosting.jpg)

  - 对于非uni-app项目,可以自己选择要上传的目录,包含html、js、css、图片等静态前端文件接口。如下图

![](https://img.cdn.aliyun.dcloud.net.cn/uni-app/uniCloud/unicloud-hx-hosting-h5.jpg)

  > HBuilderX 2.8.9+,支持前端网页托管管理器。

  在菜单视图中,或者在左下角状态栏中,点击`前端网页托管`,可在左侧打开前端网页托管管理器。如下图

![](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/aa6a801a-3fbc-441d-98ce-156ccb221f3e.jpg)

  在前端网页托管管理器中,可以看到当前用户的服务空间列表,置灰表示该服务空间还没有开通前端网页托管,点击后可根据提示开通。(如上图中置灰的ali1服务空间)。

  点击可用的服务空间,在右侧可以看到远端的资源管理器,把本地文件拖进入,即可上传文件。

**注意事项**

1. `前端网页托管`适于uni-app的h5页面发布。尤其是配搭uniCloud云开发,将彻底不用再租用任何传统的服务器。
2. `前端网页托管`适于所有前后端分离的网站中的前端页面发布,包括pc网页。
3. 仅支持html、CSS、JavaScript、字体、图片、音视频、json等文件。不支持php、java、python、ruby、go、c++等其他需要额外语言解释器解释的语言文件。
4. 如果开发者需要做a/b test或灰度新功能,需要自己在js里写代码实现,不能通过路由到不同服务器实现。
5. uni-app项目编译为h5时,在项目的manifest中配置二级目录。上传时无需重复设置二级目录。
6. 一个`前端网页托管`的空间里,可以上传多个网站,用不同目录区分开,访问时使用同一个域名后加不同目录的方式访问。不支持每个目录单独设置不同域名。
7. 部署到不同的服务空间的`前端网页托管`内的网站,也是可以访问同一个服务空间内的云函数的,只需要在部署云函数的服务空间的`跨域配置`内添加部署前端页面的域名即可

## 基础配置@base-config

本章节介绍`前端网页托管`提供的各种配置项目说明。其中配置域名、网站首页、404页面,是阿里云和腾讯云均支持的,其他配置仅腾讯云支持。

### 配置域名@domain

`前端网页托管`,自带一个测试域名,仅用于产品体验及测试可快速体验前端网页部署的完整流程,该域名有如下限制:
  + 阿里云每分钟最多60次请求,默认每日仅允许10个公网IP访问,超出部分,需通过手动方式将来源IP加入白名单,IP白名单也会有数量限制
  + 腾讯云限速100K/s

业务如要上线商用,请配置自己的正式域名,配置自己的正式域名后,将不受上述测试域名的限制。(尤其注意阿里云测试域名是公共的,任意一个服务空间如果有上传恶意文件被投诉,会导致测试域名被微信内置浏览器整体禁封)


前端网页托管配置自己域名的步骤如下:

1、登录[uniCloud控制台](https://unicloud.dcloud.net.cn/)
2、进入前端网页托管页面,选择【基础设置】,单击【添加域名】,进行域名添加,如下图所示:

 ![](https://dcloud-img.oss-cn-hangzhou.aliyuncs.com/uni-app/uniCloud/uniCloud-hosting-domain-add.jpg)

3、添加后,系统会自动分配一个 CNAME 域名,CNAME 域名不能直接访问,您需要在域名服务提供商处完成 CNAME 配置(将添加的域名CNAME到此域名),配置生效后,新域名即可使用。

阿里云现已支持http强制跳转https,在上述添加界面打开对应开关即可

**域名备案**

如果你已经有备案过的域名,直接解析过来即可;如果你要新注册域名,首先自行在网上购买,然后注意域名如果想在国内正常绑定阿里云或腾讯云,需要域名备案。这里的备案流程和传统云主机略有不同,涉及一个uniCloud没有固定ip的问题。此时可以去买花生壳的备案服务;也可以临时买一个短期传统云,走传统备案;还有授权码方案,这里有开发者分享的经验贴:[https://ask.dcloud.net.cn/article/38116](https://ask.dcloud.net.cn/article/38116)

**关于证书内容与私钥**

域名如果使用https,则需要证书。证书签发后,可下载到本地,然后将内容复制黏贴到uniCloud web控制台。

注意:各运营商下载证书的后缀可能不同,一般来说,`.key`文件对应私钥,`.pem``.crt`文件对应证书。这几种类型文件都是文本内容,可选择记事本打开查看内容。

如果您还没有SSL证书,点此[快速获取](https://cloud.tencent.com/act/cps/redirect?redirect=33848&cps_key=c858f748f10419214b870236b5bb94c6)

**注意事项**

- 在阿里云开启了泛域名加速的情况下,对应的子域名可能无法配置到前端网页托管,**这种情况下可能会提示:该域名已被添加过,不能重复添加**
- 暂不支持绑定中文域名
Q
qiang 已提交
122 123 124
- 阿里云要求必须有一个备案在阿里才可以绑定,按照uniCloud web控制台提示操作即可,腾讯云没有此条限制。

**务必注意,如果你是在腾讯购买并备案的域名需要保留一个到腾讯ip的解析,否则备案会被撤销,阿里云同理。具体细节可以咨询购买域名的云厂商**
Q
qiang 已提交
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252

### 路由规则@routing

**网站首页**

设置网站首页文档名

**404页面**

访问静态网站出错后返回的页面。

**重定向规则**

> 仅腾讯云支持

支持以下三种组合配置

- 类型:错误码、规则:替换路径。将特定错误码的请求重定向到目标文档,仅支持对4xx错误码。

例:将404错误码重定向至index.html,需做如下配置(uni-app项目使用history模式发行到h5时可以使用此配置):

|类型		|描述	|规则			|替换内容		|
|:-:		|:-:	|:-:			|:-:				|
|错误码	|404	|替换路径	|index.html	|

- 类型:前缀匹配、规则:替换路径。将匹配到特定前缀的请求重定向到目标文档

例:当您删除了images/文件夹(即删除了具有前缀images/的所有对象)。您可以添加重定向规则,将具有前缀images/的任何对象的请求重定向至test.html页面。

|类型			|描述		|规则			|替换内容	|
|:-:			|:-:		|:-:			|:-:			|
|前缀匹配	|images/|替换路径	|test.html|

- 类型:前缀匹配、规则:替换前缀。将匹配到特定前缀的请求中的前缀替换为替换内容,例:

例:当您将文件夹从docs/重命名为documents/后,用户在访问docs/文件夹会产生错误。所以,您可以将前缀docs/的请求重定向至documents/。

|类型			|描述	|规则			|替换内容		|
|:-:			|:-:	|:-:			|:-:				|
|前缀匹配	|docs/|替换前缀	|documents/	|

### 缓存配置@cache

> 仅腾讯云支持

- 文件类型:根据填入的文件后缀进行缓存过期时间设置,格式为.jpg形式,不同后缀之间用;间隔。
- 文件夹:根据填入的目录路径进行缓存过期时间设置,格式为/test形式,无需以/结尾,不同目录之间用;间隔。
- 全路径文件:指定完整的文件路径进行缓存过期时间设置,格式为/index.html,支持完整路径加文件类型匹配模式,如/test/*.jpg。

**注意**

- 缓存过期规则最多可配置10条。
- 多条缓存过期规则之间的优先级为底部优先。
- 缓存过期时间最多可设置365天。

### 防盗链配置@referer

> 仅腾讯云支持

**referer 黑名单:**

- 若请求的 referer 字段匹配黑名单内设置的内容,CDN 节点拒绝返回该请求信息,直接返回403状态码。
- 若请求的 referer 不匹配黑名单内设置的内容,则 CDN 节点正常返回请求信息。
- 当勾选包含空 referer 选项时,此时若请求 referer 字段为空或无 referer 字段(如浏览器请求),则 CDN 节点拒绝返回该请求信息,返回403状态码。

**referer白名单:**

- 若请求的 referer 字段匹配白名单设置的内容,则 CDN 节点正常返回请求信息。
- 若请求的 referer 字段不匹配白名单设置的内容,则 CDN 节点拒绝返回该请求信息,会直接返回状态码403。
- 当设置白名单时,CDN 节点只能返回符合该白名单内字符串内容的请求。
- 当勾选包含空 referer 选项时,此时若请求 referer 字段为空或无 referer 字段(如浏览器请求),则 CDN 正常返回请求信息。

**配置规则:**

防盗链支持域名 / IP 规则,匹配方式为前缀匹配(仅支持路径情况下,域名的前缀匹配不支持),即假设配置名单为www.abc.com,则www.abc.com/123匹配,www.abc.com.cn不匹配;假设配置名单为127.0.0.1,则127.0.0.1/123也会匹配。
防盗链支持通配符匹配,即假设名单为*.qq.com,则www.qq.com、a.qq.com均会匹配。

### IP黑白名单配置@ip-filter

> 仅腾讯云支持

**IP 黑名单**

用户端 IP 匹配黑名单中的 IP 或 IP 段时 ,访问 CDN 节点时将直接返回403状态码。

**IP 白名单**

用户端 IP 未匹配白名单中的 IP 或 IP 段时 ,访问 CDN 节点时将直接返回403状态码。

**名单规则**

- IP 黑名单与 IP 白名单二选一,不可同时配置。
- IP 段仅支持 /8、/16、/24 网段,不支持其他网段。
- 不支持IP:端口形式的黑白名单
- 名单最多可输入50个。

### 默认域名IP白名单@default-domain-ip-whitelist

> 仅阿里云支持

为保障默认域名不被滥用,阿里云对默认域名做出了如下限制:每天前10个IP可以直接访问,超出10个IP后需要配置IP白名单才可以访问

仅支持配置ipv4,可以配置IP或者IP网段,掩码位数取值范围24-31。最多可同时配置三个,多个之间用逗号隔开,如:123.120.5.235/24,123.123.123.123

### IP访问限频配置@ip-freq

> 仅腾讯云支持

**配置说明**

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

## 最佳实践

### 部署uni-app项目@host-uni-app

uni-app项目根据路由模式不同需要做不同的配置

- 使用hash模式时,无需特别的配置即可正常使用

- 使用history模式时可以配置如下规则

  + 腾讯云配置重定向规则将404错误码重定向至`index.html`
  + 阿里云配置错误文档为`index.html`

手动部署uni-app项目时需要注意将文件部署在配置的h5基础路径下。**HBuilderX一键部署时会自动按照manifest.json内配置的基础路径进行部署**

Q
qiang 已提交
253 254 255 256 257 258 259 260 261
### 部署多个项目@host-multi-project

如果部署多个项目到一个服务空间可以使用不同的基础路径来区分,需要注意的是这多个项目中只有一个项目可以使用history模式。

以一个admin项目和一个用户端项目为例,可以将用户端项目部署在前端网页托管的根目录下,admin项目部署在`/admin`目录下。通过`https://xxx.com/`访问用户端项目,通过`https://xxx.com/admin/`来访问admin项目

**注意**

- 部署到子目录内的uni-app项目发行前需要将项目下manifest.json内`h5配置-->运行的基础路径`配置为子目录名,例`/admin/`
Q
qiang 已提交
262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329

## 腾讯云计费详细说明

|套餐名		|前端网页部署增值包1|前端网页部署增值包2|前端网页部署增值包3|
|:-:			|:-:								|:-:								|:-:								|
|容量			|5G									|10G								|100G								|
|流量			|5G/月							|50G/月							|500G/月						|
|读次数		|150万次/月					|200万次/月					|1500万次/月				|
|写次数		|60万次/月					|100万次/月					|600万次/月					|
|回源流量	|5G/月							|10G/月							|150G/月						|

<!--
|费用			|9.9元/月						|35元/月						|330元/月						|
-->

**注意**

- 资源统计页面展示的数据可能会有延迟
- 读次数、写次数、回源流量为系统限制,在现有套餐的容量、流量限制下一般不会超出
- 腾讯云前端网页部署套餐到期之后会保留7天,超过7天将会销毁
- 如果服务空间是包月套餐,在服务空间到期但是前端网页托管未到期的情况下,前端网页托管也会随服务空间销毁,请注意给服务空间续费

## 阿里云使用限制

- 前端网页部署限制为最大存储空间用量2GB
- 单文件最大限制为50MB

### 名词解释

**CDN 回源流量**

指开启了 CDN 加速后,CDN 回源存储时产生的流量。

<!--
### 腾讯云费用说明

**新购**

- 新购时某套餐时有效期按自然月计。例:2020年5月28日购买2个月套餐,则套餐有效期至2020年7月28日23时59分59秒

**续费**

- 续费逻辑和新购一样以自然月计。例:当前有效期至2020年7月28日23时59分59秒,续费一个月,则套餐有效期至2020年8月28日23时59分59秒

**升配**

- 升配费用 = 按月升配差价 × 升配天数 / (365 / 12) × 适用折扣
  - 按月升配差价:新老配置原价按月的单价。
  - 升配的费用按天计算:升配天数 = 资源到期时间 - 当前时间。
  - 适用折扣:根据升配天数向下匹配适用折扣。
  - 折扣为现网生效的折扣。
- 升配不影响资源到期时间。

**升配示例**

>以下价格仅作示例用,非官网实际价格,实际单价请以购买时为准。

举例:

2019年11月1日,购买3个月专业版套餐,到期时间为2020年2月1日23时59分59秒,包年包月单价为100元/月。

2019年12月15日,将该套餐升级为1000元/月的企业版套餐。

- 按月升配差价 = 1000 - 100 = 900元/月
- 升配天数 = 31 × 1 + 15 + 1 = 47天(1指1月份为31天,15指12月份剩余15天, 1指2月份1天)
- 适用折扣:暂无折扣
- 升配费用 = (1000 - 100) × 47 /(365 / 12) = 1390.53元
-->