为 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 所在目录:
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.conf
和 www.ghostart.blog.conf
使用 vim 或者 nano 编辑(二选一):
vim www.ghostart.blog-ssl.conf
或者:
nano www.ghostart.blog-ssl.conf
找到 location /
块,修改之前的内容是这样的:

删除 location /
块中的原有内容,替换为:
return 301 https://ghostart.blog$request_uri;
修改之后内容变成这样:

保存并退出(如果你用 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
当看到如下提示代表修改成功:

此时再次访问 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 博客域名。