文档
一个 项目

respond

向客户端写入一个硬编码/静态响应。

如果响应主体非空,并且 Content-Type 头部尚未设置,此指令会设置该头部。除非响应主体是有效的 JSON 对象或数组(此时设置为 application/json),否则默认值为 text/plain; utf-8。对于所有其他类型的内容,请使用 header 指令 显式设置正确的 Content-Type。

语法

respond [<匹配器>] <状态码>|<响应主体> [<状态码>] {
	body <文本>
	close
}
  • <状态码> 是要写入的 HTTP 状态码。

    如果是 103(Early Hints),响应将在没有主体的情况下写入,并且处理器链将继续。(HTTP 1xx 响应是信息性的,不是最终的。)

    默认值:200

  • <响应主体> 是要写入的响应主体。

  • body 是提供响应主体的另一种方式;如果是多行文本则很方便。

  • close 将在写入响应后关闭客户端与服务器的连接。

需要说明的是,第一个非匹配器参数可以是3位状态码或响应主体字符串。如果是响应主体,那么下一个参数可以是状态码。

示例

对所有健康检查写入一个状态码为 200 且主体为空的响应,对所有其他请求写入一个简单的响应主体:

example.com {
	respond /health-check 200
	respond "Hello, world!"
}

写入错误响应并关闭连接:

example.com {
	respond /secret/* "Access denied" 403 {
		close
	}
}

写入 HTML 响应,使用 heredoc 语法 控制空白,并设置匹配响应主体的 Content-Type 头部:

example.com {
	header Content-Type text/html
	respond <<HTML
		<html>
			<head><title>Foo</title></head>
			<body>Foo</body>
		</html>
		HTML 200
}