Spec-Zone.ru › Caddy

Перехват

Обобщенная абстракция функции перехвата ответов из директивы перехвата ответов от reverse_proxy директивы. Это можно использовать с любым обработчиком, который генерирует ответы, включая те, что получены от плагинов, таких как FrankenPHP's php_server.

Эта директива позволяет вам сопоставлять ответы, и будет вызван первый соответствующий handle_response маршрут или replace_status. При вызове исходное тело ответа сохраняется, что даёт возможность этому маршруту написать другое тело ответа, с новым кодом состояния или с необходимыми изменениями заголовков ответа. Если маршрут не напишет новое тело ответа, то вместо него будет записано исходное тело ответа.

Синтаксис

intercept [<matcher>] {
	@name {
		status <code...>
		header <field> [<value>]
	}
	replace_status [<matcher>] <code>
	handle_response [<matcher>] {
		<directives...>
	}
}
  • @name — имя сопоставителя ответов. Пока каждый сопоставитель ответов имеет уникальное имя, можно определить несколько сопоставителей. Ответ можно сопоставить по коду состояния и наличию или значению заголовка ответа.

  • replace_status просто изменяет код состояния ответа при совпадении с заданным сопоставителем.

  • handle_response определяет маршрут для выполнения при совпадении с заданным сопоставителем (или, если сопоставитель опущен, для всех ответов). Будет применена первая соответствующая секция. Внутри блока handle_response можно использовать любые другие директивы.

Внутри handle_response маршрутах доступны следующие плейсхолдеры для извлечения информации из исходного ответа:

  • {resp.status_code} Код состояния исходного ответа.

  • {resp.header.*} Заголовки из исходного ответа.

Примеры

При использовании FrankenPHP's php_server, вы можете использовать intercept для реализации поддержки X-Accel-Redirect, предоставляя статические файлы по запросу PHP-приложения:

localhost {
	root * /srv
	intercept {
		@accel header X-Accel-Redirect *
		handle_response @accel {
			root * /path/to/private/files
			rewrite {resp.header.X-Accel-Redirect}
			method GET
			file_server
		}
	}
	php_server
}

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

Spec-Zone.ru

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