结构

块:

所有的指令必须在 { } 块中,如果只有一个站点,则块标记可以省略。

全局的配置块可以放在最上方,其次是站点的配置块。

指令:

指令是服务于站点配置的关键词。

关键词和引号:

空格在 Caddyfile 指令中很重要,如果希望带空格的字符为一个值,需要给它们加上引号。

directive abc def
directive "abc def"
directive "\"abc def\""
directive `"foo bar"`

地址

地址位于块的最上方。

有效的地址如下,

  • localhost
  • example.com
  • :443
  • http://example.com
  • localhost:8080
  • 127.0.0.1
  • [::1]:2015
  • example.com/foo/*
  • *.example.com
  • http://

如果您的站点地址包含主机名或IP地址,则启用自动HTTPS。

但是,此行为是纯隐式的,因此它永远不会覆盖任何显式配置。

例如,如果站点的地址为http://example.com,则不会激活自动HTTPS。

通过把地址写在一起可以匹配多个站点,地址必须是唯一的。

localhost:8080, example.com, www.example.com {
}

或者
localhost:8080,
example.com,
www.example.com

匹配器

请求匹配器用于对请求进行分类。

root *           /var/www  # matcher token: *
root /index.html /var/www # matcher token: /index.html
root @post /var/www # matcher token: @post

更多关于 Matcher

占位符

左边的简记符等价于右边的。

{dir} {http.request.uri.path.dir}
{file} {http.request.uri.path.file}
{header.*} {http.request.header.*}
{host} {http.request.host}
{labels.*} {http.request.host.labels.*}
{hostport} {http.request.hostport}
{port} {http.request.port}
{method} {http.request.method}
{path} {http.request.uri.path}
{path.*} {http.request.uri.path.*}
{query} {http.request.uri.query}
{query.*} {http.request.uri.query.*}
{re.*.*} {http.regexp.*.*}
{remote} {http.request.remote}
{remote_host} {http.request.remote.host}
{remote_port} {http.request.remote.port}
{scheme} {http.request.scheme}
{uri} {http.request.uri}
{tls_cipher} {http.request.tls.cipher_suite}
{tls_version} {http.request.tls.version}
{tls_client_fingerprint} {http.request.tls.client.fingerprint}
{tls_client_issuer} {http.request.tls.client.issuer}
{tls_client_serial} {http.request.tls.client.serial}
{tls_client_subject} {http.request.tls.client.subject}

代码片段

代码片段是特殊的块,命名用扩展包起来。

(redirect) {
@http {
scheme http
}
redir @http https://{host}{uri}
}

然后,可以在其它地方引入使用。

import redirect

注释

注释使用 # 号,必须在行首或者行尾。

环境变量

如果配置依赖于环境变量,可以使用如下方式

{$SITE_ADDRESS}

在运行前会被解析为正确的值。

如果希望在运行时解析,你可以使用标准的 {env.*} 占位符。

全局选项

全局选项是没有 key 的块。

{
...
}

如果全局选项存在,它必须是配置中的第一个块。

它用于设置全局应用的选项,或不适用于特定的任何站点。在内部,只能设置全局选项。您不能在其中使用常规站点指令。

更多

[Caddy] The Caddy Web Server 常见 Caddyfile 模式

Ref:https://caddyserver.com/docs/caddyfile/concepts

Link:https://www.cnblogs.com/farwish/p/13100103.html

[Caddy2] Caddyfile 概念预览的更多相关文章

  1. WPF的路由事件、冒泡事件、隧道事件(预览事件)

    本文摘要: 1:什么是路由事件: 2:中断事件路由: 3:自定义路由事件: 4:为什么需要自定义路由事件: 5:什么是冒泡事件和预览事件(隧道事件): 1:什么是路由事件 WPF中的事件为路由事件,所 ...

  2. BookBlock - 效果非常真实的书本翻页预览

    这个名为 BookBlock 的图片预览效果是一个书展示或网上书店的概念,已全屏打开3D页面导航网格的形式显示图书的详细信息.我们可以打开书预览的摘录,其中有一些细节的网格.对于图书预览,我们在使用 ...

  3. 【译】Visual Studio 15 预览版更新说明

    序:恰逢Build2016大会召开,微软发布了VS2015的update2更新包和VS2016预览版.本人正在提升英文水平中,于是在这里对VS2016预览版的官方文档进行了部分翻译.因为VS有些功能使 ...

  4. 深入浅出Docker(一):Docker核心技术预览

    Docker是PaaS供应商dotCloud开源的一个基于LXC 的高级容器引擎,源代码托管在 GitHub 上, 基于Go语言开发并遵从Apache 2.0协议开源.Docker提供了一种在安全.可 ...

  5. Windows 10简体中文最新预览版Build 9926

    Windows 10 消费者预览版全新特性: • 全新的开始菜单Win 10的开始菜单产生了较大改变,磁贴界面在原有磁贴概念的基础上进行了大幅度的调整,新的磁贴界面开始支持纵向滚动,并可以利用开始按钮 ...

  6. javascript实现 京东淘宝等商城的商品图片大图预览功能

    在京东和淘宝等购买东西的时候,我们会经常预览左侧商品展示图片,把鼠标放到原图,右侧就会有个大图显示出细节.本文将带领大家写一个这样简单的功能! 一.实现原理 当鼠标移入某一图片内部时,图片上部会出现一 ...

  7. (转)JDK 1.8 预览版Lambda语法分析

    一.lambda含义     lambda表示数学符号“λ”,计算机领域中λ代表“λ演算”,表达了计算机中最基本的概念:“调用”和“置换”.在很多动态语言和C#中都有相应的lambda语法,这类语法都 ...

  8. JavaScript实现图片裁剪预览效果~(第一个小玩具)

    感觉开始学习的前一个月真的太不珍惜慕课网的资源了  上面蛮多小玩意真的蛮适合我这样刚入门JavaScript的同学加深使用理解 大概收藏了百来门或大或小的课程  有一个感觉就是学这个真的比光是看书看概 ...

  9. 玩转Android Camera开发(四):预览界面四周暗中间亮,仅仅拍摄矩形区域图片(附完整源代码)

    杂家前文曾写过一篇关于仅仅拍摄特定区域图片的demo.仅仅是比較简陋.在坐标的换算上不是非常严谨,并且没有完毕预览界面四周暗中间亮的效果,深以为憾.今天把这个补齐了. 在上代码之前首先交代下,这里面存 ...

  10. avalon1.3的新特性预览

    avalon1.2的性能优化风暴很快就告一段落,入职也快一个月了,许多乱七八糟的事也少了下来,估计未来一个月会有许多好东呈现给大家. 首先是一个性能检测工具.由于MVVM是将原本由人脑干的事,转到各种 ...

随机推荐

  1. window10-yarn-使用vite创建vue3项目失败-文件夹或目录不正确

    前置条件 window10 本地已经安装nodejs yarn已经通过npm全局安装(npm install -g yarn) 问题 yarn脚手架方式搭建vue3项目失败(command faile ...

  2. 你是怎么处理vue项目中的错误的?

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.错误类型 任何一个框架,对于错误的处理都是一种必备的能力 在Vue 中,则是定义了一套对应的错误处理规则给到使用者,且在源代码级别,对 ...

  3. 记录--纯CSS实现骚气红丝带

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 在本文中,我们将探讨如何使用 CSS 以最少的代码创造出精美的 CSS 丝带形状,并最终实现下面这个效果: 下面我们使用html和css来 ...

  4. C# OpenCv 证件照换底色

    using OpenCvSharp; using System; using System.Collections.Generic; using System.Linq; using System.T ...

  5. ET介绍——单线程异步

    单线程异步 前面几个例子都是多线程实现的异步,但是异步显然不仅仅是多线程的.我们在之前的例子中使用了Sleep来实现时间的等待,每一个计时器都需要使用一个线程,会导致线程切换频繁,这个实现效率很低,平 ...

  6. #树状数组#洛谷 3531 [POI2012] LIT-Letters

    题目 给出两个长度相同且由大写英文字母组成的字符串\(A\).\(B\),保证\(A\)和\(B\)中每种字母出现的次数相同. 现在每次可以交换\(A\)中相邻两个字符,求最少需要交换多少次可以使得\ ...

  7. #KD-Tree#洛谷 4849 寻找宝藏

    题目传送门 题目大意 在一个四维坐标系中,给定 \(n\) 个点,问有多少种选择点的方案, 使得这些点排序后任意坐标单调不降,并且选择的点权和最大,同时输出最大值 分析 设 \(f[i]\) 表示最后 ...

  8. Jetty的http2模块

    启用http2模块,执行如下命令: java -jar $JETTY_HOME/start.jar --add-modules=http2 命令的输出,如下: INFO : http2 initial ...

  9. 父组件明明使用了v-model,子组件竟然可以不用定义props和emit抛出事件,快来看看吧

    前言 vue3.4增加了defineModel宏函数,在子组件内修改了defineModel的返回值,父组件上v-model绑定的变量就会被更新.大家都知道v-model是:modelValue和@u ...

  10. HDD成都站·暨HMS Core 6.0产品交流会报名开启

    HUAWEI Developer Day(以下简称HDD)如期而至,将在9月10日和盟友们相聚成都,开启一场属于开发者的交流盛会.本次沙龙活动由上.下半场组成,诚挚地邀请各位开发者参加. 精彩预告 0 ...