文档
一个 项目

respond

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

如果主体非空,则此指令会设置 Content-Type 标头(如果尚未设置)。默认值为 text/plain; utf-8,除非主体是有效的 JSON 对象或数组,在这种情况下,它将设置为 application/json。对于所有其他类型的內容,请使用 header 指令 显式设置正确的 Content-Type。

语法

respond [<matcher>] <status>|<body> [<status>] {
	body <text>
	close
}
  • <status> 是要写入的 HTTP 状态代码。

    如果为 103(早期提示),则将在没有主体的情况下写入响应,并且处理程序链将继续。(HTTP 1xx 响应是信息性的,而不是最终的。)

    默认值:200

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

  • 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
}