如果我们想要通过互联网访问服务器上的程序,例如搭建一个博客网站,就需要一个 Web 服务器;与同类的老大哥 Nginx、Apache 相比,Caddy 配置简单、申请域名证书更加方便。

这篇文章将帮助大家在 Linux 服务器上安装 Caddy 并配置反向代理。

什么是 Caddy?

Caddy 是一款现代的、用 Go 语言编写的开源 Web 服务器。它以简单易用、功能强大以及自动获取和更新 SSL 证书的能力而著称。与传统的 Web 服务器不同,Caddy 注重自动化和默认安全性,因此非常容易上手。

Web 服务器是运行在服务器端的一类软件,服务器可以理解为一台(或者大到一个机房) 24 小时开机运行的电脑,如果用户需要访问服务器上的文件、或者运行服务器上的软件,不可能获得服务器的控制权限,而是通过浏览器输入域名访问网站—服务器返回结果这种形式来进行;Web 服务器就在这中间扮演了一个中转者的角色,它接受来自互联网用户的(HTTP)请求,然后提供(HTTP)回复给请求者。HTTP 回复一般包含一个 HTML 文件,有时也可以包含纯文字档案、图像或其他类型的文件。

安装 Caddy

官方的安装文档提供了详细的全平台安装命令,以 Debian 11 为例,SSH 登入服务器,运行

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl

curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg

curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list

sudo apt update

sudo apt install caddy

输入

caddy -v

查看是否安装成功。

配置 Caddy 作为反向代理

1. 本地安装 Web 程序

我们先在本地安装好需要互联网访问的 Web 程序,例如前面介绍的 Vikunja 和 Memos,并记录它们的访问端口,这里 Vikunja-3456,Memos-5230,

2. 域名 DNS 解析到服务器 IP

在域名托管商的 DNS 管理界面,例如 Cloudflare,添加 A 记录将子域名解析到服务器 IP,

如果使用 Cloudflare,还需要将 SSL/TLS 加密模式设置成完全或者完全(严格),

3. 修改 Caddyfile

我们通过一个全局的配置文件来操作 Caddy,配置文件在 /etc/caddy/Caddyfile,通过 Linux 自带的或一些 SSH 客户端的编辑器来修改,

默认的 Caddyfile 是这样,

# The Caddyfile is an easy way to configure your Caddy web server.
#
# Unless the file starts with a global options block, the first
# uncommented line is always the address of your site.
#
# To use your own domain name (with automatic HTTPS), first make
# sure your domain's A/AAAA DNS records are properly pointed to
# this machine's public IP, then replace ":80" below with your
# domain name.

:80 {
	# Set this path to your site's directory.
	root * /usr/share/caddy

	# Enable the static file server.
	file_server

	# Another common task is to set up a reverse proxy:
	# reverse_proxy localhost:8080

	# Or serve a PHP site through php-fpm:
	# php_fastcgi localhost:9000
}

# Refer to the Caddy docs for more information:
# <https://caddyserver.com/docs/caddyfile>

先全部删除,再修改成

vikunja.044447.xyz {
    reverse_proxy localhost:3456
}

memos.044447.xyz {
    reverse_proxy localhost:5230
}

并保存退出到终端。

其中 vikunja.044447.xyz 是刚才我们解析到 Vikunja 的域名,reverse_proxy 驱动 Caddy 进行反向代理操作,localhost:3456 是本地 Vikunja 运行的 IP:端口,类似的写入 Memos 的配置段。

4. 重启 Caddy 使配置生效

每次修改完 Caddyfile 后运行命令,

systemctl restart caddy

使配置生效。

如果要使用 Caddy 反向代理更多的 Web 程序,按如上步骤在 Caddyfile 里不断添加配置段即可,注意端口不要冲突。

5. 检查域名是否可以访问

最后就是浏览器直接输入域名,检查是否可以访问了,按照上面的步骤一步一步来,一般是没有问题的,

Caddy 地址

官网:https://caddyserver.com/

官方文档:https://caddyserver.com/docs/

中文文档:https://caddy2.dengxiaolong.com/docs/

社区:https://caddy.community/

可以发现 Caddy 配置反向代理还是非常简单的,作为 Web 服务器, Caddy 还可以托管网站,实现负载均衡等等,可以访问官方文档解锁更多 Caddy 的强大功能。

订阅评论
提醒
guest

0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
You May Also Like