利用Github Pages实现“服务CNAME”功能
“服务CNAME”需求背景
名词解释 CNAME解析:当一个 DNS 解析服务器在查询某域名遇到 CNAME 记录时,它会重启查询,查询并返回 CNAME 目的域名对应的 IP。
当有域名自动跳转(CNAME)到某一个指定 WEB 服务网站(单域名)的需求时,一般是在域名注册商那里添加 CNAME 解析就可以了,但是如果目标站点与多个其他站点服务部署在同一台服务器上,且站点服务是以域名区分(根据不同域名区分不同服务,但公用同一个IP和端口)的情况时,由于 CNAME 解析主要的作用只是映射出 CNAME 的目标域名的 IP 地址,本身不会做域名路由跳转,这样的话就不能正常跳转到指定域名的网站页面了,常见做法是给原域名搭建一个WEB网站服务,然后再通过这个WEB服务专门去做重定向跳转,但是仅仅为了一个页面跳转的功能就再搭建一个web服务的话,就有点太浪费成本了,有没有比较简便的方式呢?实际上我们可以利用免费的Github Pages服务来实现这个需求。
解决思路和方法步骤
名词解释 GitHub Pages:是GitHub提供的一个网页寄存服务,可以用于存放静态网页,包括博客、项目文档或者书籍等。同时也提供免费的自定义域名功能。
我们可以利用Github Pages做一个静态页面,使用Github自定义项目域名的功能给项目绑定域名(原域名),再在项目的静态页面中使用代码跳转方式到新域名的站点,这样就完美的实现了“服务CNAME“的跳转需求,具体做法如下:
1.在Github上新建一个项目仓库,然后在仓库里添加一个简单的名为 index.html 的静态网页文件。
2.根据Github的自定义项目域名的说明文档配置访问解析,配置自定义域名详见官方文档 Configuring a custom domain for your GitHub Pages site - GitHub Docs .
3.编辑修改 index.html,可以使用HTML meta
标签重定向和JavaScript
脚本跳转两种方式(双保险),例如我想在访问 http://example.com(原域名)
时重定向访问http://example2.com(跳转域名)
的服务,则可以在 index.html 中修改添加如下代码:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!--使用html meta标签重定向-->
<meta http-equiv="refresh" content="0; url=http://example2.com"/>
...
<script type="text/javascript">
window.location.href = "http://example2.com" //使用js跳转
</script>
</head>
...
待配置的 Git 仓库自定义域名解析生效后,借用这个机制就可以实现免费的网站服务的重定向了。
总结
本文通过利用免费的Github pages实现了一个简单的WEB页面跳转(站点服务是以域名区分情况下)功能,原理虽简单,但省去了专门配置额外站点的成本,并且利用了Github托管的可用性和安全性优势,也不妨是一个便捷的解决方法。
参考材料
- VUE 入门基础(1)
- AndroidManifest.xml配置文件 android.theme大全权限设置Android Permission中英对照
- Reactive框架:简化异步及事件驱动编程
- 微信跳一跳小游戏外挂分析
- 承载WCF 数据服务
- 常用正则表达式
- StreamInsight 基本概念
- git 常用命令
- Windows系统性能分析
- 在Android中调用WebService
- SQL:数据与运算的融合体
- Windows Server AppFabric Caching支持大数据量的配置
- Python函数之匿名函数
- 配置Windows 2008 R2 防火墙允许远程访问SQL Server 2008 R2
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Golang领域模型开篇,当Go遇上DDD
- Spring事务专题(五)聊聊Spring事务到底是如何实现的
- 深色模式适配指南
- 【Flutter 专题】97 仿网易新闻标签选择器
- 宋宝华:论Linux的页迁移(Page Migration)完整版
- 三、玩转Git三剑客-Git与Github的简单同步
- 四、玩转Git三剑客-Git多人单分支集成协作时的常见场景
- 准时下班的秘密:集成 GitLab && JIRA 实现自动化 workflow
- ZLT-MP v4.1.0 发布
- 高并发系统三大利器之限流
- XtraBackup工具详解 Part 2 xtrabackup安装
- XtraBackup工具详解 Part 4 XtraBackup权限及配置
- XtraBackup工具详解 Part 5 使用innobackupex对数据库进行全备
- XtraBackup工具详解 Part 6 使用innobackupex对全备进行恢复
- [修正]XtraBackup工具详解 Part 6 使用innobackupex对全备进行恢复