云计算百科
云计算领域专业知识百科平台

caddy的用法 小型静态服务器

caddy的用法 小型静态服务器

  • 欢迎使用Caddy
    • 安装Caddy的各种方法
    • 快速入门
      • 使用API
      • 使用Caddyfile
      • 静态文件
        • 命令行🔗
      • Caddyfile🔗
      • 反向代理
        • 命令行🔗
        • Caddyfile🔗
      • HTTPS
        • Caddyfile🔗
        • file-server命令🔗
        • reverse-proxy命令🔗
        • JSON配置🔗
    • Windows服务🔗

欢迎使用Caddy

Caddy是一款基于Go语言编写的强大且可扩展的平台,可以给你的站点、服务和应用程序提供服务。如果你是Caddy的新手,那么你提供Web服务的方式即将改变。

安装Caddy的各种方法

官方的:

静态二进制文件 Debian、Ubuntu、Raspbian Fedora、Redhat、CentOS 使用官方下载页面 官方软件包仅附带标准模块。如果你需要第三方插件,请使用xcaddy从源代码构建,或者使用官方的下载页面。

快速入门

使用API

先决条件:

基本的终端/命令行技能 PATH环境变量支持caddy和curl 首先启动Caddy:

caddy start

Caddy现在处于空闲状态(配置为空白)。通过curl可以给它加上一个简单的配置:

curl localhost:2019/load \\
-X POST \\
-H "Content-Type: application/json" \\
-d @- << EOF
{
"apps": {
"http": {
"servers": {
"hello": {
"listen": [":2015"],
"routes": [
{
"handle": [{
"handler": "static_response",
"body": "Hello, world!"
}]
}
]
}
}
}
}
}
EOF

使用Heredoc提供POST包体可能很乏味,如果你更喜欢使用文件,请将JSON保存成caddy.json的文件,然后改用以下命令:

curl localhost:2019/load \\
-X POST \\
-H "Content-Type: application/json" \\
-d @caddy.json

现在在浏览器中访问localhost:2015,或者通过curl调用:

curl localhost:2015
Hello, world!

我们还可以使用这个JSON在不同的端口上定义多个站点:

{
"apps": {
"http": {
"servers": {
"hello": {
"listen": [":2015"],
"routes": [
{
"handle": [{
"handler": "static_response",
"body": "Hello, world!"
}]
}
]
},
"bye": {
"listen": [":2016"],
"routes": [
{
"handle": [{
"handler": "static_response",
"body": "Goodbye, world!"
}]
}
]
}
}
}
}
}

更新你的 JSON,然后再次执行 API 请求。

在浏览器中尝试新的“bye”端点,或使用curl以确保它有效:

curl localhost:2016
Goodbye, world!

当你使用完Caddy后,请务必停止它:

caddy stop

使用API还可以做更多事情,包括导出配置和对配置进行细粒度地更改(而不是更新整个内容)。请务必阅读完整的 API教程,了解如何进行具体的操作!

使用Caddyfile

创建一个名为Caddyfile(无扩展名)的新文本文件。

最先在Caddyfile输入的内容是你的站点访问地址:

localhost 如果 HTTP 和 HTTPS 端口(分别为 80 和 443)是你操作系统上的特权端口,你将需要以提升的特权运行或使用更高的端口。要使用更高的端口,可以将其修改成类似localhost:2015的地址,或者通过Caddyfile的http_port选项修改HTTP端口。 然后按回车键并输入你想要它做的事情,所以它看起来像这样:

localhost

respond “Hello, world!” 保存并从Caddyfile所在的同一文件夹中运行Caddy:

caddy start

你可能会被要求输入密码,因为默认情况下,Caddy 通过 HTTPS 为所有站点(甚至本地站点)提供服务。(密码提示应该只在第一次出现!)

对于本地 HTTPS,Caddy 会自动为你生成证书和唯一的私钥。根证书被添加到系统的信任库中,这就是密码提示的必要性。它允许你通过 HTTPS 在本地进行开发而不会出现证书错误。 如果你收到权限错误,可能需要提升权限再次运行。

打开浏览器访问localhost或者使用curl运行:

curl https://localhost
Hello, world!

你可以通过将它们包裹在花括号{ }中来在Caddyfile中定义多个站点。将Caddyfile 更改为:

localhost {
respond "Hello, world!"
}

localhost:2016 {
respond "Goodbye, world!"
}

你可以通过两种方式为Caddy提供更新的配置:直接使用API:

curl localhost:2019/load \\
-X POST \\
-H "Content-Type: text/caddyfile" \\
–data-binary @Caddyfile

或使用reload命令,它会为你执行相同的API请求:

caddy reload

在浏览器尝试访问新的"goodbye"端点[in your browser],或者使用curl以确保它正常工作:

curl https://localhost:2016
Goodbye, world!

完成 Caddy 后,请务必停止它:

caddy stop

静态文件

命令行🔗

在你的终端中,切换到站点的根目录并运行:

caddy file-server

如果你收到权限错误,这可能意味着你的操作系统不允许你绑定到低端口——因此请改用高端口:

caddy file-server –listen :2015

然后在浏览器中打开localhost(或localhost:2015)访问你的站点!

如果你没有索引文件但想要显示文件列表,请使用以下–browse选项:

caddy file-server –browse

你可以使用另一个文件夹作为站点根目录:

caddy file-server –root ~/mysite

Caddyfile🔗

在你站点的根目录中,创建一个名为Caddyfile的文件,内容如下:

localhost

file_server

如果你无权绑定到低端口,请替换localhost为localhost:2015(或其他一些高端口)。

然后,从同一目录运行:

caddy run

然后,你可以访问localhost(或配置中的任何地址)来查看你的站点!

该 file_server指令有更多选项供你自定义站点。更改Caddyfile后,请确保重新加载Caddy(或停止并重新启动)!

如果你没有索引文件但想要显示文件列表,请使用以下browse参数:

localhost

file_server browse

你还可以使用另一个文件夹作为站点根目录:

localhost

root * /home/me/mysite
file_server

反向代理

命令行🔗

在你的终端中,运行以下命令:

caddy reverse-proxy –to 127.0.0.1:9000

如果你没有绑定到低端口的权限,则可以从较高的端口进行代理:

caddy reverse-proxy –from :2016 –to 127.0.0.1:9000

然后访问localhost (或者你通过–from指定的任意地址)发出请求,检查它是否能正常工作!

Caddyfile🔗

在当前工作目录中,创建一个名为Caddyfile的文件,内容如下:

localhost

reverse_proxy 127.0.0.1:9000

然后,从同一目录执行如下命令:

caddy run

然后,你可以访问https://localhost,检查它是否能正常工作!

要更改代理地址也很简单:

:2016

reverse_proxy 127.0.0.1:9000

更改Caddyfile后,请确保重新重载Caddy(或停止并重新启动它)。

现在你可以通过 localhost:2016访问代理了。

你可以使用reverse_proxy指令完成更多的操作。

HTTPS

Caddyfile🔗

这是获取HTTPS最常用的方法。

创建一个名为Caddyfile(无扩展名)的文件,其中第一行是你的域名,例如:

example.com

respond "Hello, privacy!"
然后从同一目录运行:

caddy run

你将看到Caddy提供TLS证书并通过HTTPS为你的站点提供服务。这是可能的,因为你的站点在Caddyfile中的地址包含一个域名。

file-server命令🔗

如果你只需要通过 HTTPS 提供静态文件,请运行以下命令(替换你的域名):

caddy file-server –domain example.com

你将看到Caddy提供TLS证书并通过HTTPS为你的站点提供服务。

reverse-proxy命令🔗

如果你只需要一个基于HTTPS的简单反向代理(作为TLS终结器),请运行以下命令(替换你的域名和实际后端地址):

caddy reverse-proxy –from example.com –to localhost:9000

你将看到Caddy提供TLS证书并通过HTTPS为你的站点提供服务。

JSON配置🔗

一般的经验法则是任何主机匹配器都会触发自动HTTPS。

因此,如下所示的JSON配置将启用生产就绪的自动HTTPS:

{
"apps": {
"http": {
"servers": {
"hello": {
"listen": [":443"],
"routes": [
{
"match": [{
"host": ["example.com"]
}],
"handle": [{
"handler": "static_response",
"body": "Hello, privacy!"
}]
}
]
}
}
}
}
}

Windows服务🔗

用这些说明在Windows上把Caddy安装成一个服务。

要求:

下载或从源代码构建的caddy.exe二进制文件。 任何来自WinSW服务封装器(以下服务配置是为v2.x版本编写的)最新版本的.exe。 将所有文件放入一个服务目录。在下面的例子中,我们使用C:\\caddy。

将WinSW-x64.exe文件重命名为caddy-service.exe。

在同一目录下添加一个caddy-service.xml。

<service>
<id>caddy</id>
<!— 服务的显示名称 —>
<name>Caddy Web Server (powered by WinSW)</name>
<!— 服务描述 —>
<description>Caddy Web Server (https://caddyserver.com/)</description>
<executable>%BASE%\\caddy.exe</executable>
<arguments>run</arguments>
<log mode="roll-by-time">
<pattern>yyyy-MM-dd</pattern>
</log>
</service>

现在你可以用以下方式安装该服务:

caddy-service install

你可能想启动Windows服务控制台,看看该服务是否正确运行:

services.msc

请注意,Windows服务不能被重新加载,所以你必须直接告诉caddy进行重新加载:

caddy reload

重启可以通过正常的Windows服务命令进行,例如通过任务管理器的 "服务 "标签。

赞(0)
未经允许不得转载:网硕互联帮助中心 » caddy的用法 小型静态服务器
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!