Netfliy专门提供静态网站托管服务。所谓静态网站,就是指只包含前端资源(HTML/CSS/Javascript)的网站,不包含后端处理逻辑,不需要与用户交互。很多展示类的网站,包括个人博客,适合作为静态网站托管在Netlify。

你所看到的这个个人博客,是基于Hugo生成的一个静态网站,托管在Netlify最好不过了。Netlify不仅免费提供空间,还提供一系列配套服务,比如SSL加密、自动构建、支持私有仓库等等。新功能还在不断增加中,可以关注Netlify Pricing页面的说明。

在Netlify上托管Hugo其实非常简单,Hugo的官方文档“Host on Netlify”也非常详细,这篇文字主要是记录一些需要额外关注的方面。

选择合适的Hugo的版本

Netlify自带的Hugo版本过低(可参考Netlify Plus Hugo 0.20 and Beyond),对于很多Hugo主题来说在构建的时候都会出现错误,导致失败。最好是自己指定Hugo的版本,方法是在Hugo源代码的根目录添加一个netlify.toml文件,内容如下:

[context.deploy-preview.environment]
  HUGO_VERSION = "0.31.1"

[context.production.environment]
  HUGO_VERSION = "0.31.1"

Netlify的构建环境提供两种context,一种是deploy-preview,主要用于测试;另外一种是production,用于实际部署。这边我把两个选项都设置成了最新的Hugo版本(目前是0.31.1)。

自定义域名相关的配置

Netlify在自定义域名相关的配置方面做的很贴心,不仅可以自动配置SSL,甚至还可以提供DNS服务。因为我的域名是博客专用的,索性就直接把DNS服务器改成Netlify的了:

dns1.p01.nsone.net
dns2.p01.nsone.net
dns3.p01.nsone.net
dns4.p01.nsone.net

值得注意的是,更改DNS服务可能要过好长时间(比如24小时)才能生效。

Gitlab私有仓库

目前提供Git仓库托管服务的有三大户,大哥Github以及两小弟Bitbucket和Gitlab。大哥的话是不提供免费的私有仓库的,所有在Github上的免费仓库必须是开源的;老二Bitbucket虽然提供私有仓库,但给我的印象好像一直不太上进,UI略显老气(最近有改进),然后在国内访问速度也不甚快;老三是个活跃分子,不仅一同私有仓库,甚至连自己的代码都是开源的。所以呢,我就把Hugo网站的源代码,从大哥Github移到老三Gitlab了。

有人可能会问Gitlab的Pages服务也能提供静态网站托管,为啥不用?主要的原因嘛,是Gitlab Pages不能自动化配置SSL,需要手动上传证书,显得麻烦,没有Netlify专业。

其他参考链接:

(完)

2020-05-25更新

NetlifyDNS支持主辅域名,查看Sites with multiple domains

通过Redirects and rewrites,可以支持域名重定向。参考 Domain-level redirects,例子:

# http and https need separate rules if you don't force_ssl!
http://blog.yoursite.com/* https://www.yoursite.com/blog/:splat 301!
https://blog.yoursite.com/* https://www.yoursite.com/blog/:splat 301!


# other URLS might proxy or redirect offsite
https://frontend.yoursite.com/login/* https://backend.yoursite.com/:splat 20

上面的内容需要放置在_redirects 文件中,作用有点类似Apache HTTP Server的.htaccess。

行结尾的!代表全替换,参考Shadowing

How to forward a Netlify domain to my other Netlify domain?提到的更简单的办法:

https://yourdomain.com https://yourotherdomain.com 301!

(更新完)