使用Caddy反向代理本地域名

由于网络限制,我们升级了脚本 diary.sh,使其能够在无法访问 GitHub 的电脑上本地托管博客,这样在办公环境中可以使用高度定制化的博客系统,从而提高工作效率和规范性。尽管通过 Python3 实现的博客可以在本地域名 127.0.0:4000http://localhost:4000 上运行,但在浏览器地址栏中看起来不够美观,并且需要在 Firefox 中手动设置代理为 http://localhost:4000。为此,本节介绍了一项锦上添花的技术:使用 Caddy 反向代理并生成自签名证书,这样当访问 https://fungzhenhua.github.io 时,实际上是在访问 http://localhost:4000 的内容。

配置Caddy

安装Caddy

Install Caddy
1
sudo pacman -S caddy

配置Caddy, 使用自签名证书

/etc/caddy/conf.d/fungzhenhua.conf
1
2
3
4
fungzhenhua.github.io {
tls internal
reverse_proxy localhost:4000
}

测试配置是否正确

1
sudo caddy validate --config /etc/caddy/Caddyfile

如果看到Valid configuration字样,说明配置正确,字样通常在最后一行。

启动Caddy

启动Caddy
1
2
sudo systemctl enable caddy
sudo systemctl start caddy

重启Caddy

重启Caddy
1
sudo systemctl restart caddy

Firefox导入证书

在完成上述Caddy设置后,发现每次打开Firefox后总是有风险提示,为了应对这个麻烦需要使用Firefox导入由Caddy生成的证书。由于使用tls internal方式,则Caddy默认生成的证书存放于/var/lib/caddy/pki/authorities/local/root.crt, 访问它需要root权限,于是解决方案是将其复制到家目录,然后赋于读写权限,再导入到Firefox证书分布机构则问题可解决。

具体操作

1
2
3
4
# 复制到当前目录
sudo cp /var/lib/caddy/pki/authorities/local/root.crt ~/caddy-root.crt
# 修改权限
sudo chown $USER:$USER ~/caddy-root.crt

如果是其他的Linux发行版,则需确认具体root.crt的路径。

在Firefox中导入

  • 打开about:preferences#privacy
  • 点击查看证书...
  • 切换到证书颁发机构标签页(注意:不是您的证书标签页)
  • 点击导入
  • 选择~/caddy-root.crt
  • 勾选三个信任 → 确定