免费在 HTTPS 上运行您的域

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

我的博客在 HTTP 上运行了很长时间,因为没有发生任何事务,所以不需要安全性(我使用 SFTP 进行文件传输)。然而,自从谷歌最新的搜索算法发生变化后,我注意到每月访问量急剧下降,从 20k 多下降到 13k 左右。

虽然我的目标从来都不是获得最多的访问量,但这对我来说仍然是很好的反馈(以及一种温暖的感觉)。打开 HTTPS 似乎没什么大不了的,我想“为什么不呢?”并询问了我的托管服务提供商。答案是我必须同时购买固定IP和通过他们获得的Rapid SSL证书。由于前者是他们基础设施的限制,而后者只是一个以可观利润出售的域验证证书,我认为我可以没有。但首先,我想尝试一个更简单的网站。好消息是我已经有了这样一个网站, morevaadin.com

morevaadin.com 是一个使用 Jekyll 离线生成并以 Jekyll Bootstrap 为主题的静态网站。这种离线过程的优点是可以非常快速地向用户提供站点并且安全风险非常低(没有 SQL 注入等)。

在同事之间进行快速投票后,我发现 Github 最适合我的用例。 Github 提供 Github Pages :基本上,你将 Markdown 文档推送到 Github 上,它不仅会为你生成相应的 HTML,而且还会在线提供。我以前的发布过程是在我的笔记本电脑上使用 Jekyll 生成页面并通过 SFTP 上传它们,但是 Github 页面为我做了这些,我只需要推送 Jekyll 风格的 Markdown 页面。此外,Github 可在开箱即用的 HTTPS 上使用。

Github Pages 提供两种站点:用户/组织站点和项目站点。有一些不同之处,但我选择创建 morevaadin Github 组织来整齐地组织我的存储库。这意味着我在名为 morevaadin.github.io 的存储库的 master 分支上推送的所有内容最终都会暴露在 https://morevaadin.github.io 域中,HTTPS 锦上添花(这也是我开始整个东西)。

然而,我还没有完成,因为剩下的问题是在此之上设置我自己的域。第一步是选择一个可以将流量定向到 Github 的提供商,同时以低成本提供 SSL 证书:我发现 Cloudflare 可以做到这一点……0 美元。由于我不了解这项业务,起初我有点担心,但看来我不是第一个非付费客户,到目前为止我很高兴。注册后,您必须将您的域指向他们的名称服务器: art.ns.cloudflare.com val.ns.cloudflare.com

第二步通过添加 DNS 记录来处理路由,这取决于您的自定义域。如果您使用的是顶级域( morevaadin.com),那么您必须添加两条以您的域命名的 A 记录,指向 Github 页面的 Github IP,192.30.252.153 和 192.30.252.154。如果您使用的是子域( www.morevaadin.com),那么您必须添加一个名为您的子域的 CNAME 记录,该记录指向您的 Github 页面( morevaadin.github.io)。

下一步是启用 HTTPS:在你的 DNS 记录前面,点击云让他变成橙色。这意味着 Cloudflare 将处理该请求。相反,灰色的云意味着 Cloudflare 只会进行路由。在 Crypto 选项卡上,通过选择 Flexible 启用 SSL(带 Speedy) 。 Cloudflare 就是这样。

现在你必须告诉 Github 页面它将为另一个域提供它的内容。在项目的根目录下,创建一个名为 CNAME 的文件,其中包含您的自定义域(但没有协议)。检查这个 例子 。您还必须告诉 Jekyll 将使用哪个域,以便生成绝对链接。这是通过在 _config.yml 中将 BASE_PATH 设置为您的 URL(这次使用协议)来实现的。检查 我做了什么

作为额外的奖励,我添加了以下内容:

  • 强制 HTTPS 流量(将所有内容重定向到 HTTPS)
  • 缩小 JavaScript、CSS 和 HTML

这应该结束您的免费 HTTPS 之旅。基本上,它只是归结为让 Cloudflare 作为用户和您的站点之间的代理来添加他的神奇 SSL 。请注意,如果您对安全性感兴趣,它并不能解决所有问题,因为 Cloudflare 和您的内容之间的路径在此架构中不受保护。

现在我知道了诀窍,我有几个可用的选择:

  • 只需保留我当前的托管服务提供商并将 Cloudflare 放在前面
  • 选择另一个提供商并将 Cloudflare 放在前面。除了 wordpress.com,你们中有人知道一个体面且便宜的 WordPress 提供商吗?
  • 接受我目前提供者的提议
  • 从 WordPress 迁移到 Jekyll 并将 Cloudflare 放在前面

这周我会考虑这些……