Debian 9 安装配置 Caddy Server

简介: Caddy 是一个用 Golang 开发的高效 Web Server,相比 Nginx,它的配置和使用要简单很多,能自动开启 HTTPS、并且支持 HTTP/2 和 QUIC。 下载安装 Caddy 首先去 Download Caddy 选择你需要的插件,然后复制下方的 One-step ins.

Caddy 是一个用 Golang 开发的高效 Web Server,相比 Nginx,它的配置和使用要简单很多,能自动开启 HTTPS、并且支持 HTTP/2 和 QUIC。

下载安装 Caddy

首先去 Download Caddy 选择你需要的插件,然后复制下方的 One-step installer script (bash),例如我的是

$ curl https://getcaddy.com | bash -s
http.cache,http.cors,http.expires,http.filemanager,http.git,http.ipfilter,http.minify,http.nobots,http.ratelimit,http.realip,tls.dns.cloudflare

安装完后输入 which caddy,不出意外的话会输出 /usr/local/bin/caddy

至此,安装完毕,但是目前它不会开机自启,只是简单地把二进制文件下载下来,所以下一步要注册服务。

注册服务到Systemd

这里我使用的是官方提供的脚本 caddy.service,其他系统也可以在这里找到相应的脚本。

把这个文件下载到 /etc/systemd/system/ 。

sudo curl -s https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service -o /etc/systemd/system/caddy.service

创建所需目录,我图方便没有修改脚本直接使用默认值了,如果有特殊需求,可以自己更改目录。

sudo mkdir /etc/caddy
sudo chown -R root:www-data /etc/caddy
sudo touch /etc/caddy/Caddyfile

sudo mkdir /etc/ssl/caddy
sudo chown -R www-data:root /etc/ssl/caddy
sudo chmod 0770 /etc/ssl/caddy

sudo mkdir /var/www
sudo chown www-data:www-data /var/www

上面创建了三个目录,/etc/caddy 用了存放 Caddy 的配置文件,/etc/ssl/caddy 存放证书,/var/www 是默认的网站目录。

接着,重新加载 systemd daemon,让配置生效。

sudo systemctl daemon-reload

让 Caddy 开机自启:

sudo systemctl enable caddy.service

至此,Caddy 已经成功注册服务,并能够开机自动运行了。

配置Caddy

这部分的内容我不打算详细记录,主要是官方文档已经写的很详细了。下面是我的配置,

example.com {
  proxy / 127.0.0.1:9001 {
    header_upstream Host {host}
    header_upstream X-Real-IP {remote}
    header_upstream X-Forwarded-For {remote}
    header_upstream X-Forwarded-Proto {scheme}
  }

  gzip
  header / -Server
  header / Strict-Transport-Security "max-age=31536000;"
  tls user@example.com {
    protocols tls1.0 tls1.2
    dns cloudflare
  }
}

如果要使用 DNS 的方式认证域名的话,需要设置环境变量,修改 /etc/systemd/system/caddy.service ,加入环境变量,我使用的是 CloudFlare 的 DNS,所以我需要添加 CLOUDFLARE_EMAIL 和 CLOUDFLARE_API_KEY ,其他 DNS 看这里

[Service]
...
Environment=CADDYPATH=/etc/ssl/caddy
+ Environment=CLOUDFLARE_EMAIL=xxx
+ Environment=CLOUDFLARE_API_KEY=xxx
...

写完配置后输入 sudo systemctl start caddy.service 启动 Caddy。输入 journalctl --boot -u 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 ,即

ExecStart=/usr/local/bin/caddy -log stdout -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp -quic

然后重新加载 Systemd,并重启 Caddy

sudo systemctl daemon-reload && sudo systemctl restart caddy.service

同时,别忘了给主机开放 443 (UDP) 端口。

目前 QUIC 只有 Chrome 支持,并且需要手动开启(默认只有白名单域名启用)。访问 chrome://flags/#enable-quic,切换为 Enabled 即可。开启后,重启 Chrome,访问网站,通过 Chrome DevTools – Security 可以看到协议已经是 QUIC 了。

关于性能

Caddy 是 Go 写的,性能方面是稍落后于 Nginx 的,但其实对于小站来说,这一点性能差距是可以忽略的,毕竟 You Are Not Google 。


原文发布时间:2017-12-24
本文来自云栖社区合作伙伴“ Debian社区”,了解相关信息可以关注“ Debian社区”。
相关文章
|
存储 编解码
如何将BDMV文件转换为MKV或MP4?
许多拥有蓝光光驱的用户可能在电脑上存储了一些BDMV文件。虽然这些文件提供了高质量的视频和音频,但由于其文件格式的限制,它们可能无法在某些设备上播放。因此,将BDMV文件转换为常见的MKV或MP4文件就变得非常重要。本文将介绍一种简单而有效的方法来完成这个转换过程。
2305 2
|
算法 Python
随机生成迷宫-深度优先搜索算法
在计算机科学中,迷宫生成是一个经典的问题,广泛应用于游戏设计、路径规划等领域。本文将介绍一种常见的迷宫生成算法——深度优先搜索算法(Depth-First Search, DFS),通过随机选择路径进行探索和回溯,最终生成一个随机且有趣的迷宫。
1046 1
|
监控 druid Java
Spring Boot 3 集成 Druid 连接池详解
在现代的Java应用中,使用一个高效可靠的数据源是至关重要的。Druid连接池作为一款强大的数据库连接池,提供了丰富的监控和管理功能,成为很多Java项目的首选。本文将详细介绍如何在Spring Boot 3项目中配置数据源,集成Druid连接池,以实现更高效的数据库连接管理。
9741 2
Spring Boot 3 集成 Druid 连接池详解
|
网络协议 Linux 网络安全
|
11月前
|
应用服务中间件 网络安全 nginx
轻松上手Nginx Proxy Manager:安装、配置与实战
Nginx Proxy Manager (NPM) 是一款基于 Nginx 的反向代理管理工具,提供直观的 Web 界面,方便用户配置和管理反向代理、SSL 证书等。本文档介绍了 NPM 的安装步骤,包括 Docker 和 Docker Compose 的安装、Docker Compose 文件的创建与配置、启动服务、访问 Web 管理界面、基本使用方法以及如何申请和配置 SSL 证书,帮助用户快速上手 NPM。
7956 1
|
Java Linux Go
知识分享之Golang——读取pdf中纯文本内容
知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。欢迎大家进行持续关注。 知识分享系列目前包含Java、Golang、Linux、Docker等等。
2045 1
知识分享之Golang——读取pdf中纯文本内容
|
Docker 容器
两个docker能用同一个端口吗 - 蓝易云
然后,你可以在另一个容器中运行相同的应用,让它监听容器的80端口,并将其映射到主机的8081端口。
605 0
|
小程序 前端开发 JavaScript
微信小程序快速入门01(含案例)
微信小程序快速入门01(含案例)
317 1
|
存储 Ubuntu jenkins
如何在 Ubuntu 22.04 上安装 Jenkins?
如何在 Ubuntu 22.04 上安装 Jenkins?
1240 0
如何在 Ubuntu 22.04 上安装 Jenkins?