来源:NanCheung`s Blog
链接:https://blog.nancheung.com
/archives/984096
商业转载请联系作者获得授权,非商业转载请注明出处。
我一直觉得作为一个自用的微型vps,没必要使用nginx这种复杂的web服务端。我以前一直使用goflyway,它是一个使用Golang编写的自带反代理功能的隧道HTTP隧道代理工具。但是goflyway的反代理功能太弱了。这次我替换了一个更好的工具——Caddy。
什么是caddy
Caddy服务器是一个开源的,使用 Golang 编写,支持 HTTP/2 的 Web 服务端。它使用Golang 标准库提供HTTP 功能。 Caddy 一个显著的特性是默认启用HTTPS。它是第一个无需额外配置即可提供HTTPS 特性的Web 服务器。
简单的说,caddy是一个配置简单、默认支持https特性的web服务端。
注意
本文所有指令前都加上了sudo,如果你是root用户,可以省去sudo。
如何安装Caddy
一、使用官方一键脚本安装
curl https://getcaddy.com | bash -s personal
安装完毕后,执行 which caddy
可以看到,caddy已经被安装到了 /usr/local/bin/caddy
中。
二、配置caddy
-
创建配置文件放到 /etc/caddy 目录
Caddy 的配置文件叫做 Caddyfile,我们一般放在
/etc/caddy
下sudo mkdir /etc/caddy sudo touch /etc/caddy/Caddyfile sudo chown -R root:www-data /etc/caddy
-
配置ssl证书目录
caddy 会自动生成 ssl 证书,需要一个文件夹放置 ssl 证书
sudo mkdir /etc/ssl/caddy sudo chown -R www-data:root /etc/ssl/caddy sudo chmod 0770 /etc/ssl/caddy
-
配置 systemd
将caddy使用systemd配置成为一个服务,方便管理,并且开机自启动。Caddy配置systemd的官方文档
sudo curl -s https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service -o /etc/systemd/system/caddy.service sudo systemctl daemon-reload sudo systemctl enable caddy.service sudo systemctl status caddy.service
以上四条命令的意义依次分别是:
- 从 github 下载 systemd 配置文件放到systemd的启动文件目录下
- 重新加载 systemd 配置
- 设置 caddy 服务自启动
- 查看 caddy 状态
三、配置
此处只以本站的配置为例,更高阶更详细的配置应该看看 Caddy文档
-
编辑Caddyfile
打开Caddyfile文件,上文配置的路径是:
/etc/caddy/Caddyfile
-
加入反代理配置
#第一行一定是你的访问地址 blog.nancheung.com { gzip #此处配置一个任意邮箱,caddy会自动帮你申请免费ssl证书 tls [email protected] #这里是配置你需要转发到哪里 proxy / localhost:8888 { transparent } }
上例是一个简单的代理服务配置。第一行为自己的域名,tls后面加上邮箱会自动申请let’sencrypt ssl证书。
-
重启caddy使配置生效
sudo systemctl restart caddy.service
四、管理caddy的指令
-
启动caddy
sudo systemctl start caddy.service
-
停止caddy
sudo systemctl stop caddy.service
-
重启caddy
sudo systemctl restart caddy.service
相关资料
官网:https://caddyserver.com/
GitHub:https://github.com/mholt/caddy
Caddy中文文档:https://dengxiaolong.com/caddy/zh/