This page describes how to configure Caddy using the Caddyfile.

Introduction

The term "Caddyfile" describes a text file that changes how Caddy works. It's similar in purpose to httpd.conf or nginx.conf. The Caddyfile file can be named anything, but by default, Caddy will look for a file called Caddyfile in the current directory. You can specify another location for the Caddyfile using the -conf flag:

$ caddy -conf="/path/to/Caddyfile"

If your Caddyfile is within the root of your site, don't worry. Caddy will respond with "404 Not Found" to keep it hidden for you.

Syntax

The Caddyfile always starts with the address of the site to serve:

localhost:2020

After that, each line is expected to start with a valid directive. Directives are keywords that are recognized by Caddy, like gzip:

localhost:2020gzip

Directives usually have one or more arguments after them:

localhost:2020gziplog ../access.log

Some directives may need more configuration than can fit easily on one line. As such, the syntax of a directive may permit you to open a block and set more parameters. The open curly brace must be at the end of a line:

localhost:2020gziplog ../access.logmarkdown /blog { css /blog.css js /scripts.js }

If the directive block is left empty, you should omit the curly braces entirely.

Arguments that contain whitespace must be enclosed in quotes ".

The Caddyfile can also have comments starting with the # character:

# Comments can start a linefoobar # or go at the end

To configure multiple servers (virtual hosts) with a single Caddyfile, you must use curly braces around each site block:

mysite.com { root /www/mysite.com }
sub.mysite.com {
root /www/sub.mysite.comgziplog ../access.log
}

As with directives, the open curly brace must be at the end of the same line. The closing curly brace must be on its own line.

For sites which share the same configuration, specify multiple addresses:

localhost:2020, https://site.com, http://mysite.com {
...
}

Site addresses can also be defined under a specific path, or have wildcards in place of domain labels from the left side:

example.com/static*.example.com

Note that using a path in your site address routes requests by longest matching prefix. If your base path is a directory, you may wish to suffix the path with a forward slash /.

Use of environment variables is allowed in addresses and arguments. They must be enclosed in curly braces, and you can use either Unix or Windows variable formats:

localhost:{$PORT}root {%SITE_ROOT%}

Either syntax works on any platform. A single environment variable does not expand out into multiple arguments/values.

Addresses

Addresses are specified in the form scheme://host:port/path, where all but one are optional. The host portion is usually localhost or the domain name. The default port is 2015 (unless the site qualifies for automatic HTTPS, in which case it's 443). The scheme portion is another way to specify a port. Valid schemes are "http" or "https" which represent, respectively, ports 80 and 443. If both a scheme and port are specified, the port will override the scheme. For example:

:2015 # Host: (any), Port: 2015localhost # Host: localhost, Port: 2015localhost:8080 # Host: localhost, Port: 8080example.com # Host: example.com, Port: 443http://example.com # Host: example.com, Port: 80https://example.com # Host: example.com, Port: 443http://example.com:1234 # Host: example.com, Port: 1234https://example.com:80 # Error! HTTPS on port 80*.example.com # Hosts: *.example.com, Port: 443example.com/foo/ # Host: example.com, Port: 443, Path: /foo//foo/ # Host: (any), Port: 2015, Path: /foo/

Directives

Each line in a server block must start with a valid directive. The order they appear in does not matter. A directive is the first word of a line, and it may be followed by arguments, which are extra values used to configure the directive. A directive may also open a block to specify more parameters.

Most directives invoke a layer of middleware. Middleware is a small layer in the application that handles HTTP requests and does one thing really well. Middleware are chained together (pre-compiled, if you will) at startup. Only middleware handlers which are invoked from the Caddyfile will be chained in, so small Caddyfiles are very fast and efficient.

The syntax of arguments varies from directive to directive. Some have required arguments, others don't. Consult the documentation of each directive for their signatures.

Path Matching

Some directives accept an argument that specifies a base path to match. A base path is a prefix, so if the URL starts with the base path, it will be a match. For example, a base path of /foo will match requests to /foo/foo.html/foobar, and /foo/bar.html. If you want to limit a base path to match a specific directory only, then suffix it with a forward slash like /foo/, which will not match /foobar.

 

caddy server && caddyfile的更多相关文章

  1. caddy server 默认https && http2的验证

    1. 下载     https://caddyserver.com/   注意选择应该包含的模块,此次包含了git 插件   2. 配置    使用 Caddyfile    内容如下:     ro ...

  2. caddy server 了解

    Caddy 是一个Go写的服务器软件,官方的宣传语“The HTTP/2 web server with automatic HTTPS”以及“Serve The Web Like It's 2016 ...

  3. caddy server 几个常用插件

    1.log日志   log /var/www/log/example.log 2.目录访问   browse 3.gzip压缩   gzip 4.自主ssl证书   tls /path/ssl/exa ...

  4. Caddy – 方便够用的 HTTPS server 新手教程

    最近发现了一个 golang 开发的 HTTP server,叫做 Caddy,它配置起来十分简便,甚至可以 28 秒配置好一个支持 http2 的 server ,而且对各种 http 新特性都支持 ...

  5. Caddy源码阅读(二)启动流程与 Event 事件通知

    Caddy源码阅读(二)启动流程与 Event 事件通知 Preface Caddy 是 Go 语言构建的轻量配置化服务器.https://github.com/caddyserver/caddy C ...

  6. caddy配置php-fpm

    特码的,谷歌又用不了了. 吐槽完毕,正文如下: caddy是一个用go语言开发的服务器,可用作web端. caddy本身支持 -conf caddyfile的配置 在命令行中的体现: caddy -c ...

  7. 让子弹飞,零成本让你的网站更快一点,boxopened http/3 (QUIC) 协议实战

    最近HTTP-over-QUIC 协议被正式命名为 HTTP/3,协议带来的最大改变是协议底层将采用UDP协议,而不再是TCP协议,这样的好处吗,就是更低时延,更好的拥塞控制,更精确的RTT时间,更高 ...

  8. Docker 使用 Dockerfile 构建自己的镜像

    可以使用Dockerfile的配置文件方式进行构建自己的镜像 下面利用docker构建一个Caddy web服务器 构建脚本 Dockerfile有自己的命令,下面使用了一些比较常用的命令,更多的Do ...

  9. 解决了好几个软件的构建问题,在解决部署问题,bluemix部署

    https://www.puteulanus.com/archives/838#comment-961新版 Bluemix 一键搭建 SS 脚本 https://blog.feixueacg.com/ ...

随机推荐

  1. CSS布局框架 960GS

    1.960GS 特点 小巧简单,功能单一(仅仅做排版的工作,其他东西靠自己.)(三个文件:reset.css,960.css,font.css) 界面宽960px,适合目前主流1/2以上显示器都满屏宽 ...

  2. Angular----安置物流项目前端框架经验总结

    一.架构方面 (一) Angular框架有service .controller层: 在Angular里面,services作为单例对象在需要到的时候被创建,只有在应用生命周期结束的时候(关闭浏览器) ...

  3. 1004: [HNOI2008]Cards burnside定理

    https://www.lydsy.com/JudgeOnline/problem.php?id=1004 输入数据保证任意多次洗牌都可用这 m种洗牌法中的一种代替,且对每种洗牌法,都存在一种洗牌法使 ...

  4. 虚拟机VMware搭建代码环境

    安装git yum install git -y 安装nvm curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.29.0/ins ...

  5. DXVA2解码数据用texture纹理渲染

    FFmpeg DXVA2解码得到的数据使用surface来承载的,surface限制很多,如果能用纹理来渲染的话,那我们就可以充分开发D3D,比如可以用坐标变换来实现电子放大的功能,还可以用坐标变换来 ...

  6. 【Python】装饰器理解

    以下文章转载自:点这里 关于装饰器相关的帖子记录在这里: 廖雪峰, thy专栏, stackflow Python的函数是对象 简单的例子: def shout(word="yes" ...

  7. laravel5.5种的Eloquent ORM的使用:

    控制器方法: //Eloquent ORM的使用: public function orm1() { //all() /*$students=Student::all(); dd($students) ...

  8. 初次学习AngularJS

    一.指令1.AngularJS 指令是扩展的 HTML 属性,带有前缀 ng-. ng-app 指令初始化一个 AngularJS 应用程序. ng-app 指令定义了 AngularJS 应用程序的 ...

  9. idea git tag 管理

    项目release 之后一般都会打一个tag 做记录.本人使用idea管理tag的时候,遇到的问题做一些记录. 1:idea 创建tag idea 创建tag ,我们可以右键项目,然后按照下图操作创建 ...

  10. 团队项目:"Jarvis For Chat"

    "Jarvis For Chat"项目简介 项目详情信息已经在上一篇博客中详细给出,详请查看博客 团队成员 姓名 学号 张扬(队长) 031602345 苏韫月 031602631 ...