在 SpringBoot 项目中使用 Caddy

Caddy 是一个用 go 语言写的代理服务,类似 Nginx 但是从配置文件来说比 NGX 要方便不少,并且自带 https 的支持以及到期自动续期。
话不多说用 SpringBoot 的项目来举个如何部署项目的例子。

  • 上 Caddy 的官网 下载 编译好的二进制文件,注意选择部署的机器。
    想自己编译的话也可以从 Github 把代码下回来自己编译。
  • 下载回来的文件「caddy」放到服务器上,然后设置该文件权限为「744」chmod 744 ./caddy。运行 ./caddy help 确认该文件可执行。
  • 在「caddy」的同目录下生成配置文件「Caddyfile」(该配置文件所在目录可按需求修改,为了方便部署这次是在同目录下生成)。
    文件内容根据下面给出的注释进行修改。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    {
    # 全局配置,关闭 admin endpoint
    admin off
    }
    # 需要部署的端口号,支持域名。不需要用默认的HTTPS的证书的话需要单独配置HTTPS证书
    :8300 {
    # 前端编译后代码所在目录,这里 SpringBoot 使用的是前后端分离的方式
    root * /home/www-user/opt/springboot-vue-dist
    # 代理前端所有「/api」的请求
    handle_path /api/* {
    # 「apicontext」是 SpringBoot 项目的 context-path
    rewrite * /apicontext/{path}
    # 需要代理到的IP以及端口号
    reverse_proxy http://localhost:8080
    }
    # 开启压缩
    encode gzip
    # 固定写法(??)
    file_server
    }
  • 运行 ./caddy adapt --config ./Caddyfile 查看配置文件是否有问题。
  • 运行 ./caddy start --config ./Caddyfile 让其在后台运行。
  • 其他命令请参照官方文档

EOL