结构

块:

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

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

指令:

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

关键词和引号:

空格在 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. 3DCAT 首届行业生态交流会 | 瑞云科技技术总监赵志杰:实时渲染助力元宇宙应用触手可及

    2021 年 12 月 17 日下午,由深圳市瑞云科技有限公司主办,深圳市虚拟现实产业联合会协办的云 XR 如何赋能元宇宙--3DCAT实时云渲染首届行业生态合作交流会圆满落幕.此次活动围绕 &quo ...

  2. 喜讯!瑞云科技被授予“海上扬帆”5G融合应用专委会成员单位

    2022年7月19日,5G应用"海上扬帆"行动计划云启航大会暨"海上扬帆"融合应用专委会成立大会在沪成功举办. 受上海信通院工创中心邀请和信任,深圳市瑞云科技有 ...

  3. 记录--面试官:“你知道什么情况下 HTTPS 不安全么”

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 面试官:"HTTPS的加密过程你知道么?" 我:"那肯定知道啊." 面试官:"那你知道什 ...

  4. Spring Boot框架中使用Jackson的处理总结

    1.前言 通常我们在使用Spring Boot框架时,如果没有特别指定接口的序列化类型,则会使用Spring Boot框架默认集成的Jackson框架进行处理,通过Jackson框架将服务端响应的数据 ...

  5. Swift self, Self, ==, === 傻傻分不清楚?

    本文首发于 Ficow Shen's Blog,原文地址: Swift self, Self, ==, === 傻傻分不清楚?. 内容概览 前言 self 和 Self == 和 === 总结 前言 ...

  6. table边框改为细线

    默认的TABLE边线设置即使是1px 是很粗的,会使用其他一些方法来制作出细线边框. 利用CSS来实现细线的方法,很有效,而且兼容所有浏览器. 细线表格如果单纯设置边框,很难保证浏览器兼容.常见的做法 ...

  7. KingbaseES Json 系列三:Json数据操作函数一

    KingbaseES Json 系列三--Json数据操作函数一(JSONB_EACH,JSONB_EACH_TEXT,JSONB_OBJECT_KEYS,JSONB_EXTRACT_PATH,JSO ...

  8. SAST-数据流分析方法-理论

    引言 众所周知,数据流分析是实现污点分析的一种常用技术 数据流分析分为过程内的数据流分析与过程间的数据流分析.前者是对一个方法体内的数据流分析,主要是基于CFG分析,不涉及方法调用:后者是基于不同方法 ...

  9. QImage:使用QImage构造函数加载图像和使用成员函数loadFromData加载图像的区别

    结论: QImage构造函数,既可以加载内存图像数据,也可以加载二进制文件数据 loadFromData成员函数,只能加载二进制文件数据 loadFromData Qt帮助文档说明 编写测试代码验证 ...

  10. JVM—垃圾收集器

    JVM-垃圾收集器 什么是垃圾 没有被引用的对象就是垃圾. 怎么找到垃圾 引用计数法 当对象引用消失,对象就称为垃圾. 对象消失一个引用,计数减去一,当引用都消失了,计数就会变为0.此时这个对象就会变 ...