跳转至主要内容

Ghost 进阶

为 Ghost 博客 www 二级域名申请证书并重定向到主域名

进行 Ghost 博客安装时,只会为你在初次设置时输入的域名申请证书,比如你在安装 Ghost 时填写的是不带 www 的主域名,那么安装完成之后,只能通过主域名访问你的 Ghost 博客,通过 www 二级域名是不能访问的。

要解决这个问题需要为 www 二级域名申请证书并设置重定向到主域名。

解决之后的效果你可以在当前页面域名前添加 www. 访问测试一下。

查看现有 Nginx 配置

ls /etc/nginx/sites-available/

此时返回的结果除了 default 文件之外,只有主域名的配置文件。例如:

default  ghostart.blog-ssl.conf  ghostart.blog.conf

申请证书

可以通过 Ghost CLI 快速为 www 二级域名申请 SSL 证书。口诀是:先 config,再 setup,最后 restart。后续指令中的示例域名 ghostart.blog 请自行替换成你的域名再执行。

  • 首先切换到 Ghost 用户并进入到 Ghost 所在目录:
💡
如果你是通过本博客中的 Ghost 一键脚本安装 的则指令如下,否则请自行替换用户名
sudo -i -u ghost-art
cd /var/www/ghost
  • 将博客域名设置为 www 二级域名,例如:
ghost config url https://www.ghostart.blog
  • 申请 SSL 证书:
ghost setup nginx ssl
  • 重启 Ghost
ghost restart

此时已经可以通过 www 二级域名访问博客了,主域名也同样能够访问博客,但是两个域名分别代表了两个链接,需要通过 Nginx 设置重定向。

设置重定向

由于在上一步中为 www 二级域名申请了证书,所以现在执行:

cd /etc/nginx/sites-available/ && ls

会看到两个域名对应的 Nginx 配置文件。假设你看到的结果如下:

default  ghostart.blog-ssl.conf  ghostart.blog.conf  www.ghostart.blog-ssl.conf  www.ghostart.blog.conf

那么就应该编辑 www.ghostart.blog-ssl.confwww.ghostart.blog.conf

使用 vim 或者 nano 编辑(二选一):

vim www.ghostart.blog-ssl.conf

或者:

nano www.ghostart.blog-ssl.conf

找到 location / 块,修改之前的内容是这样的:

default nginx location block

删除 location / 块中的原有内容,替换为:

return 301 https://ghostart.blog$request_uri;

修改之后内容变成这样:

location block modified

保存并退出(如果你用 nano 修改的话,按 Ctrl + X,输入 Y 再回车)。

同理,对另一个不带 -ssl 的二级域名配置文件做同样的修改:

vim www.ghostart.blog.conf

或者:

nano www.ghostart.blog.conf

替换 location / 块中的内容为:

return 301 https://ghostart.blog$request_uri;

修改完成之后,检测 Nginx 配置文件并重载:

sudo nginx -t && sudo systemctl reload nginx

当看到如下提示代表修改成功:

test nginx and reload

此时再次访问 www 二级域名,会发现被自动重定向到不带 www 的主域名。不仅是首页,博客页面也如此,即使手动添加 www 也会重定向到主域名。至此完成修改。

不过使用 cat config.production.json 查看会发现 url 仍然是配置成了带 www 的二级域名,鼠标悬浮在你的博客 LOGO 以及默认的 Home 菜单上,发现都是链接到 www 二级域名。

所以我们需要重新配置一次 URL 为不带 www 的主域名并重启 Ghost:

ghost config url https://ghostart.blog && ghost restart

这样才算是彻底修改完成。

注意:本文中所有示例的 ghostart.blog 请替换成你自己的 Ghost 博客域名。