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服务命令进行,例如通过任务管理器的 "服务 "标签。
评论前必须登录!
注册