Spec-Zone.ru › Caddy

импорт

Включает фрагмент фрагмента или файл, заменяя эту директиву содержимым фрагмента или файла.

Эта директива является особым случаем: она оценивается до разбора структуры, и она может появляться где угодно в файле Caddyfile.

Синтаксис

import <pattern> [<args...>] [{block}]
  • <шаблон> — это имя файла, шаблон подстановки или имя фрагмента для включения. Его содержимое заменит эту строку, как если бы содержимое этого файла было здесь изначально.

    Ошибка возникает, если определенный файл не найден, но пустой шаблон подстановки — это не ошибка.

    Если импортируется конкретный файл, будет выведено предупреждение, если файл пуст.

    Если шаблон — имя файла или шаблон подстановки, он всегда относительный к файлу, в котором import появляется.

    Если используется шаблон подстановки * в качестве конечного сегмента пути, скрытые файлы (т.е. файлы, начинающиеся со .) игнорируются. Чтобы импортировать скрытые файлы, используйте .* в качестве конечного сегмента.

  • <арг...> — это необязательный список аргументов, которые необходимо передать импортированным токенам. Этот заполнитель — особый случай, и он оценивается на этапе разбора Caddyfile, а не во время выполнения. Они могут использоваться в различных формах, аналогично синтаксису срезов Go: https://gobyexample.com/slices

    • {args[n]}, где n — это индекс параметра с нуля
    • {args[:]}, где все аргументы вставляются
    • {args[:m]}, где аргументы до m вставляются
    • {args[n:]}, где аргументы, начиная с n, вставляются
    • {args[n:m]}, где аргументы в диапазоне между n и m вставляются

    Для форм, которые вставляют множество токенов, заполнитель должен быть токеном самостоятельно, он не может быть частью другого токена. Другими словами, он должен иметь пробелы вокруг себя и не может находиться в кавычках.

    Обратите внимание, что до версии 2.7.0 синтаксис был {args.N}, но эта форма была устаревшей в пользу более гибкого синтаксиса выше.

⚠️ Экспериментальная версия | v2.9.x+

  • {блок} — это необязательный блок, который нужно передать импортированным токенам. Этот заполнитель — особый случай, и он оценивается рекурсивно на этапе разбора Caddyfile, а не во время выполнения. Они могут использоваться в двух формах:
    • {block}, где содержимое всего предоставленного блока будет заменено на заполнитель
    • {blocks.key}, где key — это первый токен параметра в предоставленном блоке

Примеры

Импортировать все файлы в соседней папке sites-enabled (кроме скрытых файлов):

import sites-enabled/*

Импортировать фрагмент, который устанавливает заголовки CORS, используя аргумент импорта:

(cors) {
	@origin header Origin {args[0]}
	header @origin Access-Control-Allow-Origin "{args[0]}"
	header @origin Access-Control-Allow-Methods "OPTIONS,HEAD,GET,POST,PUT,PATCH,DELETE"
}
example.com {
	import cors example.com
}

Импортировать фрагмент, который принимает список прокси-upstream в качестве аргументов:

(https-proxy) {
	reverse_proxy {args[:]} {
		transport http {
			tls
		}
	}
}
example.com {
	import https-proxy 10.0.0.1 10.0.0.2 10.0.0.3
}

Импортировать фрагмент, который создает прокси с правилом переписывания префикса в качестве первого аргумента:

(proxy-rewrite) {
	rewrite * {args[0]}{uri}
	reverse_proxy {args[1:]}
}
example.com {
	import proxy-rewrite /api 10.0.0.1 10.0.0.2 10.0.0.3
}

⚠️ Экспериментальная версия | v2.9.x+

Импортировать фрагмент, который отвечает с настраиваемым сообщением "hello world" и типом содержимого:

(hello-world) {
	header {
		Cache-Control max-age=3600
		X-Foo bar
		{blocks.content_type}
	}
	respond /hello-world 200 {
		{blocks.body}
	}
}
example.com {
	import hello-world {
		content_type {
			Content-Type text/html
		}
		body {
			body "<h1>hello world</h1>"
		}
	}
}

Импортировать фрагмент, который предоставляет расширяемые параметры для обратного прокси:

(extendable-proxy) {
	reverse_proxy {
		{blocks.proxy_target}
		{blocks.proxy_options}
	}
}
example.com {
	import extendable-proxy {
		proxy_target {
			to 10.0.0.1
		}
		proxy_options {
			transport http {
				tls
			}
		}
	}
}

Импортировать фрагмент, который обслуживает любой набор директив, но с предварительно загруженным средством:

(instrumented-route) {
	header {
		Alt-Svc `h3="0.0.0.0:443"; ma=2592000`
	}
	tracing {
		span args[0]
	}
	{block}
}
example.com {
	import instrumented-route example-com {
		respond "OK"
	}
}

© 2015-2025 Matthew Holt and The Caddy Authors
Licensed under the Apache License 2.0.
Caddy is a registered trademark of Stack Holdings GmbH.
https://caddyserver.com/docs/caddyfile/directives/import

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API