Spec-Zone.ru › Caddy

handle

Оценивает группу директив взаимно исключающих друг друга из других блоков handle на том же уровне вложенности.

Другими словами, когда несколько директив handle появляются последовательно, будет вычислен только первый соответствующий блок handle. Ручка без соответствия действует как обработчик по умолчанию маршрута.

Директивы handle сортируются в соответствии с алгоритмом сортировки директив по их соответствиям. Директива handle_path является особым случаем, который сортируется с тем же приоритетом, что и handle с соответствием по пути.

Блоки Handle могут быть вложены по необходимости. Внутри блоков Handle можно использовать только директивы обработчиков HTTP.

Синтаксис

handle [<matcher>] {
	<directives...>
}
  • <directives...> — список директив обработчиков HTTP или блоков директив, по одной на строке, так же, как используется вне блока handle.

Похожие директивы

Существуют другие директивы, которые могут обернуть директивы обработчиков HTTP, но каждая имеет свое назначение в зависимости от поведения, которое вы хотите передать:

  • handle_path делает то же, что и handle, но удаляет префикс из запроса перед запуском его обработчиков.

  • handle_errors похожа на handle, но вызывается только тогда, когда Caddy сталкивается с ошибкой во время обработки запроса.

  • route оборачивает другие директивы, как и handle, но с двумя отличиями:

    1. блоки route не взаимоисключающие друг для друга,
    2. директивы внутри route не переупорядочиваются, что даёт вам больший контроль, если это необходимо.

Примеры

Обрабатывайте запросы в /foo/ с помощью сервера статических файлов и другие запросы — с помощью обратного прокси:

example.com {
	handle /foo/* {
		file_server
	}
	handle {
		reverse_proxy 127.0.0.1:8080
	}
}

Вы можете смешивать handle и handle_path в одном сайте, и они все равно будут взаимоисключать друг друга:

example.com {
	handle_path /foo/* {		# The path has the "/foo" prefix stripped
	}
	handle /bar/* {		# The path still retains "/bar"
	}
}

Вы можете вкладывать блоки handle, чтобы создать более сложную логику маршрутизации:

example.com {
	handle /foo* {
		handle /foo/bar* {			# This block only matches paths under /foo/bar
		}
		handle {			# This block matches everything else under /foo/
		}
	}
	handle {		# This block matches everything else (acts as a fallback)
	}
}

© 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/handle

Spec-Zone.ru

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