技术漫谈 | 快速上手更简单的 Web 服务器——Caddy

2019阿里云双11返场狂欢继续,
地址https://www.aliyun.com/1111/2019/home

推荐:Apache HTTP Server服务器的使用

[最流行的HTTP服务器软件之一。快速、可靠、可通过简单的API扩展,Perl/Python解释器可被编译到服务器中,完全免费,完全源代码开放。如果你需要创建一个每天有数百万人访

作者:赵峻伟

说到Web 服务器,我们大多想到的是 Apache 这个老前辈和如日中天的Nginx,但今天我将分享的是 Web 服务器和反向代理服务器的新秀——Caddy。在我们拥有如此强大的 Nginx 后为什么还需要 Caddy? 我认为 Caddy 之所以可以占有一席之地是因为它的两大法宝:配置简单 和 自动启用 HTTPS。下面介绍如何快速上手这个软件。

安装

Caddy 提醒定制化的下载,可以自由选择各种插件和平台。请前往 https://caddyserver.com/download 下载。

也可以使用这个一键安装脚本:

curl https://getcaddy.com | bash

完成之后,我们可以尝试执行下caddy -version。 当你看到有有类似:Caddy 0.10.9,即表示安装成功。

Hello World

在命令行里面直接输入caddy,然后打开浏览器输入: http://ip:2015 。 看到什么了吗? 你得到了一个404页面。Caddy 已经成功运行了。相比与其他浏览器需要各种配置文件才能运行相比,这就是 Caddy 的简单之处,不需要任何配置文件即可运行。当然,在我们需要各种高级功能的时候,配置文件还是必不可少的。

默认情况下,Caddy 运行在2015 端口。我们可以用 Caddy 强大的命令行工具来自定义运行端口。

caddy -p 80

在无配置文件的情况下,Caddy 默认是映射当前程序执行目录的所有文件。因此我们可以快速创建一个文件:

echo "<h1>Hello Caddy</h1>" >> index.html

再次刷新浏览器,刚才我们写的 Hello Caddy 就出现在页面上了。

强大的配置文件

Caddy 各种强大的功能还得需要 Caddyfile 体现。我们可以在任意目录放置我们的配置文件,通过命令行caddy -conf 即可指定。

Host 目录下的网页

0.0.0.0:8080 {

root /usr/local/www/}

这里简单解释下,0.0.0.0 表示我们将网站绑定至可以访问到本机的任意一个 IP;8080表示我们将网站暴露在8080端口; root 参数则表示网站的根节点。这就是最简单的一个Host 网站的配置。

推荐:Web服务器——Apache

[Apache,当今市场上主流的Web服务器。Apache基本配置文件的httpd.conf。apache可以和php集成。本文讲解Web服务器相关知识、什么是Apache、apache安装及参数讲解、启动不报

当前我们可以对网站添加更多的配置。比如设置响应过期时间,启用 gzip, 指定各种日志的输出端。

0.0.0.0:8080 {

root /usr/local/www/

timeouts 30s

gzip  log /var/log/caddy/access.log

errors /var/log/caddy/error.log

}

配置反向代理

什么时候你会需要反向代理呢?想象你有一个前后端分离的程序。前端是通过 JS 发送 Ajax 请求后端 API。默认情况下前端程序占用一个端口,后端占用一个另外端口。我们会遇到两个问题: CORS(跨域请求)和额外的 Options 请求。 这个时候我们就可以使用反向代理让前端和后端共享一个端口。

那怎么做呢,在 Caddy 里面也特别简单。假设我们的前端就是上面那样,我们的后面之前都运行在: http://ip:4000 下面,而且我们的 后端 API URL 里面都有 /api。

0.0.0.0:8080/api {

proxy / 127.0.0.0:4000/api {

   transparent

}

}

这里的配置的意思是说,当浏览器收到所有包含:8080/api 的请求都会自动转发到127.0.0.1:4000/api 这个地址,而:8080/api 后面的地址会自动转发下去,而transparent这个设置保证了我们的转发不会在浏览器生成任何额外的301 或者302请求。

自动 HTTPS

Caddy 另外一个亮点就是,能为已经绑定域名且在公网运行的服务器自动从 Let's Encrypt生成和下载 HTTPS 证书,让你的网站支持 HTTPS 协议访问,保证网站数据传输的安全。很简单,你所需的仅仅是将绑定的 IP 改成域名。

xxx.com {

root /usr/local/www/

}

再次运行Caddy,按照提示输入你的 Email 之后。Caddy 会自动帮你获取并启用 HTTPS 证书。

root@ss2:~# caddy -conf CaddyfileActivating privacy features...

Your sites will be served over HTTPS automatically using Let's Encrypt.

By continuing, you agree to the Let's Encrypt Subscriber Agreement at:

https://acme-v01.api.letsencrypt.org/terms

Please enter your email address so you can recover your account if needed.

You can leave it blank, but you'll lose the ability to recover your account.

Email address: xxxx@gmail.com

done.

https://xxx.com

http://xxx.com

总结

通过上面的例子,我们可以看到 Caddy的快速上手能力和超级实用的 HTTPS 功能。同时 Caddy 还提供了一大堆的插件供我们使用。比如直接访问 Markdown 文件、Host Git 仓库的文件,将自身 Metric 数据传到 Prometheus 等等。

快去试试吧!

文末福利:请大家关注【Wise2C】并回复【进群】,睿云小助手会第一时间拉你进入【 Docker企业落地实践群】,我们分享的各个企业案例项目的技术专家与用户代表,正在敬候您的光临,期待大家就项目的更多细节与疑问与群里的大牛们进行咨询探讨。

需要了解更多有关睿云智合的客户项目细节,请在Wise2C公众号中最佳实践菜单中查看。

若需要了解更多有关Wise系列PaaS产品的详情,请与我们的市场团队联系: contact@wise2c.com

推荐:web服务器apache架构

[ web服务器                                                                                    在开始了解Apache前,我们先熟悉一下web服务器,因为apache也是w

相关推荐