caddy安装与配置
提供web服务的还有Nginx 和Apache,为什么选用Caddy,因为他简单,可以自动申请SSL证书。
下载并安装Caddy
首先去 Download Caddy。在下载页面左侧可以选择你系统平台(PLATFORM)、插件(PLUGINS)、是否开启监控(TELEMETRY)、许可类型(PLAN)。例如我选的是:
- Platform: Linux 64
- Plugins: http.cache, http.cors, http.expires, http.filter, http.git, tls.dns.cloudflare
- TELEMETRY: OFF
- License: Personal
注意:由于 caddy v2 的推出,本文中原先引用的一些官方脚本链接已经失效,所以可能在安装 caddy v1 时无法顺利完成。
不过,caddy v2 的安装和配置变得更加简便。详细步骤查看:caddy v2 的安装与配置
- 完成以上选择后,在页面底部 One-step installer script(bash) 会基于你的选择配置好bash指令。只需要将其复制到bash中执行,即可基于该选择来安装caddy。
以下为我使用的安装指令,你也可以直接使用这条bash命令来安装caddy。
1 | curl https://getcaddy.com | bash -s personal http.cache,http.cors,http.expires,http.filter,http.git,tls.dns.cloudflare |
安装完后输入which caddy
,不出意外的话会输出 /usr/local/bin/caddy
,caddy默认安装的位置。
至此,安装完毕,但是目前它不会开机自启,只是简单地把二进制文件下载下来,所以下一步要将Caddy注册为系统服务。
注册为系统服务
执行以下指令。以拷贝官方提供的脚本文件“caddy.service”,到
/etc/systemd/system/
中1
curl -s https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service -o /etc/systemd/system/caddy.service
这里我使用的是官方在github上提供的脚本 caddy.service,其他系统也可以在这里找到相应的脚本。
创建必要的目录。(根据“caddy.service”文件中的配置信息进行目录的创建)
1
2
3
4
5
6
7
8
9
10
11sudo mkdir /etc/caddy
sudo chown -R root:www-data /etc/caddy
sudo touch /etc/caddy/Caddyfile # caddy的配置文件
sudo mkdir /etc/ssl/caddy
sudo chown -R www-data:root /etc/ssl/caddy
sudo chmod 0770 /etc/ssl/caddy # 证书存放位置
sudo mkdir /var/www # web网站根目录
sudo mkdir /var/www/example.com # 对应域名网站的根目录
sudo chown -R www-data:www-data /var/www上面创建了四个目录:
/etc/caddy
:存放Caddy配置文件的目录;/etc/ssl/caddy
:存放证书的目录;/var/www
:web网站根目录;/var/www/example.com
:根据自己的caddyfile配置中将要使用的域名,创建一个同名的目录。便于管理。
域名认证设置
本文使用cloudflare的dns服务进行域名认证,需要注意的几点:
域名使用cloudfare的DNS服务;
安装caddy时候需要附加安装插件:tls.dns.cloudflare;
在caddy.service文件中设置dns服务商(cloudfare)的环境变量(其他DNS服务商环境配置信息查看官方列表):
1
2
3
4
5
6
7
8
9[Service]
...
...
Environment=CADDYPATH=/etc/ssl/caddy
[email protected] # 添加CLOUDFLARE用户邮箱
Environment=CLOUDFLARE_API_KEY=xxx # 添加CLOUDFLARE的Global API Key。My Profile > API Keys
...
...执行
sudo systemctl daemon-reload
, 以重新加载systemd daemon
,让配置生效。设置Caddy为开机启动
1
sudo systemctl enable caddy.service
至此,Caddy 已经成功注册服务,并能够开机自启了。接下来要对Caddyfile进行配置。
配置 Caddyfile
Caddyfile配置文件示例:
1 | example.com { |
说明:
root /var/www/example.com
:example.com 域名指向的网站根目录;tls { dns cloudflare }
: 使用dns服务商cloudflare 自动进行域名认证;proxy /ray localhost:10000 { ... }
:将特定的路径请求(这里指发送到/ray
的请求),转发到主机本地端口10000
。
根据需要修改域名、网站根目录,以及转发的目标地址和端口号。通过添加多个proxy字段,可以设置多个转发。
Caddyfile配置的详细信息参见官方文档
完成配置后:
- 执行命令:
sudo systemctl restart caddy.service
,以重新启动caddy.service服务。 - 查看运行状态:
systemctl status caddy.service
,如果显示为绿色的active,则caddy服务正常运行。如果为红色则是有错误的配置,根据提示进行修改。 - 查看日志:
journalctl --boot -u caddy.service
服务管理
1 | systemctl enable caddy.service # 开机启动 |
以下部分非必须,根据个人需要设置
启用 QUIC
关于QUIC,一句话概况就是减少TLS握手次数,加快网站速度。
- 修改
/etc/systemd/system/caddy.service
,在ExecStart=/usr/local/bin/caddy -log stdout -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp
后面加上-quic
。如:1
ExecStart=/usr/local/bin/caddy -log stdout -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp -quic
- 重新加载Systemd配置,并重启Caddy。
1
2sudo systemctl daemon-reload
sudo systemctl restart caddy.service
使用cloudflare的CDN服务
在DNS功能项中将对应的域名解析记录中的Status
设置为DNS and HTTP proxy(CDN)
,变更为橘黄色图标则启动CDN。
根据自己的实际需要决定是否启用CDN,国内访问cloudflare速度较慢。