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}”
一
代码语言:
猛击
(
猛击
)
查找正在运行的Docker容器的暴露端口。
现在让我们讨论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
代码语言:
猛击
(
猛击
)
检查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以有效地处理流量重定向。
最后,有关更多信息,请访问项目文档或其网站。感谢您跟随我们的导游!如果你有任何问题,请在下面的评论部分告诉我。
相关推荐
Linux并不是第一个想到游戏的操作系统。但是,尽管绝大多数PC游戏玩家使用Windows,但得益于SteamOS等平台,Linux是一个越来越多的替代品。 这里有五个Linux游戏发行版可供尝试。 2024年的Linux游戏 虽然“Linux桌面年”可能永远不会真正发生,但开源操作系统在游戏中越来越普遍。最突出的是SteamOS 3.0,这是一个基于Arch Linux的操作系统,运行在Stea
无论你是建造了一台新电脑还是使用旧硬件,找到和安装所有必要的驱动程序都可能很棘手。驱动程序更新软件可以减轻这个过程的痛苦。该程序不是搜索每个需要更新的驱动程序,而是为您搜索所有驱动程序。这里有最好的驱动程序更新软件,让生活更轻松。 1. 驾驶员简易 Driver Easy是一个帮助您查找、安装和管理驱动程序的程序。它有三个版本,尽管只有两个可能与您相关。 第一个是Lite版本,它是完全免费的。此版
在Linux中,从输入文件中获取一部分文本是很常见的。然而,有时,我们只对查看文件的几行内容感兴趣。Linux为我们提供了 头 和 尾 命令只打印我们感兴趣的行。 Linux 头 和 尾 命令非常相似。默认情况下,它们安装在所有Linux发行版中。让我们首先了解它们是什么以及它们的用途。 简而言之,正如他们的名字所暗示的那样 头 命令从文件的开头打印行,并且 尾 命令从文件末尾打印行。最后,两个命
当天的视频 滚动以继续浏览内容 如果你正在市场上寻找一款新的健身追踪器,你可能会遇到在苹果手表和Fitbit之间选择的困境。在这里,我们将比较这两种选择,帮助你根据自己的需求和预算选择合适的可穿戴设备。 Fitbit vs. Apple Watch:基本款 地面图片/ 在上面 虽然Fitbit设备和Apple Watch都有出色的用户界面,都是有效的健身追踪器,但后者作为iPhone的理想伴侣,确
对于开源和自托管爱好者来说,Ente可能不是你以前听过的名字。这完全没关系,所以让我们花点时间介绍一下它是什么。 这是一款安全、基于云的加密照片应用程序,旨在保护您的照片和视频。Ente提供端到端加密、自动备份、协作相册、库同步、一键导入、锁定照片、私人共享等功能。 该应用程序旨在成为谷歌照片或iCloud照片等大型科技照片存储服务的隐私友好替代品,用于组织和备份您的记忆,确保它们以只有您才能查看
回到顶部