一、背景
公司为了做产品的推广,让前端团队开发了一个静态网站,打算部署到互联网,向外提供访问服务,提高宣传力度。像此类的部署我们原来是直接扔到阿里外网服务器上,然后部署到nginx、tomcat或http-server等具有静态资源发布能力的web容器上在,之后把域名解析到对应外网ip上即可。但是,现在我们手上没有服务器,所以就打算利用阿里云oss的静态资源托管模式,来访问资源。
二、操作
2.1 oss内bucket创建并设置
1、首先登陆阿里云控制台,找到oss服务,创建一个bucket,默认选择“标准存储”。
2、进入当前bucket里的文件管理,上传静态资源文件,注意一定要把网站的入口(例如:index.html)文件放到当前根目录下
3、进入“基本设置”内的“静态页面”设置,设置“默认首页”为上述网站入口文件-index.html,同时也可以设置默认的404页面,如果你已经开发了404页面的话。
4、此时bucket就配置好了,虽然此时bucket提供了外网的域名(http://bucketName.oss-cn-beijing.aliyuncs.com),但是,是无法通过此域名进行资源访问。
2.2 域名解析并访问
1、要解析域名需要先在阿里云采购一个一级域名,并且根据管局规定,如果要使用此域名需要对域名进行备案。
现在阿里官方备案审核需要15天,备案时还需要当前阿里云账号下有一台最少购买了3个月的ecs服务器进行配合。
如果没有,好像可以用其他账号下的ecs服务器,生成一个备案服务号,然后在当前账号填写,这个曾经试过,但是流程没有走完,就手动终止了,不知道有没有坑,感觉问题不大。
2、备案通过之后,域名就可以使用了。此时根据公司需要把固定域名cname到上述bucket域名上。(例如:website.companyName.com -> cname -> bucketName.oss-cn-beijing.aliyuncs.com )
3、打开浏览器访问http://website.companyName.com地址,你可能会发现页面会显示403 Forbidden。这是由于oss上的资源默认是私有的,如果要访问,要么加上签名访问,要么就把资源权限修改成“公共读”。
2.3 快速配置域名解析
如果不想像上面那样手动解析域名,这里有快速办法。
1、点击当前bucket里“传输管理”下的“域名管理”,可在此处直接添加要绑定的公司域名,然后打开“自动添加cname记录开关”,然后等待一会,如果是新增一个新的解析记录的话,一般都很快。
解析结果可以点击列表右侧的“域名绑定配置”按钮进行查看,本地则使用ping命令进行确认。
2.4 安全
1、域名解析成功后,就可以使用公司的域名访问了。但是,你会发现只能使用http协议进行访问,这对于访问你网站的用户来说,浏览器提示此网站不安全,是不是心里总会有个疙瘩。所以绑定证书还是很有必要的。
此时你有3个选择,1、阿里上花钱买一个有CA公司认证的证书;2、使用阿里提供的免费证书;3、自己做自签证书;如果有钱,可以买个通配符证书,毕竟申请一个一级域名可以对公司大大小小的网站进行解析,证书都可以用来使用。如果没钱就使用阿里提供的免费证书,但是只能对一个具体的域名进行签名,并且一年只能申请20个,上一年还没有这个限制呢。
2、有了证书之后,要在“传输管理”下的“域名管理”列表里的“证书托管”里填写证书的信息。这里得吐槽一下,按理说我已经买了阿里的证书,它应该像给cdn还有全站加速配置证书一样,在线选择证书就行了。但是这里还是得手动的填写公私钥,不太理想。
到目前为止,你已经有一个看起来不错的公司运营网站了。
2.5 cdn加速
网站跑起来了,但是有些偏远地区反应访问网站会比较慢(其实静态资源还好,只要没有大的文件,类似于宣传视频啥的,加载应该问题不大)。
针对这个问题,可以在域名与oss之间增加一个cdn,使用边缘节点来缓存较大的文件,提高区域加载速度。访问链为:域名 解析到 cdn,cdn回源到oss。配置如下:
1、切换到cdn服务,在域名管理列表内“添加域名”,然后输入加速的域名(就是之前使用的域名),然后选择源站信息为oss域名,再选择之前的bucket域名(http://bucketName.oss-cn-beijing.aliyuncs.com),端口用80,业务类型、加速区域根据实际业务来定。
2、根据提示,手动将要加速的域名cname到cdn指定的域名上,例如:website.companyName.com cname 到 website.companyName.com.w.kunlunca.com上,然后等待生效。
3、因为现在用户第一命中是cdn,所以要把之前配置的证书迁移到cdn上来。如果你也是直接在线采购的阿里证书,点击这里的“配置”可直接线上选,不用手动输入了。
4、此时,你就可以分别使用http及https访问公司运营网站了。
注意:
1、cdn一般会带来缓存问题,如果不想每次更新了东西,手动点击上图中的“刷新预热”来更新缓存的话。则可以在oss对应的bucket内的“传输管理”下的“域名管理”,打开“cdn缓存自动刷新”开关。
2、阿里云不支持使用一个新域名cname到有回源的cdn的域名上,例:cdn里的域名A回源ossA,能够访问ossA上的静态页面服务。此时想增加一个域名B也能实现访问ossA上的资源,在不重新创建一个cdn记录的前提下,能否通过域名B cname到域名A来实现,或者通过域名B cname 到域名域名http://A.kunlun.can.com上解决?
官方回答:不可以通过其他域名CNAME到已存在域名的CNAME使用,即不支持B域名CNAME到A域名的CNAME值使用。域名和CNAME是一一对应的关系,如有需求只能通过新增域名的方式使用。
3、能否解决上述问题呢?在dns解析时,我尝试使用显性url及隐性url将域名B的请求转发到域名A上,经测试,能实现上述功能。但是就只能使用http访问了,证书不生效。