Includes a snippet or file, replacing this directive with the contents of the snippet or file.

This directive is a special case: it is evaluated before the structure is parsed, and it can appear anywhere in the Caddyfile.


import <pattern> [<args...>]
  • <pattern> is the filename, glob pattern, or name of snippet to include. Its contents will replace this line as if that file's contents appeared here to begin with. It is an error if a specific file cannot be found, but an empty glob pattern is not an error.
  • <args...> is an optional list of arguments to pass to the imported tokens. They can be used with a placeholder of the form {args.N} where N is the 0-based positional index of the parameter. This placeholder is a special case and is evaluated at parse-time, not run-time.


Import all files in an adjacent sites-enabled folder:

import sites-enabled/*

Import a snippet that sets CORS headers using an import argument:

(cors) {
	@origin header Origin {args.0}
	header @origin Access-Control-Allow-Origin "{args.0}"
	header @origin Access-Control-Request-Method GET
} {
	import cors