Caddy是一款用Go编写的现代开源web服务器。它以其简单性、强大性以及自动获取和续订SSL证书的功能而闻名。与传统的网络服务器不同,Caddy以其易用性而闻名,默认情况下强调自动化和安全性。
但Caddy的能力超越了为静态网站和应用程序提供服务;它就像一个反向代理一样闪闪发光&一个位于内部应用程序前面并将客户端(如web浏览器)请求转发到相应服务器的服务器。
选择Caddy作为您的反向代理解决方案是明智之举。虽然有像Nginx这样广受欢迎的替代品,但与Caddy相比,它需要稍微复杂一点的设置。Traefik是另一个出色的选择,它提供了非凡的功能和灵活性,尤其是对于基于云的解决方案,但其配置复杂性要高得多。
这突出了为什么Caddy是那些寻求将易用性与速度、安全性和可靠性相结合的反向代理解决方案的首选,所有这些都在众多生产环境中得到了验证。
这篇全面的文章将深入研究如何将Caddy作为反向代理,指导您完成设置过程和配置。我们很高兴向您展示与Caddy一起跑步是多么简单。所以,让我们深入了解。
安装Caddy
首先,让我们澄清一下:如果您喜欢基于容器的设置,您可以直接通过Linux发行版的包管理器安装Caddy,也可以将其设置为Docker容器。在本指南中,我们将探讨这两种选项,首先介绍如何将其作为软件包安装。
根据您使用的分发版本,请使用相应的命令:
Debian、Ubuntu、Linux Mint
sudo apt安装caddy
代码语言:
猛击
(
猛击
)
RHEL、Fedora、AlmaLinux、Rocky Linux
sudo dnf安装
'dnf命令(copr)'
sudo dnf copr
使可能
@球童
sudo dnf安装caddy
sudo系统ctl
使可能
球童
sudo systemctl启动caddy
代码语言:
猛击
(
猛击
)
Arch Linux,Manjaro
sudo pacman-S球童
sudo系统ctl
使可能
球童
sudo systemctl启动caddy
代码语言:
猛击
(
猛击
)
将Caddy设置为反向代理
让我们先澄清一下我们的设置。Caddy通常用作反向代理,将流量路由到其后面运行的容器化应用程序,因此我们将遵循此模式。我们选择了两个容器化的示例应用程序进行演示:FreshRSS阅读器和Memos笔记应用程序,它们分别在1080和5230端口上运行。
当然,您可能正在使用许多应用程序——10个、20个、100个或更多。Caddy完全有能力在没有任何问题的情况下管理如此重的负载。我们只选择了两个应用程序,以使事情尽可能简单明了。
要了解Dockerized应用程序运行在哪些端口上,您可以通过执行以下命令快速轻松地执行此操作:
docker容器ls格式
“表{{.ID}}t{{.Names}}t{{.Ports}”
一
代码语言:
猛击
(
猛击
)
现在让我们讨论Caddy将管理的域记录。对于本指南,我们使用“
tmplinux.com
,“我们拥有并用于测试的域。我们将引导两个特定的DNS记录,”
rss.tmplinux.com
“用于FreshRSS应用程序和”
memos.tmplinux.com
“对于Memos笔记应用程序,连接到Caddy运行的服务器。
但是,如果你没有自己的域,你可以在你的“
/etc/主机
文件但如果你不知道如何做到这一点,我们在这里的详细指南会解释一切。
以下是我们的生产流程,让您更好地直观了解。
既然一切都清楚了,让我们直接进入正题:设置Caddy来处理反向代理任务。
编辑Caddyfile
我们所需要做的就是在Caddy的主配置文件中输入非常简单的指令,名为“
Caddyfile
,“在”
/etc/球童/
目录
它告诉Caddy如何提供web内容,自动管理HTTPS证书,路由请求,以及用最少的配置处理其他web服务器任务。简单地说,这是一组指导Caddy有效地与网络流量交互和管理的指令。
用您喜欢的文本编辑器打开它,删除现有内容,然后用下面显示的内容替换它。立即解释其含义。
sudo nano/etc/caddy/Caddyfile
代码语言:
猛击
(
猛击
)
{
自动http(_H)
关
}
rss.tmplinux.com:
80
{
反向氧化
localhost:
1080
}
memos.tmplinux.com:
80
{
反向氧化
localhost:
5230
}
代码语言:
Nginx
(
nginx
)
初始部分是全局选项块,其中包含适用于整个Caddy服务器的设置。我们已指定“
自动http(_H)
“在此块内设置为”
关
.”此操作会告诉Caddy禁用自动SSL证书设置和从HTTP到HTTPS的自动重定向等功能。有关更多信息,您可以在此处查看。
以下两个部分定义了Caddy将提供的域名。它将接受端口80上的请求,并使用
反向氧化
“选项将它们重新路由到Docker应用程序的暴露端口。由于这些应用程序托管在同一台机器上,我们将地址指定为“
本地服务器
.”
重新启动Caddy服务
最后,保存文件,退出并重新启动Caddy:
sudo systemctl重新启动caddy
代码语言:
猛击
(
猛击
)
确保Caddy正在工作:
sudo systemctl状态caddy
代码语言:
猛击
(
猛击
)
测试是否一切正常
如果您将浏览器指向“
Caddyfile
,“Caddy将充当反向代理,并确保您的请求根据子域名称定向到正确的容器。
这能比那容易多少?只需几行配置,我们就可以使用Caddy建立一个可靠的反向代理服务器。接下来,让我们探讨一下不要直接从包中安装Caddy,而是在Docker容器中运行它。
在Docker容器中将Caddy设置为反向代理
要将Caddy设置为Docker容器内的反向代理,必须确保满足两个关键要求:
- Caddy和它将向其转发请求的容器应该在同一Docker网络中。
- 在“
Caddyfile
,”您应该按容器的名称来指代它们。
建立Docker网络
因此,首先,让我们通过选择“
反向氧化
”作为名称。
docker网络创建反向代理
代码语言:
猛击
(
猛击
)
接下来,我们将验证一切是否正常,网络是否可用。
docker网络ls
代码语言:
猛击
(
猛击
)
建立docker网络。
设置Caddy Docker文件
创建目录“
球童
“去吧。
mkdir caddy
cd
球童
代码语言:
猛击
(
猛击
)
我们将使用Docker Compose部署Caddy。如果这对你来说是新的,不要担心——我们的全面指南会很快让你跟上进度。
打开文本编辑器,创建一个“
docker-compose.yaml
”文件。粘贴下面提供的内容,保存后退出。
纳米docker-compose.yaml
代码语言:
猛击
(
猛击
)
版本
'3.8'
服务:
球童
容器名称:
球童
形象
球童:高山
重新启动:
总是
端口:
-
80
:80
-
443
:443
网络:
-
反向氧化
卷:
-
./Caddyfile:/etc/caddy/Caddyfile
-
caddy_data:/data
-
caddy_config:/config
卷:
caddy_data:
caddy_config:
网络:
反向复制(_P):
外部的
真的
代码语言:
YAML
(
yaml
)
创建Caddyfile
现在,让我们准备“
Caddyfile
“配置,如中所示”
docker-compose.yaml
”文件,直接从主机的本地目录装载到Caddy容器中。
纳米Caddyfile
代码语言:
猛击
(
猛击
)
{
自动http(_H)
关
}
rss.tmplinux.com:
80
{
反向氧化
freshrss:
80
}
memos.tmplinux.com:
80
{
反向氧化
备忘录:
5230
}
代码语言:
Nginx
(
nginx
)
这里的情况基本相似,但有一个显著的变化:应用程序是通过它们的容器名称来识别的。如果您不确定容器的确切名称,可以通过运行以下命令快速定位:
docker ps—格式
“{{.Names}}”
代码语言:
猛击
(
猛击
)
正在查找容器名称。
此外,示例中指定的端口,例如“
新鲜度:80
或
备忘录:5230
“,不是容器在主机上映射到的端口。相反,它是容器内的应用程序侦听的端口。
将剩余容器链接到Caddy的Docker网络
同样,Caddy必须与它重定向请求的容器共享同一网络,以便能够与它们通信。这需要修改它们的部署。例如,对FreshRSS部署所做的调整包括添加一个“
反向氧化
“网络部分,如下所示:
请确保在更改后重新启动容器。完成后,您就可以继续启动Caddy容器了:
docker组合-d
代码语言:
猛击
(
猛击
)
启动Caddy反向代理容器。
将浏览器引导到指定的地址,并在容器化环境中体验Caddy轻松的反向代理功能。
与Caddy一起获得SSL证书
Caddy的突出功能之一是能够自动获取和续订SSL证书,这大大简化了安全网站的设置和维护。
Caddy使用自动证书管理环境(ACME)协议与免费证书颁发机构(CA)(如Let’s Encrypt)进行交互。因此,当您使用Caddy配置网站时,它会自动与之通信,以获得您网站的SSL证书,从而确保安全的HTTPS连接。
然而,Let’s Encrypt SSL/TLS证书的有效期有限,为90天,需要定期更新以维护网站安全。好消息是Caddy自动完成了更新过程。
它会检查证书的到期日期,并在证书到期前自动续订,实际上将您的维护需求降至零。现在,回到我们的案例。
在上面提供的示例中,我们通过设置“
关闭auto_https
”选项。
{
自动http(_H)
关
}
代码语言:
Nginx
(
nginx
)
需要注意的是,删除“
关闭auto_https
“这一行足以让Caddy自动开始颁发SSL证书,因为这是它的默认行为。
但是,我们将添加另一个选项,“
电子邮件
,”的位置,然后是您的电子邮件地址。在您的CA中创建ACME帐户时,强烈建议使用此方法,以确保顺利处理证书问题。
此外,更新“
Caddyfile
“将Caddy(子域)服务的端口调整为目标端口443。最终版本应如下所示:
{
电子邮件
你的
电子邮件
住址
}
rss.tmplinux.com:
443
{
反向氧化
freshrss:
80
}
memos.tmplinux.com:
443
{
反向氧化
备忘录:
5230
}
代码语言:
Nginx
(
nginx
)
现在,重新启动Caddy服务:
sudo systemctl重新启动caddy
如果您正在使用Docker,请停止并重新启动Caddy容器:
码头工人冷静下来
docker组合-d
代码语言:
猛击
(
猛击
)
当您在web浏览器中打开应用程序时,您会注意到Caddy已在后台自动颁发了有效的SSL证书。现在可以通过HTTPS访问地址,地址栏中的挂锁图标表示。
结论
Caddy是寻求易于使用、安全且功能强大的反向代理解决方案的用户的绝佳选择。
它的简单设置和自动管理SSL证书的能力使其成为传统网络服务器(如Nginx)和更复杂的替代品(如Traefik)的首选,尤其是对于重视简单性的用户来说。
将Caddy设置为反向代理可以显著简化流量管理和重定向到您的服务。按照我们指南中概述的步骤,您可以快速配置Caddy以有效地处理流量重定向。
最后,有关更多信息,请访问项目文档或其网站。感谢您跟随我们的导游!如果你有任何问题,请在下面的评论部分告诉我。
在首次引入 Windows 大约 41 年后,记事本终于更新了自动更正和拼写检查功能。这家科技巨头于今年 3 月推出了拼...
大鱼 2024 年 7 月 9 日
在Ubuntu及其他基于Debian的Linux发行版中,软件包管理是系统维护的一个重要方面。apt和apt-get是两...
大鱼 2024 年 6 月 26 日
远程桌面是一种允许您远程接管和使用另一台计算机的服务。在Ubuntu中,可以在图形客户端机器上启用它来控制主机。此功能对...
大鱼 2024 年 5 月 7 日
利用当天的视频 苹果2024年5月的“放开”活动标志着iPad系列的一个重要里程碑,该公司推出了自成立以来最重大的升级。...
大鱼 2024 年 5 月 19 日
已升级到新iPhone,是否要从旧设备中移动所有照片?或者你只是想从别人的iPhone上转移照片?以下是在两部iPhon...
大鱼 2024 年 5 月 19 日