阿毛
It's me !
想你所想

GithubPage的使用

如果您没有一台国内主机,或没有大陆备案,您可以考虑将您的静态资源放置在GithubPage中。。

GithubPage-Github提供的一种静态资源服务,0部署成本,基本无配置,实现快速静态资源访问。

1、建立一个仓库,名为“你的github用户名”.github.io。如下

https://file.blog.humh.cn/2020/05/图片-23.png

2、你可以选择初始化一个主题摸板,相当于初始化一个index.html

https://file.blog.humh.cn/2020/05/图片-24.png

如果已有资源,直接上传仓库即可,如下图

https://file.blog.humh.cn/2020/05/图片-22-1024x792.png

仓库的内容均是我的静态资源。直接浏览器键入Jump-Boy.github.io即可访问,默认访问index.html。支持http和https。你可以理解成和nginx的效果差不多。

3、配置自定义域名。
一般我们并不想实际应用中,通过 Jump-Boy.github.io 这个域名去访问,而是想通过自己的域名去访问,比如我有个域名humh.cn。需求效果,直接访问humh.cn实际得到的内容是 Jump-Boy.github.io 的结果。

如果走http访问的话,你仅需要在DNS服务商那里,配置humh.cn cname 至 Jump-Boy.github.io 即可。如下图

https://file.blog.humh.cn/2020/05/图片-26-1024x109.png

那么浏览器访问http://humh.cn时,DNS会将 Jump-Boy.github.io 的IP返回给浏览器,这样浏览器就会访问这个IP,获得你GithubPage上的静态资源。

但如果走https的话,仅做上面的配置, 就会有问题,访问得如下错误

https://file.blog.humh.cn/2020/05/图片-27.png

这是因为,浏览器访问https://humh.cn时,实际去访问了DNS解析 Jump-Boy.github.io 的IP,githubpage返回的证书内容是github的证书,而不是humh.cn这个域名的证书,我们知道ssl证书是和域名对应的,不是和ip。所以当浏览器去校验,加密请求数据时,显然无法拿github的证书加密来自humh.cn的数据,毕竟浏览器可不知道你访问的是github的域名。

要解决这个问题,提供两种解决办法。

(1)通过反代去实现,如我们可以通过nginx代理 https://Jump-Boy.github.io ,DNS配置humh.cn A记录至nginx的主机IP,然后nginx上配置访问https://humh.cn 301到 https://Jump-Boy.github.io (humh.cn的https还是走的nginx的ssl模块,humh.cn自己申请的域名证书在nginx主机上),那么当浏览器访问 https://humh.cn 时,会发现浏览器url上变为 https://Jump-Boy.github.io ,当访问githubpage,返回的github ssl证书显然可以和github.io的域名对应,成功获得静态资源,避免了上面浏览器域名与ssl证书不匹配的问题。

(2)如果我们有办法让github.io的服务器上拥有humh.cn域名的证书,通过原先humh.cn 解析github.io的IP方式访问,github.io返回humh.cn的证书,不就可以解决域名证书不匹配的问题。

GithubPage现支持https自定义域名,并且就是通过这种思路实现的。

https://file.blog.humh.cn/2020/05/图片-28.png

当我们首次配置“Custom domain”后,第一时间“Enforce https”选项是没办法勾选的,需要等待最大24小时以后才可勾选,这是因为Github在帮我们申请你自定义域名的对应证书,并将证书放置在GithubPage服务器上。当Github帮我们处理完成,方可勾选。勾选完成,同时保证我们DNS服务商上,自定义域名(humh.cn)cname的 Jump-Boy.github.io 即可。这样就可以完成自定义域名https的访问。注意:因为GithubPage 只允许配置一个自定义域名,所以针对www这样常用的二级子域名,我们可以DNS上cname 至 其一级主域名即可。

通过f12,不难发现,github为自定义域名(humh.cn)申请一个免费且3个月有效期的tls证书,这个证书会自动续期。

https://file.blog.humh.cn/2020/05/图片-29.png

当然,如果你此时再尝试浏览器https://Jump-Boy.github.io访问时,会发现会被301到自定义域名之上,这也是GithubPage “Custom domain” 的另一个作用,反向301。

这里因为我使用GithubPage就是希望迁出我的主页流量,虽然没有多少。。。(抱头痛哭ing),那么我再使用第一种方式,自己代理nginx岂不搞我自己。。


总结一下发现的内容:
1、一个域名(不考虑子域名)是可以拥有多个证书;
2、DNS解析记录类型中的“url转换”和“cname”的区别在于,url转换不管显示还是隐式,他都是将域名内容,固定解析到某个url下,如我配置humh.cn url转换至“ a.com ”下,则访问“ humh.cn ” 会跳转至 “ a.com” ,访问“humh.cn/about” 还是跳转 “ a.com ” 。但cname的话,就是 “ humh.cn ” 实质 “ a.com”(不是跳转行为,而是直接解析a.com ip行为), “humh.cn/about” 实质“ a.com/about” ;


也分享下,与开源大佬的求学日常。

https://file.blog.humh.cn/2020/05/日常沟通-1024x927.png

我手绘的图。。。有些抽象了。。。字也奇丑无比,我很不赞同“字如其人” :cry:  :cry: 。一开始我确实没想到github会给自定义域名申请证书,还是从f12请求摸索出来的。。

https://file.blog.humh.cn/2020/05/图片-30.png
https://file.blog.humh.cn/2020/05/图片-31-1024x523.png

humh

文章作者

站长本人,一个憨批!

发表回复

textsms
account_circle
email

想你所想

GithubPage的使用
如果您没有一台国内主机,或没有大陆备案,您可以考虑将您的静态资源放置在GithubPage中。。 GithubPage-Github提供的一种静态资源服务,0部署成本,基本无配置,实现快速静态资源访问…
扫描二维码继续阅读
2020-05-23