respond
向客户端写入硬编码/静态响应。
如果 body 非空,则此指令会设置 Content-Type
标头(如果尚未设置)。默认值为 text/plain; utf-8
,除非 body 是有效的 JSON 对象或数组,在这种情况下,它将被设置为 application/json
。 对于所有其他类型的内容,请使用 header
指令 显式设置正确的 Content-Type。
语法
respond [<matcher>] <status>|<body> [<status>] {
body <text>
close
}
-
<status> 是要写入的 HTTP 状态代码。
如果为
103
(Early Hints),则将在不写入 body 的情况下写入响应,并且处理程序链将继续。(HTTP1xx
响应是信息性的,而不是最终响应。)默认值:
200
-
<body> 是要写入的响应 body。
-
body 是提供 body 的另一种方式;如果有多行,则很方便。
-
close 将在写入响应后关闭客户端与服务器的连接。
为了澄清,第一个非匹配器参数可以是 3 位状态代码或响应 body 字符串。如果它是 body,则下一个参数可以是状态代码。
示例
向所有健康检查写入空的 200 状态和空的 body,并向所有其他请求写入简单的响应 body
example.com {
respond /health-check 200
respond "Hello, world!"
}
写入错误响应并关闭连接
example.com {
respond /secret/* "Access denied" 403 {
close
}
}
写入 HTML 响应,使用 heredoc 语法 来控制空格,并同时设置 Content-Type
标头以匹配响应 body
example.com {
header Content-Type text/html
respond <<HTML
<html>
<head><title>Foo</title></head>
<body>Foo</body>
</html>
HTML 200
}