caddy 是一个像 Apache, nginx, 或 lighttpd 的web服务器。
你要问nginx已经很好了,为何要用caddy呢? 我以为caddy最大的特色是用起来简单,
而后呢,它还有下面这些开箱即用的特性:php
HTTP/2
全自动支持HTTP/2协议,无需任何配置。html
Auto HTTPS
Caddy 使用 Let's Encrypt 让你的站点全自动变成全站HTTPS,无需任何配置。固然你想使用本身的证书也是能够的。nginx
Multi-core
由于caddy是golang写的,因此固然能够合理使用多核啦。golang
IPv6
彻底支持IPv6环境.web
WebSockets
Caddy 对WebSockets有很好的支持.apache
Markdown
自动把md转成 HTML ,固然,我后续要给你们介绍更强大的hugo来干这个事情.浏览器
Logging
Caddy 对log格式的定义很容易,更好的知足你日志收集的需求。服务器
Easy Deployment
得益于go的特性,caddy只是一个小小的二进制文件,没有依赖,很好部署。php7
那么在什么场景下适合尝试使用caddy
呢,我推荐从如下场景开始:curl
做为静态页面的webserver
转发 fastcgi 请求到 php-fpm 服务,好比替换apache或nginx做为wordpress的server
反向代理,管理多个站点
微服务的 API gateway ,我会专门写一篇文章。
有些在nginx上难以开发的需求,为caddy写插件太方便了。
下载 caddy
把caddy放到系统的PATH中,让其能够直接执行。好比Linux中通常习惯放到 /usr/local/bin
找一个作测试的临时目录,生成一个测试主页。echo "hello world">index.html
执行 caddy
在另外一个终端 curl localhost:2015
或在浏览器访问 (http://localhost:2015)
caddy的一个特点就是配置简单,nginx的配置文件群已经越看越晕了。咱们来试试:
在当前目录建立这样一个叫Caddyfile
的文件:
localhost:2020 gzip
此次,咱们改变了端口,而且启用了gzip自动压缩数据。运行caddy
,去你指定的地址看看吧。
说一句,caddy的潜规则是找当前目录叫Caddyfile
的文件,你也能够用参数指定文件和路径。
咱们随便说点高级功能,其实caddy的文档挺不错的,看文档就能够了解各类功能。
若是你知足这些条件,你用caddy启动的应用将自动得到HTTPS,不用你买证书了,这都是Let's Encrypt
的功劳。
host 那里要填一个域名,不能是 localhost 或 IP
不要用冒号手动指定端口
不要在域名前手动声明http
没在配置里关掉TLS 或者声明用本身的证书可是还没配好
caddy 有权限绑定 80 和 443 端口
前边都能懂,说下最后一条。在init文件夹的启动配置教程里都有,通常建议你用www-data用户启动服务,
你不是root可是Linux依然可让你绑定80端口,只须要执行setcap cap_net_bind_service=+ep caddy
。
具体看文档吧。
你可能想,以前用nginx主要是为了支持多站点,caddy固然也是能够的,你只须要配置若干域名,
把每一个域名的配置写在后边的大括号配置块里就好了。下一个例子里就有。
听说全世界四分之一的站点都是wordpress搭建的,而PHP公认是世界上最好的语言。
caddy尚未彻底支持unix socket通信呢,赶紧先把PHP支持了再说。
这是我本身博客的配置片断,个人荒芜的非技术博客依然用的wordpress。timeouts
关键字是我摸索出来的,官方示例没有,不设置这个国内升级插件什么的根本成功不了。tls
其实用默认值是能够的,可是后台会有一堆落后的搜索引擎和爬虫报错,因而我调低了一点。
另外我还把www定向到了裸域名,你们通常都这样作,或者反过来。
xiafeng.net { root /data/xiafeng/public timeouts 10m gzip tls { protocols tls1.0 tls1.2 } fastcgi / unix:/var/run/php/php7.0-fpm.sock php rewrite { if {path} not_match ^\/wp-admin to {path} {path}/ /index.php?_url={uri} } } www.xiafeng.net { redir https://xiafeng.net }
由于大部分发行版目前还没办法直接安装caddy,开机启动可能须要你本身动手啦。
在你下载的压缩包中有一个init文件夹,里边有Mac,Linux,FreeBSD的开机启动配置帮助,
还有示例脚本,能够根据你的要求再DIY一下。
做为入门就先介绍这么多,我接下来的博客将会写一些好玩的或专业的caddy的用法。敬请期待。