= caddy
== 介绍
Caddy是一款基于Go语言编写的强大且可扩展的平台，可以给你的站点、服务和应用程序提供服务。

大多数人将Caddy用作Web服务器或代理，但Caddy的本质是诸多服务器的服务器。在安装了必要的模块后，它就可以充当长时间运行的进程的角色！

基于Caddy的API，它的配置能被动态修改，且能导出来。虽然不需要配置文件，但你仍然可以使用它们；大多数人还是最喜欢通过Caddyfile对Caddy进行配置。虽然通过配置适配器可以对Caddy使用多种的配置文件格式，但它的原生配置语言是JSON。

Caddy已经编译好了所有主流平台的版本，且没有运行时依赖项。

== 安装
[source,bash]
----
brew install caddy            # 安装 caddy
caddy version                 # 查看 caddy 版本
----

== 修改服务配置文件
该文件用于在执行 brew services/sudo brew services 命令时作为模版文件复制到相关自动执行目录中（仅适用于 mac OS）:
[source,bash]
----
# 当前用户登录时自动执行
# 将 /opt/homebrew/opt/caddy/homebrew.mxcl.caddy.plist 复制到 ~/Library/LaunchAgents/homebrew.mxcl.caddy.plist
brew services start caddy

# 系统启动后自动执行
# 将 /opt/homebrew/opt/caddy/homebrew.mxcl.caddy.plist 复制到 /Library/LaunchDaemons/homebrew.mxcl.caddy.plist
sudo brew services start caddy
----

[source,bash]
----
vi /opt/homebrew/opt/caddy/homebrew.mxcl.caddy.plist

# 修改以下部分的内容
----

[source,xml]
----
    <key>ProgramArguments</key>
    <array>
        <string>/opt/homebrew/opt/caddy/bin/caddy</string>
        <string>run</string>
        <string>--config</string>
        <string>/opt/homebrew/etc/Caddyfile</string>    <1>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StandardErrorPath</key>
    <string>/opt/homebrew/var/log/caddy.log</string>    <2>
    <key>StandardOutPath</key>
    <string>/opt/homebrew/var/log/caddy.log</string>    <3>
----
<1> Caddyfile 配置文件路径
<2> caddy 错误日志输出文件路径
<3> caddy 日志输出文件路径

修改后的内容如下:
[source,xml]
----
    <key>ProgramArguments</key>
    <array>
        <string>/opt/homebrew/opt/caddy/bin/caddy</string>
        <string>run</string>
        <string>--config</string>
        <string>/Users/wangshaoping/wspsc/software/homebrew/caddy/Caddyfile</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StandardErrorPath</key>
    <string>/Users/wangshaoping/wspsc/software/homebrew/caddy/log/caddy.log</string>
    <key>StandardOutPath</key>
    <string>/Users/wangshaoping/wspsc/software/homebrew/caddy/log/caddy.log</string>
----

== 修改 Caddyfile 配置文件
[source,bash]
----
# 通过上述 homebrew.mxcl.caddy.plist 文件中配置的 --config 指定的 Caddyfile 配置文件路径，修改 Caddyfile 配置文件
vi /Users/wangshaoping/wspsc/software/homebrew/caddy/Caddyfile
----

修改后的内容如下:
[source,bash]
----
# 网站服务
:80 {
	root * /Users/wangshaoping/wspsc/software/webserver/www
	file_server browse
}

# jrebel 激活反向代理服务
# 通过访问 localhost:8888 就相当于访问 idea.lanyus.com 网站（该网站可以用于破解 jrebel 和 idea）
:8888 {
  reverse_proxy idea.lanyus.com {
     header_up Host {upstream_hostport}
  }
}
----

== 启动、停止服务
[source,bash]
----
brew services start   caddy       # 启动 caddy 服务
brew services stop    caddy       # 停止 caddy 服务
brew services restart caddy       # 重启 caddy 服务
----