CentOS 7/8 安装 Caddy2 完整教程

Caddy 是一个用于替代 Nginx 的 Web 代理服务器,使用 Go 语言编写,部署简单,没有复杂的配置文件,同时具备很多有意思的功能如:Automatic https、http/2、IPv6 等。

因为 Caddy 简单易于部署,你可以很轻松的将它用在:自建网盘(Nextcloud)、密码管理器(Bitwarden)、博客(WordPress)、Docker 程序反向代理等各类应用上,程序派就是使用 Caddy 作为网页服务器,部署的这个站点。

初识 Caddy2从不屑到爱上它只需要真正使用它一次。虽然性能不如 Nginx,但 Caddy 胜在简单便捷。(Caddy v1 自 2020 年起停止维护,这里就不多赘述了,文章都是 Caddy2 相关的内容)

那么用 Caddy 搭建一个网页服务有多简单呢?你只需要写这样一个配置:

1234example.com { root * /www/html/example.com file_server}

只需要在 Caddyfile 里,写入以上四行,一个绑定域名、使用 https 协议的站点就运行了。不需要去申请 SSL 证书,Caddy 已经给你搞定了一切(注册以及续期 Let’s Encrypt 的免费证书。而使用 Nginx 的话,还是需要每 3 个月续期一次,一旦忘记续期导致证书失效,SEO 就裂开了)

CentOS 安装 Caddy在 CentOS 上安装 Caddy 还是比较简单的,常见的方法有两种:

使用 yum install caddy 指令直接安装

使用官方提供的二进制静态程序包,直接运行

使用静态程序包运行,需要在 Release 里找适合自己 VPS 服务器 & 核心的包,并在下载完成后配置服务:配置 Caddy 服务。总体来说非常的繁琐,适合有一定运维经验的同学,本文就不展开介绍了。

而使用 CentOS 的 yum 指令安装 caddy,就不需要自己去配置服务。只需要在安装完成后,找到 Caddyfile 敲入配置,或者直接使用 caddy 指令运行程序。

注意:直接使用 yum install caddy 安装的是 Caddy v1

CentOS 7 安装 Caddy在 CentOS 7 安装 COPR 仓库,只需要安装 yum-plugin-copr 即可,按照顺序键入以下三行指令:

123yum install yum-plugin-copr -yyum copr enable @caddy/caddyyum install caddy -y

安装完成以后,键入:caddy version 即可检查是否成功安装 Caddy:

12[git@VM-4-5-centos ~]$ caddy versionv2.6.2 h1:wKoFIxpmOJLGl3QXoo6PNbYvGW4xLEgo32GPBEjWL8o=

有返回结果,并且 version 是 v2.x 即表示安装成功了。

CentOS 8 安装 CaddyCentOS 8 安装 COPR 的指令和 7 不同,需要将 yum-plugin-copr 改为 dnf-command(copr) ,按照顺序键入以下三行指令:

123yum install 'dnf-command(copr)' -yyum copr enable @caddy/caddyyum install caddy -y

安装完成以后,键入:caddy version 即可检查是否成功安装 Caddy:

12[git@VM-4-5-centos ~]$ caddy versionv2.6.2 h1:wKoFIxpmOJLGl3QXoo6PNbYvGW4xLEgo32GPBEjWL8o=

有返回结果,并且 version 是 v2.x 即表示安装成功了。

使用 Caddy 创建一个服务器配置如果你使用的是上述方式安装 Caddy,那么你可以在 /etc/caddy 这个文件夹中找到一个名为 Caddyfile 的文件,它就是 Caddy 使用的核心配置文件。

使用 vim 打开 Caddyfile 配置文件:

1vim /etc/caddy/Caddyfile

并在里面键入以下内容:

1234:80 { root * /usr/share/caddy file_server}

上述配置即表示,在此当前服务器的 80 端口上建立一个站点,根目录位于 /usr/share/caddy 文件夹,启用静态资源服务器(即访问网页文件资源)。

文件保存后,使用以下指令启动 Caddy

1systemctl start caddy

然后访问你的域名,就能打开 Caddy 安装完成后,自带的默认站点了。

在这个页面里,它告诉你 Caddy 已经准备好给你的站点启用 HTTPS 服务,你只需要:

将域名 DNS 解析指向此服务器

将站点放入服务器,这里建议的是 /var/www/html 文件夹

修改 Caddyfile 文件,将 :80 更换为你的域名

将 Caddyfile 中 root 指向的目录修改为 /var/www/html 文件夹

重启 Caddy 服务

上述核心,主要是将 :80 更改为具体的域名,只要有具体的域名指向此服务,Caddy 就可以自行申请 SSL 证书。

重启 Caddy 服务,只需要键入这条命令:

1systemctl reload caddy

在命令执行完成以后,访问域名即可打开你的网站,而且它已经默认启用了 HTTPS 服务,不需要自己去申请和维护 SSL 证书。

Nginx 转 Caddy 常用的配置使用 Caddy 肯定是打算用来访问服务器内的资源的,常见的如博客站、工具站、程序反向代理等,这里整理了一些 Caddy2 使用的配置。

Caddy2 部署静态网页服务静态网页服务,只需要启用 file_server 即可,如果资源较大,可以再启用 gzip 压缩,配置文件如下:

12345example.com, www.example.com { root * /var/www/html encode gzip file_server}

这个配置同时监听 example.com 和 www.example.com 两个域名进来的请求,并且开启了 gzip 压缩

Caddy2 部署 WordPress配置里使用到了 php_fastcgi,使用时需要将 /run/php/php8.0-fpm.sock 替换为服务器里 php-fpm 的路径

123456789101112131415example.com, www.example { root * /var/www/wordpress php_fastcgi unix//run/php/php8.0-fpm.sock encode gzip file_server @disallowed { path /xmlrpc.php path *.sql path /wp-content/uploads/*.php } rewrite @disallowed '/index.php'}

重启 Caddy 后,只要 wordpress 的配置没有出错,访问域名应该就会看到配置 WordPress 的界面了。

Caddy2 部署 Bitwarden配置 Bitwarden 只需要将请求反向代理到 Docker Bitwarden 程序中配置的端口即可

12345example.com { reverse_proxy 127.0.0.1:8880 reverse_proxy /notifications/hub 127.0.0.1:3012 reverse_proxy /notifications/hub/negotiate 127.0.0.1:8880 }

由于 Bitwarden 要求必须使用 HTTPS,使用 Caddy 部署比 Nginx 要方便特别多。

Caddy2 部署前端程序部署前端程序的方式,和部署静态网页是一致的,只需要配置一些前端接口的转发规则即可。

123456789example.com { handle /api/* { uri strip_prefix /api reverse_proxy * 127.0.0.1:3000 } root * /var/www/html file_server}

这样配置一下,即可将带有 /api 前缀的请求,转发到本机 3000 端口的程序上了。

参考链接编写本文的配置文件,参考了官网的资料以及一些其他前辈的分享,有兴趣的可以去看看原文:

Caddy 中文文档

Bitwarden_RS自建密码管理系统

How to Install Wordpress in Caddy2

许可协议

本文采用 署名-非商业性使用-相同方式共享 4.0 国际 许可协议,转载请注明出处。

随便看看