什么是Caddy
Caddy是易于配置和使用的Apache Web服务器的替代产品。Caddy的项目负责人Matthew Holt声称Caddy是一种通用的网络服务器,声称是最人性化的设计,并且可能是唯一的此类服务器。
Caddy是唯一一个可以使用Let's Encrypt自动获取和更新SSL/TLS证书的Web服务器。
Caddy的特点
- 使用HTTP/2的快速HTTP请求。
- 具有最少配置和无忧部署的功能强大的Web服务器。
- TLS加密可确保通过Internet进行通信的应用程序和用户之间的加密。您可以使用自己的密钥和证书。
- 易于部署/使用。仅一个文件,不依赖任何平台。
- 无需安装。
- 便携式可执行文件。
- 运行多个CPU /内核。
- 先进的WebSockets技术–浏览器和服务器之间的交互式通信会话。
- 支持自动把md转成HTML。
- 完全支持最新的IPv6。
- 以自定义格式创建日志。
- 服务FastCGI,反向代理,重写和重定向,干净URL,Gzip压缩,目录浏览,虚拟主机和标题。
- 适用于所有已知平台– Windows,Linux,BSD,Mac,Android。
是什么让Caddy与众不同?
- Caddy附带了最新功能-HTTP/2,IPv6,Markdown,WebSockets,FastCGI,模板和其他现成的功能。
- 无需安装即可运行可执行文件。
- 具有最少技术描述的详细文档。
- 开发时会考虑设计师,开发人员和Blogger的需求并使其轻松入门。
- 支持虚拟主机–定义任意数量的站点。
- 适合您–无论您的站点是静态的还是动态的。如果您是人类,那是给您的。
- 您专注于实现目标,而不是实现目标。
- 支持大多数平台– Windows,Linux,Mac,Android,BSD。
- 通常,每个站点有一个Caddy文件。
- 即使您是初学者,也可以在不到1分钟的时间内完成设置。
个人看法
caddy2与caddy1相比,caddy1对小白更友好一点。
安装caddy2服务器
安装命令
dnf install 'dnf-command(copr)'
dnf copr enable @caddy/caddy
dnf install caddy
查看是否安装成功
caddy version
安装caddy Web服务器后,您可以使用以下systemctl命令启动,启用和检查服务状态。
sudo systemctl daemon-reload
systemctl start caddy
systemctl enable caddy
systemctl status caddy
systemctl reload caddy
caddy2配置文件为/etc/caddy/Caddyfile
,如果里边默认配置不用的话,编辑时可把默认的配置先注释掉
vim /etc/caddy/Caddyfile
我这主要是用里边的反向代理和重定向与https配置(ssl)
https://www.****.***{
encode gzip
tls ****.pem ****.key
reverse_proxy 127.0.0.1:****
}
http://www.****.*** {
redir https://www.****.***{url}
}
https://****.*** {
redir https://www.****.***{url}
}
http://****.*** {
redir https://www.****.***{url}
}
修改完毕重新加载配置
systemctl reload caddy
上边也提到了,Caddy是唯一一个可以使用Let's Encrypt自动获取和更新SSL/TLS证书的Web服务器。
我们如果需要很简单配置https的话
https://www.****.***{
encode gzip
tls youremail@**.com #你的邮箱地址---自动申请证书,必须在外网,且80可访问
reverse_proxy 127.0.0.1:****
}
注意
如果不写端口 默认会自动使用SSL证书,并且端口号为443
就算写了端口号,只要不是80,也会使用SSL证书。
注意一个域名下的子域名都是可以申请证书的,但是第一个申请的速度较快,后续的会稍慢点。因为这个原因我差点以为它一个域名只能申请一个。
如果不想用ssl证书,是用http访问的话
www.***.***:80 {
root * /data/***
file_server
}
或
http://www.***.*** {
root * /data/***
file_server
}
或
http://www.***.*** {
root * /data/***
file_server
}
自定义SSL证书
www.psvmc.cn {
root * /data/myblog
tls /etc/caddy/cert/psvmc.pem /etc/caddy/cert/psvmc.key
file_server
}
同时映射多个地址
localhost:8888,
psvmc.cn,
www.psvmc.cn {
root * /data/myblog
tls /etc/caddy/cert/psvmc.pem /etc/caddy/cert/psvmc.key
file_server
}
反向代理
www.psvmc.cn {
reverse_proxy localhost:9000
}
负载均衡
www.psvmc.cn {
reverse_proxy localhost:9000 localhost:9001 {
lb_policy first
}
}
Websocket反向代理
ws.psvmc.cn {
## HTTP 代理配置
## 此时访问 ws.psvmc.cn,实际访问的是 127.0.0.1:8080/app/ 的内容
reverse_proxy / 127.0.0.1:8080/app/
## WebSocket 代理配置
## 客户端请求的 wss://ws.psvmc.cn/ws, 实际为 wss://127.0.0.1:8080/ws
reverse_proxy /ws 127.0.0.1:8080
}
跨域访问
(cors) {
@origin header Origin {args.0}
header @origin Access-Control-Allow-Origin "{args.0}"
header @origin Access-Control-Request-Method GET
}
www.psvmc.cn {
import cors www.baidu.com
}