文档
一个 项目

respond

向客户端返回一个硬编码/静态响应。

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

语法

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

    如果为 103(Early Hints),响应将不带主体写出且处理链将继续。(HTTP 1xx 响应是信息性的,而非最终响应。)

    默认:200

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

  • body 是提供响应体的另一种方式;当响应体为多行时很方便。

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

为澄清,首个非匹配器参数可以是三位数的状态码,也可以是响应体字符串。如果它是响应体,下一个参数可以是状态码。

示例

向所有健康检查写入一个空的 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
}